Всем доброго времени суток.
Скостылил скрипт на PowerShell, который перемещает файлы старше N дней, а затем подчищает за собой пустые каталоги. Если они есть.
Скрипт:
$TargetFolder = "/path/to"
$DestinationFolder = "/path/to1"
$Period= "-6"
$CurrentMonths = Get-Date
$ChMonthsCp = $CurrentMonths.AddMonths($Period)
Get-ChildItem $TargetFolder -Recurse | Where { $_.LastAccessTime -le $CurrentMonths -and !$_.PsIsContainer } | Move-Item -Destination { md $_.DirectoryName.Replace("$TargetFolder","$DestinationFolder") -Force }
do {
$dirs = Get-ChildItem $TargetFolder -Recurse | Where { $_.PsIsContainer -and (Get-ChildItem $_.FullName -Force -Recurse) -eq $null }
$dirs | Remove-Item
} while ($dirs.count -gt 0)
Но, в конце получаю ошибку в последний проход цикла, что Path у меня NULL. Это в принципе логично.
Ошибка:
Remove-Item : Не удается привязать аргумента к параметру "Path", так как он имеет значение NULL.
строка:4 знак:24
+ $dirs | Remove-Item <<<<
+ CategoryInfo : InvalidData: (:) [Remove-Item], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.RemoveItemCommand
При этом скрипт отрабатывает нормально, подчищает то, что нужно и всё вроде бы хорошо. Но, подскажите, как можно избавиться от ошибки?