首页 > 解决方案 > Powershell .addDays()

问题描述

我正在编写一个脚本来检查文件是否超过一年。我收到一个错误 Not Icomparable。我不知道如何解决这个问题,我很困惑。$文件

$myDate = Get-Date
$path = $args[0]
$files = Get-ChildItem -Path $path -recurse
foreach($file in $files){
     if($file -gt $myDate.addDays(-365)){
          Write-Host "Found One"
     }
}```

标签: powershell

解决方案


您需要在循环之前获取文件。您还需要告诉 PowerShell 您要比较文件的日期,以及创建、修改等的日期。此时您说“如果此 FileInfo 对象小于该日期”,这就是您的原因重新收到该错误(根据 mklement0 的评论,FileInfo 未实现 IComparable)

$files = Get-ChildItem -Path $args[0]
foreach ($file in $files) {
     if( $file.LastWriteTime -lt $myDate.addDays(-365)) {
          Write-Host "Found One: $($file.Name)"
     }
}

使用args[0]是不好的做法。改用命名参数

Param (
    $Path
)
$myDate = Get-Date
$files = Get-ChildItem -Path $Path
...

文档。

Get-ChildItem - 如果您想包含子目录,请更改参数。

FileInfo - 这是您可以访问的内容$files


推荐阅读