Информация об изменениях

Сообщение Подлянка с -Path/-LiteralPath в PowerShell - что делать? от 10.07.2024 7:25

Изменено 11.07.2024 4:22 Shmj

Подлянка с -Path/-LiteralPath в PowerShell - что делать?
Вот, допустим, хотите вы в PowerShell получить список файлов в папке, смотрите доку: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-7.4

Get-ChildItem -Path


Вроде все просто. Но!

Это не работает для папок, в пути которых есть символы []. Содержание таких папок просто игнорит

D:\folder_[10]\subfolder1


И нужно использовать не -Path а -LiteralPath.

Знали ли вы об этом? Вот пока не столкнешься — будешь верить что код работает и там же все просто. Ан, нет, что еще раз доказывает тезис — наш мир только в теории кажется простым, пока не попытаешься что-либо сделать.

Как нужно бороться с подобными ошибками?
Подлянка с -Path/-LiteralPath в PowerShell - что делать?
Вот, допустим, хотите вы в PowerShell получить список файлов в папке, смотрите доку: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-7.4

Get-ChildItem -Path


Вроде все просто. Но!

Это не работает для папок, в пути которых есть символы []. Содержание таких папок просто игнорит

D:\folder_[10]\subfolder1


И нужно использовать не -Path а -LiteralPath.

Знали ли вы об этом? Вот пока не столкнешься — будешь верить что код работает и там же все просто. Ан, нет, что еще раз доказывает тезис — наш мир только в теории кажется простым, пока не попытаешься что-либо сделать.

Как нужно бороться с подобными ошибками?

З.Ы.
Причина в том, что на самом деле это не -Path а шаблон. И символы [] — воспринимает как часть шаблона для поиска — типа [bc]ook matches book and cook. Так же можно использовать и традиционные ? и *, но еще решили добавить и свои кастомные [], которые отдельно могут быть именем папки.