Windows PowerShell 提供者可讓任何數據存放區像文件系統一樣公開,就像是掛接的磁碟驅動器一樣。 例如,內建登錄提供者可讓您瀏覽登錄,就像巡覽計算機的 c 磁碟驅動器一樣。 提供者也可以覆寫 Item Cmdlet(例如,Get-Item、Set-Item等),讓數據存放區中的數據在巡覽文件系統時可以像檔案和目錄一樣處理。 如需提供者和磁碟驅動器的詳細資訊,以及 Windows PowerShell 中的內建提供者,請參閱 about_Providers。
提供者和磁碟驅動器
提供者會定義用來存取、巡覽和編輯數據存放區的邏輯,而磁碟驅動器會指定數據存放區的特定進入點,或提供者所定義之類型的部分。 例如,登錄提供者可讓您存取登錄中的 Hives 和機碼,而 HKLM 和 HKCU 磁碟驅動器會指定登錄內對應的 Hives。 HKLM 和 HKCU 磁碟驅動器都使用登錄提供者。
當您撰寫提供者時,可以指定提供者可用時自動建立的預設磁碟驅動器。 您也會定義方法來建立使用該提供者的新磁碟驅動器。
提供者類型
有數種類型的提供者,每個提供者都提供不同的功能層級。 提供者會實作為類別,其衍生自 System.Management.Automation.SessionStateCategoryCmdletProvider 類別的其中一個子系。 如需不同提供者類型的資訊,請參閱 提供者類型。
提供者 Cmdlet
提供者可以實作對應至 Cmdlet 的方法,並在該提供者的磁碟驅動器中使用時,為這些 Cmdlet 建立自定義行為。 根據提供者的類型,可以使用不同的 Cmdlet 集合。 如需提供者中可供自定義之 Cmdlet 的完整清單,請參閱 提供者 Cmdlet。
提供者路徑
用戶流覽提供者磁碟驅動器,例如文件系統。 因此,他們預期路徑語法會對應至文件系統導覽中使用的路徑。 當使用者執行提供者 Cmdlet 時,他們會指定要存取之項目的路徑。 指定的路徑可以透過數種方式來解譯。 提供者應該支援下列一或多個路徑類型。
磁碟驅動器限定路徑
磁碟驅動器限定路徑是專案名稱、專案所在容器和子容器的組合,以及存取專案的 Windows PowerShell 磁碟驅動器。 (磁碟驅動器是由用來存取數據存放區的提供者所定義。 此路徑會以磁碟驅動器名稱開頭,後面接著冒號 (:)。 例如:Get-ChildItem C:
提供者限定路徑
若要允許 Windows PowerShell 引擎初始化和取消初始化您的提供者,提供者必須支援提供者限定的路徑。 例如,使用者可以初始化和取消初始化 FileSystem 提供者,因為它定義了下列提供者限定路徑:FileSystem::\\uncshare\abc\bar。
提供者直接路徑
若要允許遠端訪問您的 Windows PowerShell 提供者,它應該支援提供者直接路徑,以直接傳遞至目前位置的 Windows PowerShell 提供者。 例如,登錄 Windows PowerShell 提供者可以使用 \\server\regkeypath 作為提供者直接路徑。
提供者內部路徑
若要允許提供者 Cmdlet 使用非 Windows PowerShell 應用程式開發介面 (API) 存取數據,您的 Windows PowerShell 提供者應該支援提供者內部路徑。 這個路徑會在提供者限定路徑中的 “::” 後面指出。 例如,FileSystem Windows PowerShell 提供者的提供者內部路徑 \\uncshare\abc\bar。
覆寫 Cmdlet 參數
某些提供者特定 Cmdlet 的行為可由提供者覆寫。 如需可覆寫的參數清單,以及如何在提供者類別中覆寫它們,請參閱 提供者 Cmdlet 參數
動態參數
當使用者指定其中一個 Cmdlet 靜態參數的特定值時,提供者可以定義新增至提供者 Cmdlet 的動態參數。 提供者會藉由實作一或多個動態參數方法來執行這項作業。 如需可用來新增動態參數的 Cmdlet 參數清單,以及用來實作這些參數的方法,請參閱 提供者 Cmdlet 動態參數。
提供者功能
System.Management.Automation.Provider.ProviderCapabilities 列舉定義提供者可支援的功能數目。 其中包括使用通配符、篩選專案和支援交易的能力。 若要指定提供者的功能,請新增 System.Management.Automation.Provider.ProviderCapabilities 列舉的值清單, 結合邏輯 OR 作業,作為 System.Management.Automation.Provider.CmdletProviderAttribute.ProviderCapabilities* 属性 System.Management.Automation.Provider.CmdletProviderAttribute 属性。 例如,下列屬性指定提供者支援 System.Management.Automation.Provider.ProviderCapabilitiesShouldProcess 和 System.Management.Automation.Provider.ProviderCapabilitiesTransactions 功能。
[CmdletProvider(RegistryProvider.ProviderName, ProviderCapabilities.ShouldProcess | ProviderCapabilities.Transactions)]
提供者 Cmdlet 說明
撰寫提供者時,您可以實作您支援之提供者 Cmdlet 的專屬說明。 這包括每個提供者 Cmdlet 的單一說明主題,或針對提供者 Cmdlet 根據動態參數的使用而以不同方式運作的情況,說明主題的多個版本。 若要支援提供者 Cmdlet 特定說明,您的提供者必須實作 System.Management.Automation.Provider.ICmdletProviderSupportsHelp 介面。
Windows PowerShell 引擎會呼叫 System.Management.Automation.Provider.ICmdletProviderSupportsHelp.GetHelpMaml* 方法來顯示提供者 Cmdlet 的說明主題。 引擎會提供使用者在執行 Get-Help Cmdlet 和使用者目前路徑時所指定的 Cmdlet 名稱。
如果您的提供者針對不同的磁碟驅動器實作相同提供者 Cmdlet 的不同版本,則需要目前的路徑。 方法必須傳回包含 Cmdlet 說明 XML 的字串。
說明檔的內容是使用 PSMAML XML 寫入。 這是用於撰寫獨立 Cmdlet 說明內容的相同 XML 架構。 將自定義 Cmdlet 說明的內容新增至提供者在 CmdletHelpPaths 元素下的說明檔。 下列範例顯示單一提供者 Cmdlet 的 command 專案,並示範如何指定提供者的提供者 Cmdlet 名稱。 支援
<CmdletHelpPaths>
<command:command>
<command:details>
<command:name>ProviderCmdletName</command:name>
<command:verb>Verb</command:verb>
<command:noun>Noun</command:noun>
<command:details>
</command:command>
<CmdletHelpPath>