讓我們來看看在文件系統中的示例: 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`
有一對夫婦的方式圍繞這個。我們爲某些cmdlet提供-LiteralPath
: PS> get-content -LiteralPath "foo[bar].'baz'" sdflkj
請注意,我已在字符串周圍包含雙引號。這是因爲單引號將被視爲字符串元素,所以'foo'
將被foo
替代,雙引號表示解析器應該查看整個字符串(雙引號至雙引號)。另一種方式是使用轉義字符(反引號)。 PS> get-content 'foo`[bar`].`baz`' sdflkj
至於相同的路徑,我建議你避免這種情況。你需要一些方法來消除另一個實體的歧義。您應該確保您創建的路徑對您的資源是唯一的。請記住,您在提供商中構建了此路徑,因此您可以將提供消除歧義的功能添加爲提供商的一部分。
最後,長度上的限制可以表示爲文件系統上的路徑。 AFIK對非路徑「路徑」沒有限制
爲了防止文檔是[here](https://msdn.microsoft.com/en-us/library/ee126186(v = vs.85) .aspx) 1)希望Path轉義只是關於你如何輸入字符串。如果不是,我認爲你必須在你的提供者中處理這個。 2)我不認爲提供商框架顯式限制路徑。 4)你的提供者將不得不瞭解如何處理這個問題。如果有兩件物品,你將如何處理獲得物品? – TravisEz13
@TravisPlunk,約4),因爲它們是對象,它們可以通過程序來保存和過濾。它們確實具有獨特性,但其獨特性不僅僅在於名稱。例如,許多電子郵件可以具有相同的標題,但具有不同的潛在唯一ID。電子郵件標題似乎自然映射到PowerShell名稱。我只想確定這是PowerShell中可以接受的事情。 – bright
@TravisPlunk,考慮重寫您的評論作爲答案。關於1)我沒有在您提供的鏈接中找到關於轉義路徑分隔符的任何信息。我錯過了什麼? – bright