Skapa en grundläggande Windows PowerShell-provider

Det här avsnittet är startpunkten för att lära dig hur du skapar en Windows PowerShell provider. Den grundläggande provider som beskrivs här tillhandahåller metoder för att starta och stoppa providern, och även om den här providern inte ger möjlighet att komma åt ett datalager eller hämta eller ange data i datalagret, tillhandahåller den grundläggande funktioner som krävs av alla leverantörer.

Som tidigare nämnts implementerar den grundläggande provider som beskrivs här metoder för att starta och stoppa providern. Den Windows PowerShell runtime anropar dessa metoder för att initiera och oinitiera providern.

Anteckning

Du hittar ett exempel på den här providern i filen AccessDBSampleProvider01.cs som tillhandahålls av Windows PowerShell.

Definiera Windows PowerShell providerklass

Det första steget i att skapa en Windows PowerShell-provider är att definiera dess .NET-klass. Den här grundläggande providern definierar en klass med namnet som härleds från basklassen AccessDBProvider System.Management.Automation.Provider.Cmdletprovider.

Vi rekommenderar att du placerar dina providerklasser i ett namnområde för Providers DITT API-namnområde, till exempel xxx.PowerShell.Providers. Den här providern Microsoft.Samples.PowerShell.Provider använder namnområdet där alla Windows PowerShell-providerexempel körs.

Anteckning

Klassen för en Windows PowerShell måste uttryckligen markeras som offentlig. Klasser som inte har markerats som offentliga blir som standard interna och hittas inte av Windows PowerShell-körningen.

Här är klassdefinitionen för den här grundläggande providern:

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

Precis före klassdefinitionen måste du deklarera attributet System.Management.Automation.Provider.Cmdletproviderattribute med syntaxen [CmdletProvider()].

Du kan ange attributnyckelord för att ytterligare deklarera klassen om det behövs. Observera att attributet System.Management.Automation.Provider.Cmdletproviderattribute som deklareras här innehåller två parametrar. Den första attributparametern anger det standardanpassade namnet för providern, som användaren kan ändra senare. Den andra parametern anger Windows PowerShell-definierade funktioner som providern exponerar för den Windows PowerShell körningen under kommandobearbetningen. Möjliga värden för providerfunktionerna definieras av uppräkningen System.Management.Automation.Provider.Providercapabilities. Eftersom det här är en basprovider har den inte stöd för några funktioner.

Anteckning

Det fullständigt kvalificerade namnet på Windows PowerShell providern innehåller sammansättningsnamnet och andra attribut som bestäms av Windows PowerShell när providern registreras.

Definiera Provider-Specific tillståndsinformation

Basklassen System.Management.Automation.Provider.Cmdletprovider och alla härledda klasser betraktas som tillståndslösa eftersom Windows PowerShell-körningen endast skapar providerinstanser efter behov. Om leverantören kräver fullständig kontroll och tillståndsunderhåll för providerspecifika data måste den därför härleda en klass från klassen System.Management.Automation.Providerinfo. Din härledda klass bör definiera de medlemmar som behövs för att upprätthålla tillståndet så att providerspecifika data kan nås när Windows PowerShell-körningen anropar metoden System.Management.Automation.Provider.Cmdletprovider.Start* för att initiera providern.

En Windows PowerShell-provider kan också upprätthålla anslutningsbaserat tillstånd. Mer information om hur du behåller anslutningstillståndet finns i Skapa en PowerShell-enhetsprovider.

Initiera providern

För att initiera providern anropar Windows PowerShell runtime metoden System.Management.Automation.Provider.Cmdletprovider.Start* när Windows PowerShell startas. I de flesta fall kan leverantören använda standardimplementering av den här metoden, som helt enkelt returnerar objektet System.Management.Automation.Providerinfo som beskriver din leverantör. Men om du vill lägga till ytterligare initieringsinformation bör du implementera din egen metod System.Management.Automation.Provider.Cmdletprovider.Start* som returnerar en modifierad version av objektet System.Management.Automation.Providerinfo som skickas till din leverantör. I allmänhet ska den här metoden returnera det angivna objektet System.Management.Automation.Providerinfo som skickades till den eller ett ändrat System.Management.Automation.Providerinfo-objekt som innehåller annan initieringsinformation.

Den här grundläggande providern åsidosätter inte den här metoden. Följande kod visar dock standardimplementering av den här metoden:

Leverantören kan upprätthålla tillståndet för providerspecifik information enligt beskrivningen i Definiera providerspecifikt datatillstånd. I det här fallet måste implementeringen åsidosätta metoden System.Management.Automation.Provider.Cmdletprovider.Start* för att returnera en instans av den härledda klassen.

Starta dynamiska parametrar

Providerimplementering av metoden System.Management.Automation.Provider.Cmdletprovider.Start* kan kräva ytterligare parametrar. I det här fallet ska providern åsidosätta metoden System.Management.Automation.Provider.Cmdletprovider.Startdynamicparameters* och returnera ett objekt som har egenskaper och fält med parsningsattribut som liknar en cmdlet-klass eller ett System.Management.Automation.Runtimedefinedparameterdictionary-objekt.

Den här grundläggande providern åsidosätter inte den här metoden. Följande kod visar dock standardimplementering av den här metoden:

Oinnitialisera providern

För att frigöra resurser som Windows PowerShell-providern använder, bör leverantören implementera sin egen metod System.Management.Automation.Provider.Cmdletprovider.Stop*. Den här metoden anropas av Windows PowerShell runtime för att inte initiera providern i slutet av en session.

Den här grundläggande providern åsidosätter inte den här metoden. Följande kod visar dock standardimplementering av den här metoden:

Kodexempel

Fullständig exempelkod finns i AccessDbProviderSample01– kodexempel.

Testa Windows PowerShell providern

När din Windows PowerShell har registrerats med Windows PowerShell kan du testa den genom att köra de cmdlets som stöds på kommandoraden. För den här grundläggande providern kör du det nya gränssnittet och använder cmdleten för att hämta listan över providers och se till att Get-PSProvider AccessDb-providern finns.

Get-PSProvider

Följande utdata visas:

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

Se även

Skapa Windows PowerShell providers

Designa en Windows PowerShell-provider