共用方式為


建立基本的 Windows PowerShell 提供者

本主題是瞭解如何建立 Windows PowerShell 提供者的起點。 此處所述的基本提供者提供啟動和停止提供者的方法,雖然此提供者並未提供存取資料存放區或取得或設定資料存放區中資料的方法,但它確實提供了所有提供者所需的基本功能。

如先前所述,此處所述的基本提供者會實行啟動和停止提供者的方法。 Windows PowerShell 執行時間會呼叫這些方法來初始化和解除初始化提供者。

注意

您可以在 Windows PowerShell 提供的 AccessDBSampleProvider01 .cs 檔案中找到這個提供者的範例。

定義 Windows PowerShell 提供者類別

建立 Windows PowerShell 提供者的第一個步驟,是定義其 .net 類別。 這個基本提供者會定義一個名為 AccessDBProvider 的類別,該類別衍生自 Cmdletprovider 基類。

建議您將提供者類別放在 Providers API 命名空間的命名空間中,例如 xxx. provider。 此提供者會使用 Microsoft.Samples.PowerShell.Provider 命名空間,其中所有 Windows PowerShell 提供者範例都會在其中執行。

注意

Windows PowerShell 提供者的類別必須明確標記為 public。 未標記為公用的類別會預設為內部,而且 Windows PowerShell 執行時間找不到。

以下是此基本提供者的類別定義:

[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : CmdletProvider

在類別定義之前,您必須使用語法 [CmdletProvider () ],來宣告 Cmdletproviderattribute 屬性。

如有必要,您可以設定屬性關鍵字以進一步宣告類別。 請注意,此處宣告的 Cmdletproviderattribute 屬性包含兩個參數。 第一個屬性參數會指定提供者的預設易記名稱,讓使用者可以在稍後修改。 第二個參數會指定在命令處理期間,提供者公開給 Windows PowerShell 執行時間的 Windows PowerShell 定義功能。 提供者功能的可能值是由 Providercapabilities 列舉所定義。 因為這是基底提供者,所以不支援任何功能。

注意

Windows PowerShell 提供者的完整名稱包含元件名稱,以及在註冊提供者時 Windows PowerShell 所決定的其他屬性。

定義 Provider-Specific 狀態資訊

Cmdletprovider基類和所有衍生類別都會被視為無狀態,因為 Windows PowerShell 執行時間只會視需要建立提供者實例。 因此,如果您的提供者需要提供者專屬資料的完整控制和狀態維護,它必須從 Providerinfo 類別衍生類別。 您的衍生類別應該定義維護狀態所需的成員,以便在 Windows PowerShell 執行時間呼叫Cmdletprovider時存取提供者特定的資料,以初始化提供者。

Windows PowerShell 提供者也可以維持以連接為基礎的狀態。 如需維護連接狀態的詳細資訊,請參閱 建立 PowerShell 磁片磁碟機提供者

初始化提供者

若要初始化提供者,Windows PowerShell 執行時間在 Windows PowerShell 啟動時,會呼叫Cmdletprovider. Start *方法。 在大部分的情況下,您的提供者可以使用這個方法的預設執行,只會傳回描述您提供者的 Providerinfo 物件。 但是,如果您想要新增額外的初始化資訊,您應該執行您自己的 Cmdletprovider ,它會傳回已修改的 Providerinfo 物件版本,此方法會傳遞給您的提供者。 一般情況下,這個方法應該會傳回傳遞給它的 Providerinfo 物件,或是包含其他初始化資訊的已修改 Providerinfo 物件。

這個基本提供者不會覆寫這個方法。 但是,下列程式碼會顯示此方法的預設執行:

提供者可以維護提供者特定資訊的狀態,如 定義提供者特定的資料狀態中所述。 在此情況下,您的實作為必須覆寫 Cmdletprovider ,以傳回衍生類別的實例。

啟動動態參數

Cmdletprovider. Start *方法的提供者可能需要額外的參數。 在此情況下,提供者應該覆寫 Cmdletprovider. Startdynamicparameters * 方法,並傳回物件,該物件具有剖析屬性(attribute)的屬性和欄位,類似于 Cmdlet 類別或 Runtimedefinedparameterdictionary 物件。

這個基本提供者不會覆寫這個方法。 但是,下列程式碼會顯示此方法的預設執行:

將提供者取消初始化

若要釋放 Windows PowerShell 提供者所使用的資源,您的提供者應該執行它自己的Cmdletprovider. Stop *方法。 Windows PowerShell 執行時間會呼叫這個方法,以便在會話結束時將提供者解除初始化。

這個基本提供者不會覆寫這個方法。 但是,下列程式碼會顯示此方法的預設執行:

程式碼範例

如需完整的範例程式碼,請參閱 AccessDbProviderSample01 程式碼範例

測試 Windows PowerShell 提供者

一旦您的 Windows PowerShell 提供者已向 Windows PowerShell 註冊之後,您就可以在命令列上執行支援的 Cmdlet 來進行測試。 針對這個基本提供者,請執行新的 shell,並使用指令 Get-PSProvider 程式來取出提供者清單,並確認 AccessDb 提供者存在。

Get-PSProvider

下列輸出會出現:

Name                 Capabilities                  Drives
----                 ------------                  ------
AccessDb             None                          {}
Alias                ShouldProcess                 {Alias}
Environment          ShouldProcess                 {Env}
FileSystem           Filter, ShouldProcess         {C, Z}
Function             ShouldProcess                 {function}
Registry             ShouldProcess                 {HKLM, HKCU}

另請參閱

建立 Windows PowerShell 提供者

設計 Windows PowerShell 提供者