Powershell .addDays () - PullRequest
       4

Powershell .addDays ()

1 голос
/ 29 марта 2020

Я пишу скрипт для проверки, если файлы старше года. Я получаю ошибку Не сравнимую. Я не уверен, как go исправить это, и я в тупике. $ file

$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"
     }
}```

Ответы [ 2 ]

2 голосов
/ 29 марта 2020

Вам нужно получить файлы, прежде чем их зацикливать. Вам также нужно сообщить PowerShell, что вы хотите сравнить дату файла и дату, когда она была создана, изменена и т. Д. c. В данный момент вы говорите «если этот объект 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

1 голос
/ 29 марта 2020

Одна строка, если вы хотите в скором времени получить файлы за прошедший текущий год:

gci 'd:\temp' | ? { $_.CreationTime -lt (Get-Date).addDays(-365) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...