我試圖模仿我的自定義項目文件作爲新的PS驅動器。我正在嘗試創建自NavigationCmdletProvider派生的自定義Powershell Provider。我已經重寫了PSDriveInfo來讀取幷包含來自文件的項目,並且文件路徑位於PSDriveInfo的根目錄中。Powershell提供程序 - GetItem路徑錯誤 - 自定義文件作爲驅動器
我無法正確覆蓋GetItem。我想要做的是使用GetNamesFromPath(path, out tableName, out rowNumber)
方法。由於我的自定義項目基本上是數據集,我想使用tableName來獲取DataRow的ID的DataTable和rowNumber。
問題是我得到「路徑不存在」類錯誤。它不會進入重寫的方法。我錯過了什麼可以重寫嗎?文件路徑並不存在,但我只需要處理路徑並使用WriteItemObject和我想要的對象返回,而不檢查它是否是有效的路徑。
編輯1: 我注意到的一件事是它永遠不會進入GetItem
,因此進入IsValidPath
。當我調試和使用斷點時,首先我加載驅動器,然後將Set-Location
加載到驅動器,調用IsItemContainer
(必須重寫Set-Location
才能工作)。
GetItem
和IsValidPath
根本不會被調用,就好像它在調用覆蓋方法之前檢查有效路徑一樣。 NavigationCmdletProvider
可以使用不存在的路徑(文件本身除外),只能使用手動處理路徑的字符串?
我懷疑這件事很簡單,我錯過了。但它並沒有解決問題。我重寫了'IsValidPath'方法總是返回true並且改變'GetItem'總是返回同一個表,只是爲了看看它是否工作。仍然是同樣的錯誤「Get-Item:無法找到路徑'MyDrive:\ myName',因爲它不存在。」 我注意到的一件事是它永遠不會進入'GetItem',因此進入'IsValidPath'。當我調試和使用斷點時,首先加載驅動器,然後將'Set-Location'加載到驅動器,調用IsItemContainer'。不調用「GetItem」和/或「IsValidPath」。 –
我經歷了一段時間以前寫過的提供程序,試着重寫'ItemExists'。 –
是的,它沒有被正確覆蓋,只在某些情況下工作。我應該看到,但我受夠了。 Thx –