PowerShell удалить последнюю запись более 30 элементов / папок, исключая несколько подпапок - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть каталог, в котором мне нужно удалить все файлы и папки, срок действия которых истек в течение 30 дней, но сохранить что-либо в подпапках C:\TEST\A и C:\TEST\B

Вот структура папок:

|-C:\TEST
 \-C:\TEST\A
 \-C:\TEST\A\A1
  \-C:\TEST\A\A2.txt
   \-C:\TEST\B
 \-C:\TEST\B\B1
  \-C:\TEST\B\B2.txt
   \-C:\TEST\C
 \-C:\TEST\C\C1
  \-C:\TEST\C\C2.txt
     \-C:\TEST\D.doc
     \-C:\TEST\E.txt

Это то, что у меня есть сейчас, я пытаюсь "исключить" и "не нравится", но все не работает:

$before=(Get-Date).AddDays(-30)
$exfolder=('C:\TEST\A*' , 'C:\TEST\B*') 

Get-ChildItem -path 'C:\TEST' -Recurse |
    Where-Object {($_.LastWriteTime -lt $before ) -and ( $_.FullName -notlike $exfolder)} | 
    Remove-Item -force -Recurse

Get-ChildItem -path 'C:\TEST' -Recurse -Exclude $exfolder |
    Where-Object { $_.LastWriteTime -lt $before } |
    Remove-Item -force -Recurse

1 Ответ

0 голосов
/ 27 сентября 2018

Вы можете связать два вызова Get-ChildItem, первый для исключения папок и второй для рекурсивного получения файлов:

Get-ChildItem -Path C:\folder -Exclude A,B | Get-ChildItem -Recurse | Where-Object [...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...