PowerShell get-childitem не может обработать имя файла, начинающееся с [символа, даже с escape-символа - PullRequest
1 голос
/ 01 марта 2012

У меня есть файл в каталоге c: \ temp с именем [default] .xml.Когда я запускаю команду: get-childitem "c: \ temp` [default] .xml" в консоли powershell, она ничего мне не возвращает.Однако, если я введу эту команду: get-childitem "c: \ temp * default] .xml", она будет работать как положено.

Почему экранирующий символ в '[' не работает?

Ответы [ 2 ]

2 голосов
/ 01 марта 2012

См. Get-help about_wildcards

[] - это операторы подстановки с "подстановочными знаками".Чтобы использовать get-childitem для файлов, содержащих эти символы, используйте параметр -literalpath, чтобы отключить подстановочные знаки для спецификации файла:

get-childitem -literalpath "c:\temp[default].xml"

В качестве альтернативы, обычный подстановочный знак все еще работает в методе .getfiles () объекта directoryinfoобъект:

(get-item c:\).getfiles("temp[default].*")
1 голос
/ 01 марта 2012

У вас есть официальный ответ Microsoft в старом Совете недели по Windows PowerShell от Technet .

Вы можете использовать:

Get-ChildItem 'c:\temp\``[default``].xml'
...