powershell: get-date.adddays неверно? - PullRequest
       7

powershell: get-date.adddays неверно?

1 голос
/ 31 января 2009

Я пытаюсь создать сценарий PowerShell, который получает список папок в каталоге, который фильтруется регулярным выражением, отсеивающим имена папок с помощью nnnnnnx31 или nnnnnnddd, где n = буквенные символы для первых 6 символов и последние 3 являются числами статической строки x31. Далее показывается, если файлы старше 90 дней, которые будут скопированы в другой каталог.

Когда я пытаюсь запустить:

get-childitem | where {$_.name -match "^\d{6}([a-zA-Z]{3}|x31)$"} | where {$_.lastwritetime -lt (get-date.adddays(-90)}

Я получаю ошибку:

You must provide a value expression on the right-hand side of the -lt operator
At line: 1 char: 96
+ get-childitem | where {$_.name -match "^\d{6}([a-zA-Z]{3}|x31)$"} | where {$_.lastwritetime -lt  <<<< get-date.adddays(-90)}

Я также попробовал следующее, и это не сработало:

get-childitem | where {$_.name -match "^\d{6}([a-zA-Z]{3}|x31)$"} | where {$_.lastwritetime -lt (get-date | foreach-object {$_.adddays(-90)}) }

Есть идеи?

Ответы [ 3 ]

8 голосов
/ 31 января 2009

нужно сделать (get-date).AddDays(-90)

1 голос
/ 31 января 2009

Вы можете использовать один объект where вместо двух:

get-childitem | where {$_.name -match "^\d{6}([a-zA-Z]{3}|x31)$" -AND $_.lastwritetime -lt (get-date).adddays(-90)}
1 голос
/ 31 января 2009

попробуйте это - get-childitem | where {$_.name -match "^\d{6}([a-zA-Z]{3}|x31)$"} | where {$_.lastwritetime -lt (get-date).adddays(-90)}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...