Een Windows PowerShell-eigenschapsprovider maken
In dit onderwerp wordt beschreven hoe u een provider maakt waarmee de gebruiker de eigenschappen van items in een gegevensopslag kan bewerken. Als gevolg hiervan wordt dit type provider aangeduid als een Windows PowerShell-eigenschapsprovider. De registerprovider van de Windows PowerShell verwerkt bijvoorbeeld 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.
Notitie
Windows PowerShell biedt een sjabloonbestand dat u kunt gebruiken om een Windows PowerShell ontwikkelen. Het bestand TemplateProvider.cs is beschikbaar op de Microsoft Windows Software Development Kit voor Windows Vista en .NET Framework 3.0 Runtime Components. Zie How to Install Windows PowerShell and Download the Windows PowerShell SDK voor downloadinstructies. De gedownloade sjabloon is beschikbaar in de <PowerShell Samples> map . U moet een kopie van dit bestand maken en de kopie gebruiken voor het maken van een nieuwe Windows PowerShell-provider, waardoor alle functionaliteit die u niet nodig hebt, wordt verwijderd. Zie Uw Windows PowerShell provider ontwerpen voor meer informatie over andere implementaties van Windows PowerShell-provider.
Waarschuwing
De methoden van uw eigenschapsprovider moeten objecten schrijven met behulp van de methode System.Management.Automation.Provider.Cmdletprovider.Writepropertyobject*.
De provider Windows PowerShell definiƫren
Een eigenschapsprovider moet een .NET-klasse maken die ondersteuning biedt voor de interface System.Management.Automation.Provider.Ipropertycmdletprovider. Hier is de standaardklassedeclaratie van het bestand TemplateProvider.cs dat wordt geleverd door Windows PowerShell.
Basisfunctionaliteit definiƫren
De interface System.Management.Automation.Provider.Ipropertycmdletprovider kan worden gekoppeld aan een van de providerbasisklassen, met uitzondering van de klasse System.Management.Automation.Provider.Drivecmdletprovider. Voeg de basisfunctionaliteit toe die is vereist voor de basisklasse die u gebruikt. Zie Uw Windows PowerShell-provider ontwerpen voor meer informatie over basisklassen.
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. Met deze methode worden de eigenschappen opgehaald van het item dat zich op het opgegeven provider-interne pad (volledig gekwalificeerd) bevindt.
De providerSpecificPickList
parameter geeft aan welke eigenschappen moeten worden opgehaald. Als deze parameter is null
of leeg is, moet de methode alle eigenschappen ophalen. Daarnaast schrijft System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* een exemplaar van een System.Management.Automation.PSObject-object dat een eigenschappentas van de opgehaalde eigenschappen vertegenwoordigt. De methode moet niets retourneren.
Het wordt aanbevolen dat de implementatie van System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* ondersteuning biedt voor de uitbreiding van eigenschapsnamen met jokertekens voor elk element in de keuzelijst. Gebruik hiervoor de klasse System.Management.Automation.Wildcardpattern om het jokertekenpatroon te matchen.
Hier is de standaard implementatie van System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* uit het bestand TemplateProvider.cs van Windows PowerShell.
Dingen die u moet onthouden over het implementeren van GetProperty
De volgende voorwaarden kunnen van toepassing zijn op uw implementatie van System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty*:
Wanneer u de providerklasse definieert, kan een Windows PowerShell-eigenschapsprovider providermogelijkheden van ExpandWildcards, Filter, Include of Exclude declareer uit de system.Management.Automation.Provider.Providercaperabilities-enumeration. In dergelijke gevallen moet de implementatie van de methode System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* ervoor zorgen dat het pad dat wordt doorgegeven aan de methode voldoet aan de vereisten van de opgegeven mogelijkheden. Hiervoor 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 mogen overschrijvingen van deze methode geen lezer ophalen voor objecten die verborgen zijn voor de gebruiker, tenzij de eigenschap System.Management.Automation.Provider.Cmdletprovider.Force* is ingesteld op
true
. Er moet een fout worden geschreven als het pad een item vertegenwoordigt dat verborgen is voor de gebruiker en System.Management.Automation.Provider.Cmdletprovider.Force* is ingesteld opfalse
.
Dynamische parameters koppelen aan de Get-ItemProperty cmdlet
De Get-ItemProperty
cmdlet vereist mogelijk aanvullende parameters die dynamisch zijn opgegeven tijdens runtime. Om deze dynamische parameters op te geven, moet de Windows PowerShell eigenschapsprovider de methode System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* implementeren. De parameter geeft een volledig gekwalificeerde provider-intern pad aan, terwijl de parameter de providerspecifieke eigenschappen opgeeft die zijn ingevoerd path
providerSpecificPickList
op de opdrachtregel. Deze parameter kan leeg null
zijn of zijn als de eigenschappen worden doorspijpt naar de cmdlet . In dit geval retourneert deze methode een object met eigenschappen en velden met parseringskenmerken die vergelijkbaar zijn met een cmdlet-klasse of een System.Management.Automation.Runtimedefinedparameterdictionary-object. De Windows PowerShell runtime gebruikt het geretourneerde object om de parameters toe te voegen aan de cmdlet .
Hier is de standaard implementatie van System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* uit het bestand TemplateProvider.cs van Windows PowerShell.
Eigenschappen van instelling
Als u eigenschappen wilt instellen, moet de Windows PowerShell-eigenschapsprovider de methode System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* implementeren om aanroepen van de Set-ItemProperty
cmdlet te ondersteunen. Met deze methode stelt u een of meer eigenschappen van het item op het opgegeven pad in en overschrijft u indien nodig de opgegeven eigenschappen.
System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* schrijft ook een exemplaar van een System.Management.Automation.PSObject-object dat een eigenschappenset van de bijgewerkte eigenschappen vertegenwoordigt.
Hier is de standaard implementatie van System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* uit het bestand TemplateProvider.cs van Windows PowerShell.
Dingen om te onthouden over het implementeren van Set-ItemProperty
De volgende voorwaarden kunnen van toepassing zijn op een implementatie van System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty*:
Wanneer u de providerklasse definieert, kan een Windows PowerShell-eigenschapsprovider providermogelijkheden van ExpandWildcards, Filter, Include of Exclude declareer uit de system.Management.Automation.Provider.Providercaperabilities-enumeration. In dergelijke gevallen moet de implementatie van de methode System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* ervoor zorgen dat het pad dat wordt doorgegeven aan de methode voldoet aan de vereisten van de opgegeven mogelijkheden. Hiervoor 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 mogen overschrijvingen van deze methode geen lezer ophalen voor objecten die verborgen zijn voor de gebruiker, tenzij de eigenschap System.Management.Automation.Provider.Cmdletprovider.Force* is ingesteld op
true
. Er moet een fout worden geschreven als het pad een item vertegenwoordigt dat verborgen is voor de gebruiker en System.Management.Automation.Provider.Cmdletprovider.Force* is ingesteld opfalse
.Uw implementatie van de methode System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* moet System.Management.Automation.Provider.Cmdletprovider.ShouldProcess aanroepen en de retourwaarde controleren voordat u wijzigingen aan het gegevensopslag aanroept. Deze methode wordt gebruikt om de uitvoering van een bewerking te bevestigen wanneer een wijziging wordt aangebracht in de systeemtoestand, bijvoorbeeld het wijzigen van de naam van bestanden. System.Management.Automation.Provider.Cmdletprovider.ShouldProcess verzendt de naam van de resource die moet worden gewijzigd naar de gebruiker, met de Windows PowerShell-runtime en verwerkt opdrachtregelinstellingen of voorkeursvariabelen om te bepalen wat er moet worden weergegeven.
Na de aanroep van System.Management.Automation.Provider.Cmdletprovider.ShouldProcess wordt door de methode
true
System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* de methode System.Management.Automation.Provider.Cmdletprovider.ShouldContinue aanroept. Met deze methode wordt een bevestigingsbericht naar de gebruiker gestuurd om aanvullende feedback toe te staan om aan te geven dat de bewerking moet worden voortgezet.
Dynamische parameters koppelen voor de Set-ItemProperty cmdlet
De Set-ItemProperty
cmdlet vereist mogelijk aanvullende parameters die dynamisch zijn opgegeven tijdens runtime. Om deze dynamische parameters op te geven, moet de Windows PowerShell-eigenschapsprovider de methode System.Management.Automation.Provider.Ipropertycmdletprovider.Setpropertydynamicparameters* implementeren. Deze methode retourneert een object met eigenschappen en velden met parseringskenmerken die vergelijkbaar zijn met een cmdlet-klasse of een System.Management.Automation.Runtimedefinedparameterdictionary-object. De null
waarde kan worden geretourneerd als er geen dynamische parameters moeten worden toegevoegd.
Hier is de standaard implementatie van System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* uit het bestand TemplateProvider.cs van Windows PowerShell.
Eigenschappen wissen
Als u eigenschappen wilt verwijderen, moet de Windows PowerShell-eigenschapsprovider de methode System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* implementeren om aanroepen van de Clear-ItemProperty
cmdlet te ondersteunen. Met deze methode stelt u een of meer eigenschappen in voor het item dat zich op het opgegeven pad bevindt.
Hier is de standaard implementatie van System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* uit het bestand TemplateProvider.cs van Windows PowerShell.
Wat u moet onthouden over het implementeren van ClearProperty
De volgende voorwaarden kunnen van toepassing zijn op uw implementatie van System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty*:
Wanneer u de providerklasse definieert, kan een Windows PowerShell-eigenschapsprovider providermogelijkheden van ExpandWildcards, Filter, Include of Exclude declareer uit de system.Management.Automation.Provider.Providercaperabilities-enumeration. In dergelijke gevallen moet de implementatie van de methode System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* ervoor zorgen dat het pad dat wordt doorgegeven aan de methode voldoet aan de vereisten van de opgegeven mogelijkheden. Hiervoor 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 mogen overschrijvingen van deze methode geen lezer ophalen voor objecten die verborgen zijn voor de gebruiker, tenzij de eigenschap System.Management.Automation.Provider.Cmdletprovider.Force* is ingesteld op
true
. Er moet een fout worden geschreven als het pad een item vertegenwoordigt dat verborgen is voor de gebruiker en System.Management.Automation.Provider.Cmdletprovider.Force* is ingesteld opfalse
.Uw implementatie van de methode System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* moet System.Management.Automation.Provider.Cmdletprovider.ShouldProcess aanroepen en de retourwaarde controleren voordat u wijzigingen aan het gegevensopslag aanroept. Deze methode wordt gebruikt om de uitvoering van een bewerking te bevestigen voordat een wijziging wordt aangebracht in de systeemtoestand, zoals het wissen van inhoud. System.Management.Automation.Provider.Cmdletprovider.ShouldProcess verzendt de naam van de resource die moet worden gewijzigd naar de gebruiker, waarbij de Windows PowerShell-runtime rekening houdt met opdrachtregelinstellingen of voorkeursvariabelen om te bepalen wat er moet worden weergegeven.
Na de aanroep van System.Management.Automation.Provider.Cmdletprovider.ShouldProcess wordt door de methode
true
System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* de methode System.Management.Automation.Provider.Cmdletprovider.Clearproperty* aanroept. Met deze methode wordt een bevestigingsbericht naar de gebruiker gestuurd om aanvullende feedback toe te staan om aan te geven dat de mogelijk gevaarlijke bewerking moet worden voortgezet.
Dynamische parameters koppelen aan de Clear-ItemProperty cmdlet
De Clear-ItemProperty
cmdlet vereist mogelijk aanvullende parameters die dynamisch zijn opgegeven tijdens runtime. Als u deze dynamische parameters wilt opgeven, moet de Windows PowerShell-eigenschapsprovider de methode System.Management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters* implementeren. Deze methode retourneert een object met eigenschappen en velden met parseringskenmerken die vergelijkbaar zijn met een cmdlet-klasse of een System.Management.Automation.Runtimedefinedparameterdictionary-object. De null
waarde kan worden geretourneerd als er geen dynamische parameters moeten worden toegevoegd.
Hier is de standaard implementatie van System.Management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters* uit het bestand TemplateProvider.cs dat door de Windows PowerShell.
De Windows PowerShell bouwen
Zie Cmdlets, providers en hosttoepassingen registreren.
Zie ook
Uw Windows PowerShell ontwerpen
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor