У меня странная вещь, идущая здесь, в Powershell 1.0, и я не понимаю, почему Powershell реагирует так, как она есть.Проблема с Powershell с внутренней логикой
Ситуация: Я создал несколько архивных файлов на диске буквой е:
Теперь я хочу, чтобы удалить их все. Но на моем диске e: есть больше zip-файлов. Поэтому я хочу удалить только те, которые находятся в этой конкретной папке и ее подпапках.
Команда, которую я хочу использовать для этого:
PS E:\> Get-ChildItem -Path E:\Webdev\icons\ -Include *.zip -Recurse -Name -Force | Remove-Item -Force
Однако, при исполнении, я получаю кучу ошибок, затем все говорят, что
Не можете найти пути E: \ тест. zip, потому что его не существует.
В самом деле, нет такого файла, как test.zip непосредственно под й: Оно существует в папке иконок, которые я передал сценарий.
Решение для меня, чтобы изменить каталог в папку значков и выполнить там команду.
Но это не логично. Я хочу быть в состоянии сказать, в каком каталоге файлы должны быть удалены, а затем они должны быть удалены только там. Почему Powershell начинает искать файлы в текущем каталоге, это для меня загадка.
Может кто-нибудь объяснить это мне, пожалуйста?
+1, Это действительно работает, и проще, чем мое решение –
спасибо, что сделал трюк. Странно, как этот специфический параметр влияет на результат. – KdgDev
Ну, параметр сообщает командлету возвращать строки вместо объектов FileInfo. Remove-Item достаточно умен, чтобы узнать, что удалить при получении FileInfo, но со строками он может принимать только путь ...и поскольку они относятся к указанному вами пути ... он может только догадываться. Параметр -Name, вероятно, доступен только для показа; Однако использование объектов намного проще в конвейере. – Joey