давайте рассмотрим на примере в файловой системе: PS> dir foo* Directory: C:\Users\jimtru\AppData\Local\Temp Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 6/1/2016 11:11 AM 11 foo[bar].'baz' -a---- 6/1/2016 11:13 AM 8 foo[bar].`baz`
первое, что нужно заметить, есть кавычки (одинарные и обратно), которые оказываются просто, никакие дополнительные символы, указывающие спуск на выходе, однако, это не могут привести к PowerShell немного изжоги, если вы просто пытаетесь получить их содержание:
PS> get-content foo[bar].'baz' get-content : An object at the specified path foo[bar].baz... PS> get-content foo[bar].`baz`... get-content : An object at the specified path foo[bar]az`
есть несколько способов вокруг это. Мы предоставляем -LiteralPath
для некоторых командлетов: PS> get-content -LiteralPath "foo[bar].'baz'" sdflkj
Обратите внимание, что я включил двойные кавычки вокруг строки. Это связано с тем, что одинарные кавычки будут обрабатываться как строковый элемент, поэтому 'foo'
будет заменен на foo
, двойные кавычки означают, что анализатор должен смотреть на всю строку (двойная кавычка на двойную кавычку). Другой способ продолжения - использовать escape-символ (обратная кавычка). PS> get-content 'foo`[bar`].`baz`' sdflkj
Что касается путей, которые идентичны, я бы предложил вам избежать этого. Вам нужно каким-то образом устранить одно сущность от другого. Вы должны быть уверены, что созданный вами путь уникален для вашего ресурса. Помните, что вы создаете этот путь у своего провайдера, поэтому вы можете добавить функции устранения неоднозначности как часть вашего провайдера.
И наконец, существуют ограничения по длине, которые могут быть выражены как путь в файловой системе. AFIK, нет ограничений на пути без пути «0»
На всякий случай документы [здесь] (https://msdn.microsoft.com/en-us/library/ee126186 (v = vs.85) .aspx) 1) Надеемся, что путь к экрану будет только о том, как вводить строку. Если это не так, я думаю, вам придется обрабатывать это в своем провайдере. 2) Я не думаю, что инфраструктура поставщика ограничивает путь явно. 4) Ваш провайдер должен будет понять, как с этим справиться. Как бы вы обрабатывали get-item, когда есть два элемента? – TravisEz13
@TravisPlunk, около 4), поскольку они являются объектами, которые можно удерживать и фильтровать программно. У них есть уникальность, но уникальность - это не просто имя. Например, многие электронные письма могут иметь одно и то же название, но разные базовые уникальные идентификаторы. Название электронной почты, по-видимому, естественно относится к имени PowerShell. Я просто хочу быть уверенным, что это принято делать в PowerShell. – bright
@TravisPlunk, рассмотрите вопрос о переписывании вашего комментария в качестве ответа. Около 1) Я не нашел никакой информации об экранирующих разделителях пути в указанной вами ссылке. Я что-то пропустил? – bright