Powershell - фильтр по дате и имени - PullRequest
0 голосов
/ 25 февраля 2020

В файле я хотел бы удалить файлы, содержащие только « Гарантия » И через 30 дней, файл должен быть удален .

В конце концов, потребуется последняя «Гарантия», срок действия которой менее 30 дней.

Вот скрипт, который не работает ... но принцип таков:

Get-ChildItem -Path "C:\Users\..\Trial" -Recurse | Where-Object {$_.CreationTime -lt (Get-Date).AddDays(-30) -and -filterscript $_.Name -match "Warranty"} | Remove-Item

Можете ли вы помочь мне, спасибо.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Я бы использовал параметр Filter и переключатель File, чтобы сначала получить файлы с именем "Warranty" в их названии.

Кроме того, как уже отмечалось ранее, вы, вероятно, ищете свойство LastWriteTime , а не CreationTime.

Попробуйте:

# midnight 30 days ago
$refDate = (Get-Date).AddDays(-30).Date

Get-ChildItem -Path "C:\Users\..\Trial" -Filter '*Warranty*' -File -Recurse | 
Where-Object {$_.LastWriteTime -lt $refDate} | 
Remove-Item
0 голосов
/ 25 февраля 2020

Проблема в том, что у вас не может быть параметра -filterscript после -and Следующий код работал для меня:)

Get-ChildItem -Path "C:\Users\..\Trial" -Recurse | Where-Object {$_.CreationTime -lt (Get- 
Date).AddDays(-30) -and $_.Name -match "Warranty"} | Remove-Item
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...