Я использую PowerShell 2.0 на компьютере с Windows SBS 2008 с последними пакетами обновлений. У меня есть двухстрочный скрипт, который находит все пустые папки в каталоге:
$a = Get-ChildItem E:\File_Server -recurse | Where-Object {$_.PSIsContainer -eq $True}
$a | Where-Object {$_.GetFiles().Count -eq 0} | [what now?!]
Вторая строка находит все пустые папки, однако я нахожусь в тупике на последнем канале. Вот что я пробовал до сих пор (имейте в виду, что после второй трубы во второй строке выше были испробованы следующие):
$_.move(F:\path)
Да, я пробовал это. Да, я новичок в PowerShell. Конечно, я получил ошибку «Выражения допускаются только как первый элемент конвейера».
move-item -destination F:\Path
Я получаю самую последнюю ошибку: «Move-Item: исходный и целевой путь должны иметь одинаковые корни. Перемещение не будет работать для разных томов». Шутки в сторону? Что за ограничение асинина? Идем дальше ...
copy-item -destination F:\empty_folders
Очевидно, что я могу обойти ограничение перемещения элемента с помощью copy-item
, а затем использовать remove-item
. Однако такой удачи нет. Сначала я запустил скрипт с copy-item
. PowerShell не выдавал никаких ошибок, но также не делал ничего другого. Он просто сидел там большую часть часа. Каталоги не были перемещены.
Резюме:
Как мне взять список пустых папок, которые у меня есть, и с помощью PowerShell переместить эти пустые каталоги в другое место (между томами!), Удалив оригиналы после перемещения? Обратите внимание на предостережение о «использовании PowerShell», поскольку я уже думал о добавлении RoboCopy в смесь, но хотел бы сохранить его в PowerShell.