Мне нужно удалить журналы с расширением *. log . *
выходит в подпапку с именем SessLogs
, WorkflowLogs
в корневом каталоге d: \ software \ Bil
Аналогично у меня есть папки SessLogs
, Журналы рабочего процесса
во многих подкаталогах с разными именами, например Bil
,как этого добиться У меня есть образец сценария, созданный, как показано ниже, но он нуждается в некотором обновлении.
Структура каталогов, например
Программное обеспечение -> Wel -> "" SessLogs "и" WorkflowLogs "
Программное обеспечение -> Gim -> "SessLogs" и "WorkflowLogs"
Программное обеспечение -> Ren -> "" SessLogs "и" WorkflowLogs "
$Path = "D:\software"
$Daysback = "-30"
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)
get-childitem "D:\software*" -include "*.*" -force -recurse |where-object { (-not $_.PSIsContainer) -and ($_.creationtime -lt $DatetoDelete) } |remove-item -whatif
Я не уверен, правильно ли я понимаю ваше требование, но если Я знаю, у тебя это уже было. Что я изменил:
Get-Childitem
с recurse
вам не нужно добавлять звездочку (*) в конце пути поиска. ( -not $ _. PSIsContainer)
, если вы знаете, что ни одна из ваших папок не содержит строки «.log». - но вы можете оставить его на всякий случай. Таким образом, это должно сделать следующее: Получите все элементы в D: \ Software и всех его подпапках, содержащих строку «.log». в имени, которые не являются каталогами и были созданы 30 дней назад или ранее - затем удалите их.
$Path = "D:\software"
$Daysback = "-30"
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)
get-childitem "D:\software" -include "*.log.*" -force -recurse |where-object { (-not $_.PSIsContainer) -and ($_.creationtime -lt $DatetoDelete) } |remove-item -whatif