共用方式為


設計你的 Windows PowerShell 提供者

如果您的產品或設定暴露了一組儲存的資料,例如使用者想要瀏覽或瀏覽的資料庫,您應該實作 Windows PowerShell 提供者。 此外,如果你的產品提供容器,即使不是多層級容器,實作 Windows PowerShell 提供者也是合理的。 例如,如果 cmdlet 動詞 Copy、Move、Rename、New 或 Remove 作為產品或設定資料的操作有意義,你可能想實作 Windows PowerShell 容器提供者。

Windows PowerShell 路徑可識別你的提供者

Windows PowerShell 執行環境使用 Windows PowerShell 路徑來存取相應的 Windows PowerShell 提供者。 當 cmdlet 指定其中一條路徑時,執行時會知道該使用哪個提供者來存取相關的資料儲存。 這些路徑包括驅動合格路徑、提供者合格路徑、提供者直接路徑及提供者內部路徑。 每個 Windows PowerShell 提供者必須支援其中一條或多條路徑。

欲了解更多 Windows PowerShell 路徑資訊,請參閱 Windows PowerShell 運作方式。

定義 Drive-Qualified 路徑

為了讓使用者存取位於實體磁碟的資料,您的 Windows PowerShell 提供者必須支援磁碟機合格的路徑。 這條路徑以磁碟機名稱後接冒號(例如:),例如mydrive:\abc\bar)開始。

定義 Provider-Qualified 路徑

為了讓 Windows PowerShell 執行環境初始化和取消初始化提供者,你的 Windows PowerShell 提供者必須支援提供者限定的路徑。 例如,FileSystem:\\uncshare\abc\bar 是 Windows PowerShell 提供的 FileSystem 提供者的提供者合格路徑。

定義 Provider-Direct 路徑

為了讓遠端存取你的 Windows PowerShell 提供者,它應該支援提供者直接路徑,直接傳遞給目前位置的 Windows PowerShell 提供者。 例如,登錄檔 Windows PowerShell 提供者可以使用 \\server\regkeypath 作為提供者直接路徑。

定義 Provider-Internal 路徑

為了讓提供者指令小程式能透過非 Windows PowerShell 應用程式介面(API)存取資料,你的 Windows PowerShell 提供者應該支援提供者-內部路徑。 此路徑會在提供者合格路徑的「::」後方標示。 例如,FileSystem Windows PowerShell 提供者的提供者-內部路徑是 \\uncshare\abc\bar。

變更儲存資料

在覆寫修改底層資料儲存的方法時,務必呼叫 System.Management.Automation.Provider.CmdletProvider.WriteItemObject* 方法,該方法更改的項目版本為 up-to。 提供者基礎設施會決定項目物件是否需要傳入管線,例如使用者指定 -PassThru 參數時。 如果取得最 up-to-日期項目是成本高昂的操作(效能上),你可以測試 Context.PassThru 屬性,判斷是否真的需要寫入結果項目。

為您的醫療提供者選擇一個基礎類別

Windows PowerShell 提供多種基底類別,你可以用來實作自己的 Windows PowerShell 提供者。 設計供應商時,請選擇本節所述最符合您需求的基礎類別。

每個 Windows PowerShell 提供者基底類別都會提供一組 cmdlet。 本節描述指令列,但未說明其參數。

利用會話狀態,Windows PowerShell 執行時會提供多個位置指令匣給特定的 Windows PowerShell 提供者,例如 Get-LocationSet-LocationPop-LocationPush-Location cmdlet。 你可以使用 Get-Help 指令長來取得這些地點指令的資訊。

CmdletProvider 基底類別

System.Management.Automation.Provider.CmdletProvider 類別定義了一個基本的 Windows PowerShell 提供者。 此類別支援提供者宣告,並提供所有 Windows PowerShell 提供者可用的多項屬性與方法。 該類別由指令小程式呼叫 Get-PSProvider ,以列出所有可用的服務提供者。 此指令子的實作由會話狀態提供。

備註

Windows PowerShell 提供者對所有 Windows PowerShell 語言範疇皆可使用。

DriveCmdletProvider 基底類別

System.Management.Automation.Provider.DriveCmdletProvider 類別定義了一個 Windows PowerShell 磁碟機提供者,支援新增磁碟、移除現有磁碟機及初始化預設磁碟的操作。 例如,Windows PowerShell 提供的 FileSystem 提供者會初始化所有掛載磁碟區的磁碟,例如硬碟和 CD/DVD 裝置裝置。

此類別源自 System.Management.Automation.Provider.CmdletProvider 基底類別。 下表列出此類別所暴露的 cmdlet。 除了上述指令外, Get-PSDrive cmdlet(由會話狀態暴露)是相關的指令檔,用於檢索可用磁碟。

Cmdlet Definition
New-PSDrive 為該會話建立一個新的磁碟機,並串流磁碟資訊。
Remove-PSDrive 會移除一個磁碟。

ItemCmdletProvider 基底類別

System.Management.Automation.Provider.ItemCmdletProvider 類別定義了一個 Windows PowerShell 項目提供者,負責對資料儲存中的個別項目執行操作,且不假設任何容器或導覽功能。 此類別源自 System.Management.Automation.Provider.DriveCmdletProvider 基底類別。 下表列出此類別所暴露的 cmdlet。

Cmdlet Definition
Clear-Item 清除指定位置的當前項目內容,並以提供者指定的「清除」值取代。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。
Get-Item 從指定位置擷取物品,並將產生的物件串流。
Invoke-Item 在指定路徑上呼叫該項目的預設動作。
Set-Item 將項目設置在指定位置,並以所示值。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。
Resolve-Path 解決 Windows PowerShell 路徑的萬用字元,並串流路徑資訊。
Test-Path 測試指定路徑,若存在則回傳,否則回falsetrue。 此 cmdlet 實作是為了支援 IsContainerSystem.Management.Automation.Provider.CmdletProvider.WriteItemObject* 方法的參數。

ContainerCmdletProvider 基底類別

System.Management.Automation.Provider.ContainerCmdletProvider 類別定義了一個 Windows PowerShell 容器提供者,該提供者會向使用者揭露一個容器,用於資料儲存項目。 請注意,Windows PowerShell 容器提供者只能在有一個容器(沒有巢狀容器)且包含項目時使用。 如果有巢狀容器,你必須實作 Windows PowerShell 導覽提供者。

此類別源自 System.Management.Automation.Provider.ItemCmdletProvider 基底類別。 下表定義了此類別實作的 cmdlet。

Cmdlet Definition
Copy-Item 將物品從一個地點複製到另一個地點。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。
Get-ChildItem 在指定位置取得子項目,並將其串流為物件。
New-Item 在指定位置建立新項目,並串流產生的物件。
Remove-Item 移除指定位置的物品。
Rename-Item 在指定位置重新命名物品。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。

System.Management.Automation.Provider.NavigationCmdletProvider 類別定義了一個 Windows PowerShell 導航提供者,負責執行使用多個容器的項目操作。 此類別源自 System.Management.Automation.Provider.ContainerCmdletProvider 基底類別。 下表列出此類別所暴露的 cmdlet。

Cmdlet Definition
Combine-Path 將兩條路徑合併為單一路徑,並使用提供者專用的路徑分隔符。 這個指令長會串流字串。
Move-Item 將物品移動到指定位置。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。

相關的 cmdlet 是由 Windows PowerShell 提供的基本 Parse-Path cmdlet。 此 cmdlet 可用來解析 Windows PowerShell 路徑以支援該 Parent 參數。 它會串流父路徑字串。

選擇支援的提供者介面

除了從 Windows PowerShell 基底類別衍生出外,您的 Windows PowerShell 提供者還可透過從以下一個或多個提供者介面衍生出其他功能。 本節定義這些介面及各介面所支援的指令碼。 它並未描述介面支援指令列的參數。 Cmdlet 參數資訊可透過 Get-CommandGet-Help cmdlet 線上取得。

IContentCmdletProvider

System.Management.Automation.Provider.IContentCmdletProvider 介面定義了對資料項目內容執行操作的內容提供者。 下表列出此介面所暴露的 cmdlet。

Cmdlet Definition
Add-Content 將指定項目內容附加指定的值長度。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。
Clear-Content 將指定項目的內容設定為「清除」值。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。
Get-Content 擷取指定項目的內容並串流產生的物件。
Set-Content 替換指定項目的現有內容。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。

IPropertyCmdletProvider

System.Management.Automation.Provider.IPropertyCmdletProvider 介面定義了一個 Windows PowerShell 屬性,負責對資料儲存中項目的屬性進行操作。 下表列出此介面所暴露的 cmdlet。

備註

Path這些 cmdlet 的參數表示指向項目的路徑,而非識別屬性。

Cmdlet Definition
Clear-ItemProperty 將指定項目的屬性設定為「清除」值。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。
Get-ItemProperty 從指定項目檢索屬性並串流產生的物件。
Set-ItemProperty 以指定值設定指定項目的屬性。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。

IDynamicPropertyCmdletProvider

System.Management.Automation.Provider.IDynamicPropertyCmdletProvider 介面,源自 System.Management.Automation.Provider.IPropertyCmdletProvider,定義了一個提供者,能指定其支援指令列的動態參數。 這類提供者處理可在執行時定義屬性的操作,例如新的屬性操作。 對於具有靜態定義屬性的項目,無法進行此類操作。 下表列出此介面所暴露的 cmdlet。

Cmdlet Definition
Copy-ItemProperty 將指定項目的屬性複製到另一個項目。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。
Move-ItemProperty 將一個屬性從指定項目移動到另一個項目。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。
New-ItemProperty 在指定項目上建立屬性,並串流產生的物件。
Remove-ItemProperty 移除指定項目的屬性。
Rename-ItemProperty 重新命名指定項目的屬性。 除非 PassThru 參數指定,否則此指令小程式不會將輸出物件通過管線。

ISecurityDescriptorCmdletProvider

System.Management.Automation.Provider.ISecurityDescriptorCmdletProvider 介面為提供者新增安全描述符功能。 此介面允許使用者取得並設定資料儲存中項目的安全描述符資訊。 下表列出此介面所暴露的 cmdlet。

Cmdlet Definition
Get-Acl 擷取存取控制清單(ACL)中的資訊,這是用來保護作業系統資源(例如檔案或物件)的安全描述符的一部分。
Set-Acl 設定ACL的資訊。 它以 System.Security.AccessControl.ObjectSecurity 的實例形式出現在指定路徑指定的項目上。 此 cmdlet 可設定登錄檔中的檔案、鍵與子鍵,或任何其他提供者項目的資訊,前提是 Windows PowerShell 提供者支援安全資訊的設定。

另請參閱

建立 Windows PowerShell 提供者

Windows PowerShell 運作原理

Windows PowerShell SDK