Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Detta ämne är utgångspunkten för att lära sig hur man skapar en Windows PowerShell-leverantör. Den grundläggande leverantören som beskrivs här tillhandahåller metoder för att starta och stoppa leverantören, och även om denna leverantör inte tillhandahåller ett sätt att komma åt en datalagring eller att hämta eller ställa in data i databasen, tillhandahåller den den grundläggande funktionalitet som krävs av alla leverantörer.
Som nämnts tidigare implementerar den grundläggande vårdgivaren som beskrivs här metoder för att starta och stoppa vårdgivaren. Windows PowerShell-runtime anropar dessa metoder för att initiera och avinitiera leverantören.
Anmärkning
Du kan hitta ett exempel på denna leverantör i AccessDBSampleProvider01.cs filen som tillhandahålls av Windows PowerShell.
Definiera Windows PowerShell Provider Class
Det första steget i att skapa en Windows PowerShell-leverantör är att definiera dess .NET-klass. Denna grundläggande leverantör definierar en klass som kallas AccessDBProvider och härstammar från basklassen System.Management.Automation.Provider.CmdletProvider .
Det rekommenderas att du placerar dina providerklasser i ett Providers namnrymd av ditt API-namnrymd, till exempel xxx.PowerShell.Providers. Denna leverantör använder Microsoft.Samples.PowerShell.Provider namnrymden, där alla Windows PowerShell-leverantörsexempel körs.
Anmärkning
Klassen för en Windows PowerShell-leverantör måste uttryckligen markeras som publik. Klasser som inte är markerade som publika kommer som standard att vara interna och kommer inte att hittas av Windows PowerShell-runtime.
Här är klassdefinitionen för denna grundläggande leverantör:
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : CmdletProvider
Precis innan klassdefinitionen måste du deklarera attributet System.Management.Automation.Provider.CmdletProviderAttribute med syntaxen [CmdletProvider()].
Du kan ställa in 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 specificerar det standardvänliga namnet för leverantören, som användaren kan ändra senare. Den andra parametern specificerar de PowerShell-definierade kapabiliteter som leverantören exponerar för Windows PowerShell-runtime under kommandobearbetningen. De möjliga värdena för leverantörens kapabiliteter definieras av System.Management.Automation.Provider.ProviderCapabilities-uppräkningen . Eftersom detta är en basleverantör stöds inga funktioner.
Anmärkning
Det fullt kvalificerade namnet på Windows PowerShell-leverantören inkluderar assemblernamnet och andra attribut som bestäms av Windows PowerShell vid registrering av leverantören.
Definition Provider-Specific Tillståndsinformation
Basklassen System.Management.Automation.Provider.CmdletProvider och alla härledda klasser betraktas som tillståndslösa eftersom Windows PowerShell-runtime endast skapar leverantörsinstanser vid behov. Därför, om din leverantör kräver full kontroll och statlig underhåll för leverantörsspecifik data, måste den härleda en klass från klassen System.Management.Automation.ProviderInfo . Din härledda klass bör definiera de medlemmar som krävs för att upprätthålla tillståndet så att den leverantörsspecifika datan kan nås när Windows PowerShell-runtime anropar System.Management.Automation.Provider.CmdletProvider.Start* -metoden för att initiera leverantören.
En Windows PowerShell-leverantör kan också upprätthålla anslutningsbaserat tillstånd. För mer information om hur du upprätthåller anslutningstillstånd, se Skapa en PowerShell-enhetsleverantör.
Initiering av leverantören
För att initiera leverantören anropar Windows PowerShell-runtime metoden System.Management.Automation.Provider.CmdletProvider.Start* när Windows PowerShell startas. För det mesta kan din leverantör använda standardimplementeringen av denna metod, 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 System.Management.Automation.Provider.CmdletProvider.Start* -metod som returnerar en modifierad version av System.Management.Automation.ProviderInfo-objektet som skickas till din leverantör. Generellt bör denna metod returnera det tillhandahållna System.Management.Automation.ProviderInfo-objektet som skickats till den eller ett modifierat System.Management.Automation.ProviderInfo-objekt som innehåller annan initieringsinformation.
Denna grundläggande leverantör åsidosätter inte denna metod. Följande kod visar dock standardimplementeringen av denna metod:
Leverantören kan upprätthålla tillståndet för leverantörsspecifik information som beskrivs i Defining Provider-specific Data State. I detta fall måste din implementation åsidosätta System.Management.Automation.Provider.CmdletProvider.Start* -metoden för att returnera en instans av den härledda klassen.
Startparametrar för dynamiska parametrar
Din leverantörsimplementation av System.Management.Automation.Provider.CmdletProvider.Start*- metoden kan kräva ytterligare parametrar. I detta fall bör leverantören åsidosätta System.Management.Automation.Automation.Provider.CmdletProvider.StartDynamicParameters* och returnera ett objekt som har egenskaper och fält med parsningsattribut liknande en cmdlet-klass eller ett System.Management.Automation.RuntimeDefinedParameterDictionary-objekt .
Denna grundläggande leverantör åsidosätter inte denna metod. Följande kod visar dock standardimplementeringen av denna metod:
Avinitialisering av leverantören
För att frigöra resurser som Windows PowerShell-leverantören använder bör din leverantör implementera sin egen System.Management.Automation.Provider.CmdletProvider.Stop* -metod. Denna metod anropas av Windows PowerShell-runtime för att avinitialisera leverantören vid slutet av en session.
Denna grundläggande leverantör åsidosätter inte denna metod. Följande kod visar dock standardimplementeringen av denna metod:
Kodexempel
För komplett exempelkod, se AccessDbProviderSample01 Code Sample.
Testning av Windows PowerShell-leverantören
När din Windows PowerShell-leverantör har registrerats hos Windows PowerShell kan du testa den genom att köra de stödda cmdletarna på kommandoraden. För denna grundläggande leverantör, kör det nya skalet och använd cmdleten Get-PSProvider för att hämta listan över leverantörer och säkerställa att AccessDb-leverantören finns närvarande.
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}