Траверса после заказа в PowerShell - PullRequest
0 голосов
/ 27 февраля 2019

Get-ChildItem -Recurse в powershell в настоящее время просматривает каталог в порядке уровней.Можно ли каким-либо образом просмотреть каталог в Powershell по порядку?

Я пытаюсь удалить файлы, которые старше определенного времени.и после удаления файлов, если подпапка пуста, тоже удалите эту папку.Прямо сейчас я делаю это.

$path = 'D:\Files'
Get-ChildItem -Path $path -Recurse | Where-Object {
(($_.LastWriteTime -lt (Get-Date).AddDays(-30)) -and ($_ -is [system.io.fileinfo]) )
} | Remove-Item 


Get-ChildItem -Path $path -Recurse | Where-Object {
($_ -is [System.IO.DirectoryInfo]) -and $_.CreationTime -lt (Get-Date).AddDays(-30) -and ((Get-ChildItem $_.FullName).Count -eq 0)
} | Remove-Item -Force

Но я хочу сделать это одной командой.Не как две разные команды.

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете изменить порядок элементов, возвращаемых Get-ChildItem с помощью [Array]::Reverse

Полный сценарий:

$items = Get-ChildItem 'D:\Files' -Recurse
[Array]::Reverse($items)
$date = (Get-Date).AddDays(-30)
foreach ($item in $items) {
    if ($item.PSIsContainer) {
        if ($item.CreationTime -lt $date -and (Get-ChildItem $item.FullName).Count -eq 0) {
            Remove-Item $item.FullName
        }
    }
    elseif ($item.LastWriteTime -lt $date) {
        Remove-Item $item.FullName
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...