Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit onderwerp beschrijft hoe een provider te creëren waarmee de gebruiker de eigenschappen van items in een datastore kan manipuleren. Als gevolg hiervan wordt dit type provider aangeduid als een Windows PowerShell property provider. Zo behandelt de Registry-provider die door Windows PowerShell wordt geleverd, registersleutelwaarden als eigenschappen van het registersleutelitem. Dit type provider moet de interface System.Management.Automation.Provider.IPropertyCmdletProvider toevoegen aan de implementatie van de .NET-klasse.
Opmerking
Windows PowerShell biedt een sjabloonbestand dat je kunt gebruiken om een Windows PowerShell-provider te ontwikkelen. Het TemplateProvider.cs-bestand is beschikbaar op de Microsoft Windows Software Development Kit voor Windows Vista en .NET Framework 3.0 Runtime Components. Voor downloadinstructies, zie Hoe installeer je Windows PowerShell en download de Windows PowerShell SDK. De gedownloade template is beschikbaar in de <PowerShell Samples-map> . Je zou een kopie van dit bestand moeten maken en die kopie gebruiken om een nieuwe Windows PowerShell-provider aan te maken, waarbij je alle functionaliteit verwijdert die je niet nodig hebt. Voor meer informatie over andere implementaties van Windows PowerShell-providers, zie Designing Your Windows PowerShell Provider.
Waarschuwing
De methoden van je property provider moeten alle objecten schrijven met de System.Management.Automation.Provider.CmdletProvider.Writepropertyobject* -methode.
Het definiëren van de Windows PowerShell-provider
Een property provider moet een .NET-klasse aanmaken die de System.Management.Automation.Provider.IPropertyCmdletProvider-interface ondersteunt. Hier is de standaard klasse-declaratie uit het TemplateProvider.cs-bestand dat door Windows PowerShell wordt geleverd.
Basisfunctionaliteit definiëren
De System.Management.Automation.Provider.IPropertyCmdletProvider-interface kan worden gekoppeld aan elke providerbasisklasse, met uitzondering van de System.Management.Automation.Provider.DriveCmdletProvider-klasse . Voeg de basisfunctionaliteit toe die vereist is voor de basisklasse die je gebruikt. Voor meer informatie over basisklassen, zie Designing Your Windows PowerShell Provider.
Eigenschappen ophalen
Om eigenschappen op te halen, moet de provider de methode System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* implementeren om aanroepen van de Get-ItemProperty cmdlet te ondersteunen. Deze methode haalt de eigenschappen op van het item dat zich bevindt op het gespecificeerde provider-interne pad (volledig gekwalificeerd).
De providerSpecificPickList parameter geeft aan welke eigenschappen moeten worden opgehaald. Als deze parameter leeg is null , moet de methode alle eigenschappen ophalen. Daarnaast schrijft System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* een instantie van een System.Management.Automation.PSObject-object dat een property bag van de opgehaalde eigenschappen vertegenwoordigt. De methode zou niets moeten opleveren.
Het wordt aanbevolen dat de implementatie van System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* de wildcard-uitbreiding van propertynamen voor elk element in de picklist ondersteunt. Om dit te doen, gebruik je de klasse System.Management.Automation.WildcardPattern om de wildcard-patroonmatching uit te voeren.
Hier is de standaardimplementatie van System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* uit het TemplateProvider.cs-bestand dat door Windows PowerShell wordt geleverd.
Dingen om te onthouden bij het implementeren van GetProperty
De volgende voorwaarden kunnen van toepassing zijn op uw implementatie van System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty*:
Bij het definiëren van de providerklasse kan een Windows PowerShell-property provider provider-mogelijkheden ExpandWildcards, Filter, Include of Exclude uit de System.Management.Automation.Provider.Provider.ProviderCapabilities-enumeratie opgeven. In deze gevallen moet de implementatie van de System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* ervoor zorgen dat het pad dat aan de methode wordt doorgegeven voldoet aan de eisen van de gespecificeerde mogelijkheden. Om dit te doen, moet de methode toegang hebben tot de juiste eigenschap, bijvoorbeeld de eigenschappen System.Management.Automation.Provider.CmdletProvider.Exclude* en System.Management.Automation.Provider.CmdletProvider.Include* .
Standaard zouden overrides van deze methode geen lezer moeten ophalen voor objecten die voor de gebruiker verborgen zijn, tenzij de eigenschap System.Management.Automation.Provider.CmdletProvider.Force* is ingesteld op
true. Er moet een foutmelding worden geschreven als het pad een item vertegenwoordigt dat voor de gebruiker verborgen is en System.Management.Automation.Provider.CmdletProvider.Force* is ingesteld opfalse.
Dynamische parameters toevoegen aan de Get-ItemProperty cmdlet
De Get-ItemProperty cmdlet kan extra parameters vereisen die dynamisch worden gespecificeerd tijdens runtime. Om deze dynamische parameters te bieden, moet de Windows PowerShell-property provider de System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* methode implementeren. De path parameter geeft een volledig gekwalificeerd provider-intern pad aan, terwijl de providerSpecificPickList parameter de provider-specifieke eigenschappen specificeert die in de commandoregel zijn ingevoerd. Deze parameter kan leeg zijn null als de eigenschappen naar de cmdlet worden gepijpt. In dit geval levert deze methode een object terug dat eigenschappen en velden heeft met parsingattributen vergelijkbaar met een cmdlet-klasse of een System.Management.Automation.RuntimeDefinedParameterDictionary-object . De Windows PowerShell-runtime gebruikt het geretourneerde object om de parameters aan de cmdlet toe te voegen.
Hier is de standaardimplementatie van System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* uit het TemplateProvider.cs-bestand dat door Windows PowerShell wordt geleverd.
Eigenschappen instellen
Om eigenschappen in te stellen, moet de Windows PowerShell-property provider de methode System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* implementeren om aanroepen van de Set-ItemProperty cmdlet te ondersteunen. Deze methode stelt één of meer eigenschappen van het item in op het opgegeven pad en overschrijft de geleverde eigenschappen indien nodig.
System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* schrijft ook een instantie van een System.Management.Automation.PSObject-object dat een property bag van de bijgewerkte eigenschappen vertegenwoordigt.
Hier is de standaardimplementatie van System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* uit het TemplateProvider.cs-bestand dat door Windows PowerShell wordt geleverd.
Dingen om te onthouden bij het implementeren van Set-ItemProperty
De volgende voorwaarden kunnen van toepassing zijn op een implementatie van System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty*:
Bij het definiëren van de providerklasse kan een Windows PowerShell-property provider provider-mogelijkheden ExpandWildcards, Filter, Include of Exclude uit de System.Management.Automation.Provider.Provider.ProviderCapabilities-enumeratie opgeven. In deze gevallen moet de implementatie van de System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* ervoor zorgen dat het pad dat aan de methode wordt doorgegeven voldoet aan de eisen van de gespecificeerde mogelijkheden. Om dit te doen, moet de methode toegang hebben tot de juiste eigenschap, bijvoorbeeld de eigenschappen System.Management.Automation.Provider.CmdletProvider.Exclude* en System.Management.Automation.Provider.CmdletProvider.Include* .
Standaard zouden overrides van deze methode geen lezer moeten ophalen voor objecten die voor de gebruiker verborgen zijn, tenzij de eigenschap System.Management.Automation.Provider.CmdletProvider.Force* is ingesteld op
true. Er moet een foutmelding worden geschreven als het pad een item vertegenwoordigt dat voor de gebruiker verborgen is en System.Management.Automation.Provider.CmdletProvider.Force* is ingesteld opfalse.Uw implementatie van de System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* methode moet System.Management.Automation.Provider.CmdletProvider.ShouldProcess aanroepen en de returnwaarde verifiëren voordat u wijzigingen aanbrengt in de datastorage. Deze methode wordt gebruikt om de uitvoering van een operatie te bevestigen wanneer er een wijziging in de systeemstatus wordt aangebracht, bijvoorbeeld het hernoemen van bestanden. System.Management.Automation.Provider.CmdletProvider.ShouldProcess stuurt de naam van de te wijzigen resource naar de gebruiker, met de Windows PowerShell-runtime en behandelt eventuele commandoregelinstellingen of voorkeursvariabelen bij het bepalen wat getoond moet worden.
Nadat de aanroep naar System.Management.Automation.Provider.CmdletProvider.ShouldProcess terugkeert
true, moet de System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* methode de methode System.Management.Automation.Provider.CmdletProvider.ShouldContinue aanroepen. Deze methode stuurt een bevestigingsbericht naar de gebruiker om extra feedback te geven die aangeeft dat de bewerking moet worden voortgezet.
Dynamische parameters toevoegen voor de Set-ItemProperty cmdlet
De Set-ItemProperty cmdlet kan extra parameters vereisen die dynamisch worden gespecificeerd tijdens runtime. Om deze dynamische parameters te bieden, moet de Windows PowerShell-property provider de System.Management.Automation.Provider.IPropertyCmdletProvider.SetPropertyDynamicParameters* methode implementeren. Deze methode geeft een object terug dat eigenschappen en velden heeft met parsingattributen vergelijkbaar met een cmdlet-klasse of een System.Management.Automation.RuntimeDefinedParameterDictionary-object . De null waarde kan worden teruggegeven als er geen dynamische parameters worden toegevoegd.
Hier is de standaardimplementatie van System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* uit het TemplateProvider.cs-bestand dat door Windows PowerShell wordt geleverd.
Zuiveringseigendommen
Om eigenschappen te wissen, moet de Windows PowerShell-property provider de methode System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* implementeren om aanroepen van de Clear-ItemProperty cmdlet te ondersteunen. Deze methode stelt één of meer eigenschappen in voor het item dat zich op het opgegeven pad bevindt.
Hier is de standaardimplementatie van System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* uit het TemplateProvider.cs-bestand dat door Windows PowerShell wordt geleverd.
Iets om te onthouden bij het implementeren van ClearProperty
De volgende voorwaarden kunnen van toepassing zijn op uw implementatie van System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty*:
Bij het definiëren van de providerklasse kan een Windows PowerShell-property provider provider-mogelijkheden ExpandWildcards, Filter, Include of Exclude uit de System.Management.Automation.Provider.Provider.ProviderCapabilities-enumeratie opgeven. In deze gevallen moet de implementatie van de System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* ervoor zorgen dat het pad dat aan de methode wordt doorgegeven voldoet aan de eisen van de gespecificeerde mogelijkheden. Om dit te doen, moet de methode toegang hebben tot de juiste eigenschap, bijvoorbeeld de eigenschappen System.Management.Automation.Provider.CmdletProvider.Exclude* en System.Management.Automation.Provider.CmdletProvider.Include* .
Standaard zouden overrides van deze methode geen lezer moeten ophalen voor objecten die voor de gebruiker verborgen zijn, tenzij de eigenschap System.Management.Automation.Provider.CmdletProvider.Force* is ingesteld op
true. Er moet een foutmelding worden geschreven als het pad een item vertegenwoordigt dat voor de gebruiker verborgen is en System.Management.Automation.Provider.CmdletProvider.Force* is ingesteld opfalse.Uw implementatie van de System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* methode moet System.Management.Automation.Provider.CmdletProvider.ShouldProcess aanroepen en de retourwaarde verifiëren voordat u wijzigingen aanbrengt in de dataopslag. Deze methode wordt gebruikt om de uitvoering van een operatie te bevestigen voordat er een wijziging in de systeemstatus wordt aangebracht, zoals het wissen van inhoud. System.Management.Automation.Provider.CmdletProvider.ShouldProcess stuurt de naam van de te wijzigen resource naar de gebruiker, waarbij de Windows PowerShell-runtime rekening houdt met eventuele instellingen of voorkeursvariabelen bij het bepalen wat weergegeven moet worden.
Nadat de aanroep naar System.Management.Automation.Provider.CmdletProvider.ShouldProcess terugkeert
true, moet de System.Management.Automation.Automation.Provider.IPropertyCmdletProvider.ClearProperty* methode de methode System.Management.Automation.Automation.Provider.CmdletProvider.ShouldContinue aanroepen. Deze methode stuurt een bevestigingsbericht naar de gebruiker om extra feedback te geven die aangeeft dat de potentieel gevaarlijke operatie moet worden voortgezet.
Dynamische parameters toevoegen aan de Clear-ItemProperty cmdlet
De Clear-ItemProperty cmdlet kan extra parameters vereisen die dynamisch worden gespecificeerd tijdens runtime. Om deze dynamische parameters te bieden, moet de Windows PowerShell-property provider de System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* implementeren. Deze methode geeft een object terug dat eigenschappen en velden heeft met parsingattributen vergelijkbaar met een cmdlet-klasse of een System.Management.Automation.RuntimeDefinedParameterDictionary-object . De null waarde kan worden teruggegeven als er geen dynamische parameters worden toegevoegd.
Hier is de standaardimplementatie van System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* uit het TemplateProvider.cs-bestand dat door Windows PowerShell wordt geleverd.
Het bouwen van de Windows PowerShell-provider
Bekijk hoe u cmdlets, providers en hostapplicaties registreert.
Zie ook
Design Your Windows PowerShell provider