Vytvoření základního zprostředkovatele Windows PowerShellu

Toto téma je výchozím bodem pro výuku, jak vytvořit poskytovatele Windows PowerShell. Základní poskytovatel, který je zde popsaný, poskytuje metody pro spuštění a zastavení poskytovatele, a i když tento poskytovatel neposkytuje způsob, jak získat nebo nastavit data v datovém úložiště, poskytuje základní funkce, které vyžaduje všichni poskytovatelé.

Jak už bylo zmíněno dříve, základní poskytovatel popsaný tady implementuje metody pro spuštění a zastavení poskytovatele. Modul Windows PowerShell runtime volá tyto metody pro inicializaci a zrušení inicializace zprostředkovatele.

Poznámka

Ukázku tohoto zprostředkovatele najdete v souboru AccessDBSampleProvider01.cs poskytnutém Windows PowerShell.

Definování třídy Windows PowerShell Provider

Prvním krokem při vytváření zprostředkovatele Windows PowerShell je definování třídy .NET. Tento základní zprostředkovatel definuje třídu s názvem , která je odvozena ze základní třídy AccessDBProvider System.Management.Automation.Provider.Cmdletprovider.

Doporučujeme umístit třídy zprostředkovatele do oboru názvů vašeho oboru názvů rozhraní API, například Providers xxx.PowerShell.Providers. Tento zprostředkovatel používá obor Microsoft.Samples.PowerShell.Provider názvů , ve kterém se Windows PowerShell všechny ukázky poskytovatele.

Poznámka

Třída pro poskytovatele Windows PowerShell musí být explicitně označena jako veřejná. Třídy, které nejsou označené jako veřejné, budou ve výchozím nastavení interní a nebudou nalezeny Windows PowerShell runtime.

Tady je definice třídy pro tohoto základního zprostředkovatele:

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

Přímo před definicí třídy musíte deklarovat atribut System.Management.Automation.Provider.Cmdletproviderattribute se syntaxí [CmdletProvider()].

Pokud je to potřeba, můžete nastavit klíčová slova atributu pro další deklaraci třídy. Všimněte si, že atribut System.Management.Automation.Provider.Cmdletproviderattribute deklarovaný tady obsahuje dva parametry. První parametr atributu určuje výchozí popisný název zprostředkovatele, který může uživatel později upravit. Druhý parametr určuje možnosti definované Windows PowerShell, které zprostředkovatel při zpracování Windows PowerShell modulu runtime. Možné hodnoty možností poskytovatele jsou definovány výčtem System.Management.Automation.Provider.Providercapabilities. Protože se jedná o základního poskytovatele, nepodporuje žádné možnosti.

Poznámka

Plně kvalifikovaný název zprostředkovatele Windows PowerShell obsahuje název sestavení a další atributy určené Windows PowerShell při registraci zprostředkovatele.

Definování Provider-Specific stavu

Základní třída System.Management.Automation.Provider.Cmdletprovider a všechny odvozené třídy jsou považovány za bezstavové, protože modul runtime Windows PowerShell vytváří instance zprostředkovatele pouze podle potřeby. Proto pokud váš poskytovatel vyžaduje úplné řízení a údržbu stavu pro data specifická pro zprostředkovatele, musí odvozovat třídu z třídy System.Management.Automation.Providerinfo. Odvozená třída by měla definovat členy potřebné k udržení stavu, aby bylo možné přistupovat k datům specifickým pro zprostředkovatele, když modul runtime Windows PowerShell volá metodu System.Management.Automation.Provider.Cmdletprovider.Start* pro inicializaci zprostředkovatele.

Poskytovatel Windows PowerShell může také udržovat stav založený na připojení. Další informace o udržování stavu připojení najdete v tématu Vytvoření zprostředkovatele jednotky PowerShellu.

Inicializace zprostředkovatele

Aby se zprostředkovatel inicializoval, Windows PowerShell runtime volá metodu System.Management.Automation.Provider.Cmdletprovider.Start*, Windows PowerShell spuštění. Ve většině částí může poskytovatel použít výchozí implementaci této metody, která jednoduše vrátí objekt System.Management.Automation.Providerinfo popisující vašeho zprostředkovatele. V případě, že chcete přidat další informace o inicializaci, byste však měli implementovat vlastní metodu System.Management.Automation.Provider.Cmdletprovider.Start*, která vrací upravenou verzi objektu System.Management.Automation.Providerinfo předáno vašemu poskytovateli. Obecně platí, že tato metoda by měla vrátit předaný zadaný objekt System.Management.Automation.Providerinfo nebo upravený objekt System.Management.Automation.Providerinfo, který obsahuje další inicializační informace.

Tento základní zprostředkovatel tuto metodu nepřepisuje. Následující kód však ukazuje výchozí implementaci této metody:

Poskytovatel může udržovat stav informací specifických pro zprostředkovatele, jak je popsáno v tématu Definování stavu dat specifického pro zprostředkovatele. V takovém případě musí implementace přepsat metodu System.Management.Automation.Provider.Cmdletprovider.Start*, aby se vrátila instance odvozené třídy.

Spuštění dynamických parametrů

Implementace poskytovatele metody System.Management.Automation.Provider.Cmdletprovider.Start* může vyžadovat další parametry. V takovém případě by měl zprostředkovatel přepsat metodu System.Management.Automation.Provider.Cmdletprovider.Startdynamicparameters* a vrátit objekt, který má vlastnosti a pole s atributy analýzy podobnými třídě rutiny nebo objektu System.Management.Automation.Runtimedefinedparameterdictionary.

Tento základní zprostředkovatel tuto metodu nepřepisuje. Následující kód však ukazuje výchozí implementaci této metody:

Neializace poskytovatele

Aby poskytovatel prostředků, Windows PowerShell používá, měl implementovat vlastní metodu System.Management.Automation.Provider.Cmdletprovider.Stop*. Tato metoda je volána Windows PowerShell runtime k inicializaci zprostředkovatele na zavření relace.

Tento základní zprostředkovatel tuto metodu nepřepisuje. Následující kód však ukazuje výchozí implementaci této metody:

Vzorek kódu

Kompletní vzorový kód najdete v tématu Ukázka kódu AccessDbProviderSample01.

Testování poskytovatele Windows PowerShell

Jakmile je Windows PowerShell zaregistrovaný ve službě Windows PowerShell, můžete ho otestovat spuštěním podporovaných rutin na příkazovém řádku. Pro tohoto základního poskytovatele spusťte nové prostředí a pomocí rutiny načtěte seznam poskytovatelů a ujistěte se, že je k dispozici Get-PSProvider poskytovatel AccessDb.

Get-PSProvider

Objeví se následující výstup:

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

Viz také

Vytváření Windows PowerShell zprostředkovatelů

Navrhování zprostředkovatele Windows PowerShellu