PDA

Показать полную графическую версию : [решено] Get-Childitem. Исключить каталоги их содержимое при выполнении команды


epoddubniy
10-08-2022, 15:47
Здравствуйте!

На диске Е: много каталогов. Нужно получить результат команды таким образом, чтобы не вошли каталоги progs и ===KSC_BASE_BACKUP===. Затем результат отправить дальше по конвейеру: отобрать по дате и удалить


$Data=Get-Date -Format "dd.MM.yyyy"
function {Get-ChildItem "E:\" -Recurse -Exclude "progs","===KSC_BASE_BACKUP===" | where-object {$_.creationtime -lt (get-date).date.adddays(0) -and $_.creationtime -ge (get-date).date.adddays(-5)} | Remove-Item -Force}
function


Поправьте пожалуйста, чтобы получился желаемый результат! Спасибо!!!

Sham
10-08-2022, 20:40
в -Exclude паттерны же, наверное "*\progs\*","*\===KSC_BASE_BACKUP===\*"

epoddubniy
11-08-2022, 11:21
в -Exclude паттерны же, наверное "*\progs\*","*\===KSC_BASE_BACKUP===\*" »
пробовал так, все равно в результаты попадали файлы из этих каталогов(((

Get-ChildItem "E:\*" -Recurse -Exclude "*\===KSC_BASE_BACKUP===\*" | where-object {$_.creationtime -lt (get-date).date.adddays(1) -and $_.creationtime -ge (get-date).date.adddays(-5)}

Вот такой вывод:

...

Каталог: E:\===KSC_BASE_BACKUP===\klbackup2022-08-08#13-10-36\Packages\MDM4IOS\exec


Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 13.07.2022 14:45 708608 klcfginst.msi
-a--- 13.07.2022 14:45 4463 klever.json
-a--- 13.07.2022 14:45 22342 license.txt
-a--- 13.07.2022 14:45 3744 mdm4ios.kud
-a--- 13.07.2022 14:45 12746752 MDM4IOS.msi
-a--- 13.07.2022 14:45 4458008 setup.exe
-a--- 13.07.2022 14:45 654 ss_install.xml

...


Дальше по конвейеру на удаление не передавал, т.к. в отбор уже попали объекты, которые не нужно удалять

DJ Mogarych
11-08-2022, 11:46
-exclude "*progs*","*KSC_BASE_BACKUP*"

Sham
13-08-2022, 04:02
обходной путь - это добавить проверку в where-object -and $_.FullName -notmatch '\\(?:===KSC_BASE_BACKUP===|progs)\\' в -exclude наверное проверяются только дочерние элементы без папок.

epoddubniy
18-08-2022, 14:33
-exclude "*progs*","*KSC_BASE_BACKUP*" »
да, такой вариант тоже пробовал, тоже почему-то не помогает

Sham, большое Вам Спасибо! Ваш вариант отработал так, как нужно было
Get-ChildItem "E:\" -Recurse | where-object {$_.creationtime -lt (get-date).date.adddays(0) -and $_.creationtime -ge (get-date).date.adddays(-5) -and $_.FullName -notmatch '\\(?:===KSC_BASE_BACKUP===|progs)\\'}




© OSzone.net 2001-2012