Een eenvoudige Windows PowerShell-provider ontwerpen
Dit onderwerp is het startpunt voor het leren hoe u een provider Windows PowerShell maken. De hier beschreven basisprovider biedt methoden voor het starten en stoppen van de provider. Hoewel deze provider geen manier biedt om toegang te krijgen tot een gegevensopslag of om de gegevens in het gegevensopslag op te halen of in te stellen, biedt deze de basisfunctionaliteit die alle providers nodig hebben.
Zoals eerder vermeld, implementeert de hier beschreven basisprovider methoden voor het starten en stoppen van de provider. De Windows PowerShell roept deze methoden aan om de provider te initialiseren en uninitialiseren.
Notitie
U vindt een voorbeeld van deze provider in het bestand AccessDBSampleProvider01.cs van Windows PowerShell.
De klasse Windows PowerShell provider definiëren
De eerste stap bij het maken van Windows PowerShell provider is het definiëren van de .NET-klasse. Deze basisprovider definieert een klasse met de AccessDBProvider naam die is afgeleid van de basisklasse System.Management.Automation.Provider.Cmdletprovider.
Het is raadzaam om uw providerklassen in een naamruimte van uw API-naamruimte te plaatsen, bijvoorbeeld Providers xxx.PowerShell.Providers. Deze provider gebruikt de Microsoft.Samples.PowerShell.Provider naamruimte, waarin alle voorbeelden Windows PowerShell provider worden uitgevoerd.
Notitie
De klasse voor een Windows PowerShell-provider moet expliciet als openbaar zijn gemarkeerd. Klassen die niet als openbaar zijn gemarkeerd, worden standaard ingesteld op intern en worden niet gevonden door de Windows PowerShell runtime.
Dit is de klassedefinitie voor deze basisprovider:
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : CmdletProvider
Net vóór de klassedefinitie moet u het kenmerk System.Management.Automation.Provider.Cmdletproviderattribute declaren met de syntaxis [CmdletProvider()].
U kunt kenmerktrefwoorden instellen om de klasse indien nodig verder te declaren. U ziet dat het hier gedeclareerde kenmerk System.Management.Automation.Provider.Cmdletproviderattribute twee parameters bevat. De eerste kenmerkparameter geeft de standaardvriendelijke naam voor de provider op, die de gebruiker later kan wijzigen. De tweede parameter geeft de door Windows PowerShell gedefinieerde mogelijkheden aan die de provider tijdens de verwerking van de opdracht Windows PowerShell de runtime. De mogelijke waarden voor de mogelijkheden van de provider worden gedefinieerd door de system.Management.Automation.Provider.Providercaperabilities-samenvatting. Omdat dit een basisprovider is, worden er geen mogelijkheden ondersteund.
Notitie
De volledig gekwalificeerde naam van de Windows PowerShell-provider bevat de assemblynaam en andere kenmerken die worden bepaald door Windows PowerShell bij de registratie van de provider.
Statusgegevens Provider-Specific definiëren
De basisklasse System.Management.Automation.Provider.Cmdletprovider en alle afgeleide klassen worden als staatloos beschouwd omdat de Windows PowerShell-runtime alleen provider-exemplaren maakt als dat nodig is. Als uw provider daarom volledig beheer en statusonderhoud vereist voor providerspecifieke gegevens, moet deze een klasse afleiden van de klasse System.Management.Automation.Providerinfo. De afgeleide klasse moet de leden definiëren die nodig zijn om de status te behouden, zodat de providerspecifieke gegevens toegankelijk zijn wanneer de Windows PowerShell-runtime de methode System.Management.Automation.Provider.Cmdletprovider.Start* aanroept om de provider te initialiseren.
Een Windows PowerShell-provider kan ook de status op basis van een verbinding onderhouden. Zie creating a PowerShell Drive Provider (Een PowerShell-stationprovider maken) voor meer informatie over het onderhouden van de verbindingstoestand.
De provider initialiseren
Als u de provider wilt initialiseren, Windows PowerShell runtime de methode System.Management.Automation.Provider.Cmdletprovider.Start* aan wanneer Windows PowerShell wordt gestart. Voor het grootste deel kan uw provider de standaard implementatie van deze methode gebruiken, waarmee eenvoudig het object System.Management.Automation.Providerinfo wordt retourneert dat uw provider beschrijft. Als u echter aanvullende initialisatiegegevens wilt toevoegen, moet u uw eigen System.Management.Automation.Provider.Cmdletprovider.Start*-methode implementeren die een gewijzigde versie retourneert van het object System.Management.Automation.Providerinfo dat aan uw provider wordt doorgegeven. Over het algemeen moet deze methode het opgegeven System.Management.Automation.Providerinfo-object retourneren dat aan het object is doorgegeven of een gewijzigd System.Management.Automation.Providerinfo-object dat andere initialisatiegegevens bevat.
Deze basisprovider overschrijven deze methode niet. De volgende code toont echter de standaard implementatie van deze methode:
De provider kan de status van providerspecifieke informatie onderhouden, zoals beschreven in Providerspecifieke gegevenstoestand definiëren. In dit geval moet uw implementatie de methode System.Management.Automation.Provider.Cmdletprovider.Start* overschrijven om een exemplaar van de afgeleide klasse te retourneren.
Dynamische parameters starten
Voor de provider-implementatie van de methode System.Management.Automation.Provider.Cmdletprovider.Start* zijn mogelijk extra parameters vereist. In dit geval moet de provider de methode System.Management.Automation.Provider.Cmdletprovider.Startdynamicparameters* overschrijven en een object retourneren dat eigenschappen en velden heeft met parseerkenmerken die vergelijkbaar zijn met een cmdlet-klasse of een System.Management.Automation.Runtimedefinedparameterdictionary-object.
Deze basisprovider overschrijven deze methode niet. De volgende code toont echter de standaard implementatie van deze methode:
De provider niet-ialiseren
Als u resources wilt vrij Windows PowerShell de provider gebruikt, moet uw provider een eigen System.Management.Automation.Provider.Cmdletprovider.Stop*-methode implementeren. Deze methode wordt aangeroepen door de Windows PowerShell runtime om de provider aan het einde van een sessie uninitialiseren.
Deze basisprovider overschrijven deze methode niet. De volgende code toont echter de standaard implementatie van deze methode:
Codevoorbeeld
Zie AccessDbProviderSample01-codevoorbeeldvoor de volledige voorbeeldcode.
De Windows PowerShell-provider testen
Zodra uw Windows PowerShell provider is geregistreerd bij Windows PowerShell, kunt u deze testen door de ondersteunde cmdlets uit te voeren op de opdrachtregel. Voer voor deze basisprovider de nieuwe shell uit en gebruik de cmdlet om de lijst met providers op te halen en ervoor te zorgen dat Get-PSProvider de AccessDb-provider aanwezig is.
Get-PSProvider
De volgende uitvoer wordt weergegeven:
Name Capabilities Drives
---- ------------ ------
AccessDb None {}
Alias ShouldProcess {Alias}
Environment ShouldProcess {Env}
FileSystem Filter, ShouldProcess {C, Z}
Function ShouldProcess {function}
Registry ShouldProcess {HKLM, HKCU}
Zie ook
Feedback
Feedback verzenden en weergeven voor