Delen via


Ontwerpen van je Windows PowerShell-provider

Je zou een Windows PowerShell-provider moeten implementeren als je product of configuratie een set opgeslagen data blootlegt, zoals een database die de gebruiker wil navigeren of doorbladeren. Bovendien, als je product een container biedt, zelfs als het geen multilevel container is, is het logisch om een Windows PowerShell-provider te implementeren. Je zou bijvoorbeeld een Windows PowerShell containerprovider kunnen implementeren als het cmdlet-werkwoord Kopiëren, Verplaatsen, Hernoemen, Nieuw of Verwijderen logisch is als bewerking op je product of configuratiegegevens.

Windows PowerShell-paden identificeren je provider

De Windows PowerShell-runtime gebruikt Windows PowerShell-paden om toegang te krijgen tot de juiste Windows PowerShell-provider. Wanneer een cmdlet een van deze paden specificeert, weet de runtime welke provider te gebruiken om toegang te krijgen tot de bijbehorende datastore. Deze paden omvatten drive-gekwalificeerde paden, zorgverlenergekwalificeerde paden, verzekeraar-directe paden en zorgverlener-interne paden. Elke Windows PowerShell-provider moet één of meer van deze paden ondersteunen.

Voor meer informatie over Windows PowerShell-paden, zie Hoe Windows PowerShell werkt.

Een Drive-Qualified pad definiëren

Om de gebruiker toegang te geven tot gegevens die zich op een fysieke schijf bevinden, moet je Windows PowerShell-provider een schijf-gekwalificeerd pad ondersteunen. Dit pad begint met de naam van de schijf gevolgd door een dubbele punt (:), bijvoorbeeld mydrive:\abc\bar.

Een Provider-Qualified pad definiëren

Om de Windows PowerShell-runtime toe te staan de provider te initialiseren en weer te deinitialiseren, moet je Windows PowerShell-provider een provider-gekwalificeerd pad ondersteunen. FileSystem::\uncshare\abc\bar is bijvoorbeeld het provider-gekwalificeerde pad voor de FileSystem-provider die door Windows PowerShell wordt geleverd.

Een Provider-Direct pad definiëren

Om externe toegang tot je Windows PowerShell-provider mogelijk te maken, zou deze een provider-direct pad moeten ondersteunen dat direct naar de Windows PowerShell-provider voor de huidige locatie wordt doorgegeven. Zo kan de registry Windows PowerShell-provider \\server\regkeypath gebruiken als provider-direct pad.

Een Provider-Internal pad definiëren

Om de provider-cmdlet toegang te geven tot data via niet-Windows PowerShell application programming interfaces (API's), moet je Windows PowerShell-provider een provider-intern pad ondersteunen. Dit pad wordt aangegeven na de "::" in het provider-gekwalificeerde pad. Bijvoorbeeld, het provider-interne pad voor de FileSystem Windows PowerShell-provider is \\uncshare\abc\bar.

Opgeslagen gegevens wijzigen

Wanneer methoden worden overgeschreven die de onderliggende dataopslag wijzigen, roep dan altijd de System.Management.Automation.Provider.CmdletProvider.WriteItemObject* methode aan waarbij de meest up-to-datum versie van het item door die methode wordt gewijzigd. De providerinfrastructuur bepaalt of het itemobject aan de pijplijn moet worden doorgegeven, bijvoorbeeld wanneer de gebruiker de -PassThru-parameter specificeert. Als het ophalen van het meest up-to-datum item een kostbare operatie is (qua prestaties), kun je de Context.PassThru-eigenschap testen om te bepalen of je daadwerkelijk het resulterende item moet schrijven.

Kies een basisklasse voor je zorgverlener

Windows PowerShell biedt een aantal basisklassen die je kunt gebruiken om je eigen Windows PowerShell-provider te implementeren. Kies bij het ontwerpen van een provider de basisklasse, beschreven in deze sectie, die het beste aansluit bij jouw wensen.

Elke Windows PowerShell-providerbasisklasse stelt een set cmdlets beschikbaar. Deze sectie beschrijft de cmdlets, maar niet hun parameters.

Met behulp van de sessietoestand maakt de Windows PowerShell-runtime verschillende locatie-cmdlets beschikbaar voor bepaalde Windows PowerShell-providers, zoals de Get-Location, Set-Location, Pop-Location, en Push-Location cmdlets. Je kunt de Get-Help cmdlet gebruiken om informatie te verkrijgen over deze locatie-cmdlets.

CmdletProvider Base Class

De System.Management.Automation.Provider.CmdletProvider-klasse definieert een basis Windows PowerShell-provider. Deze klasse ondersteunt de provider-declaratie en biedt een aantal eigenschappen en methoden die beschikbaar zijn voor alle Windows PowerShell-providers. De klasse wordt door de Get-PSProvider cmdlet aangeroepen om alle beschikbare providers voor een sessie te vermelden. De implementatie van deze cmdlet wordt geleverd door de sessietoestand.

Opmerking

Windows PowerShell-providers zijn beschikbaar voor alle Windows PowerShell-taalscopes.

DriveCmdletProvider Base Class

De System.Management.Automation.Provider.DriveCmdletProvider-klasse definieert een Windows PowerShell-schijfprovider die bewerkingen ondersteunt zoals het toevoegen van nieuwe schijven, het verwijderen van bestaande schijven en het initialiseren van standaardschijven. Zo initialiseert de FileSystem-provider van Windows PowerShell schijven voor alle volumes die worden gemount, zoals harde schijven en cd/dvd-stations.

Deze klasse is afgeleid van de System.Management.Automation.Provider.CmdletProvider-basisklasse . De volgende tabel geeft de cmdlets weer die door deze klasse worden blootgesteld. Naast de genoemde functies is de Get-PSDrive cmdlet (blootgesteld door sessiestatus) een gerelateerde cmdlet die wordt gebruikt om beschikbare schijven op te halen.

Cmdlet Definition
New-PSDrive Maakt een nieuwe drive aan voor de sessie en streamt drive-informatie.
Remove-PSDrive Verwijdert een drive uit de sessie.

ItemCmdletProvider Base Class

De System.Management.Automation.Provider.ItemCmdletProvider-klasse definieert een Windows PowerShell-itemprovider die bewerkingen uitvoert op de afzonderlijke items van de datastore, en deze neemt geen container- of navigatiemogelijkheden aan. Deze klasse is afgeleid van de System.Management.Automation.Provider.DriveCmdletProvider-basisklasse . De volgende tabel geeft de cmdlets weer die door deze klasse worden blootgesteld.

Cmdlet Definition
Clear-Item Verwijdert de huidige inhoud van items op de opgegeven locatie en vervangt deze door de door de aanbieder opgegeven "clear"-waarde. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.
Get-Item Haalt items op van de opgegeven locatie en streamt de resulterende objecten.
Invoke-Item Roept de standaardactie voor het item op op het opgegeven pad.
Set-Item Zet een item op de opgegeven locatie met de aangegeven waarde. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.
Resolve-Path Lost de jokers op voor een Windows PowerShell-pad en streamt padinformatie.
Test-Path Toetst het opgegeven pad en geeft terug true als het bestaat en false anders. Deze cmdlet is geïmplementeerd om de IsContainer parameter voor de System.Management.Automation.Provider.CmdletProvider.WriteItemObject* methode te ondersteunen.

ContainerCmdletProvider Base Class

De klasse System.Management.Automation.Provider.ContainerCmdletProvider definieert een Windows PowerShell containerprovider die een container voor data store-items aan de gebruiker blootstelt. Wees je ervan bewust dat een Windows PowerShell-containerprovider alleen gebruikt kan worden als er één container is (geen geneste containers) met items erin. Als er geneste containers zijn, moet je een Windows PowerShell-navigatieprovider implementeren.

Deze klasse is afgeleid van de System.Management.Automation.Provider.ItemCmdletProvider-basisklasse . De volgende tabel definieert de cmdlets die door deze klasse zijn geïmplementeerd.

Cmdlet Definition
Copy-Item Kopieert items van de ene locatie naar de andere. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.
Get-ChildItem Haalt de kinditems op op de opgegeven locatie en streamt ze als objecten.
New-Item Maakt nieuwe items aan op de opgegeven locatie en streamt het resulterende object.
Remove-Item Verwijdert items van de opgegeven locatie.
Rename-Item Hernoem een item op de opgegeven locatie. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.

De System.Management.Automation.Provider.NavigationCmdletProvider-klasse definieert een Windows PowerShell-navigatieprovider die bewerkingen uitvoert voor items die meer dan één container gebruiken. Deze klasse is afgeleid van de System.Management.Automation.Provider.ContainerCmdletProvider-basisklasse . De volgende tabel geeft een overzicht van de cmdlets die door deze klasse worden blootgesteld.

Cmdlet Definition
Combine-Path Combineert twee paden tot één pad, met behulp van een provider-specifieke scheidingslijn tussen paden. Deze cmdlet streamt strings.
Move-Item Verplaatst items naar de opgegeven locatie. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.

Een gerelateerde cmdlet is de basis-Parse-Path-cmdlet die door Windows PowerShell wordt geleverd. Deze cmdlet kan worden gebruikt om een Windows PowerShell-pad te parsen om de Parent parameter te ondersteunen. Het streamt de parent path-string.

Selecteer providerinterfaces om te ondersteunen

Naast het afleiden van een van de Windows PowerShell-basisklassen, kan je Windows PowerShell-provider andere functionaliteit ondersteunen door af te leiden van een of meer van de volgende providerinterfaces. Deze sectie definieert die interfaces en de cmdlets die door elk worden ondersteund. Het beschrijft niet de parameters voor de interface-ondersteunde cmdlets. Informatie over cmdlet-parameters is online beschikbaar via de en Get-Help cmdletsGet-Command.

IContentCmdletProvider

De System.Management.Automation.Provider.IContentCmdletProvider-interface definieert een contentprovider die bewerkingen uitvoert op de inhoud van een data-item. De volgende tabel geeft een overzicht van de cmdlets die door deze interface worden blootgesteld.

Cmdlet Definition
Add-Content Voeg de aangegeven waardelengtes toe aan de inhoud van het opgegeven item. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.
Clear-Content Stelt de inhoud van het opgegeven item in op de "clear"-waarde. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.
Get-Content Haalt de inhoud van de gespecificeerde items op en streamt de resulterende objecten.
Set-Content Vervangt de bestaande inhoud van de gespecificeerde items. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.

IPropertyCmdletProvider

De System.Management.Automation.Provider.IPropertyCmdletProvider-interface definieert een eigenschap Windows PowerShell-provider die bewerkingen uitvoert op de eigenschappen van items in de datastore. De volgende tabel geeft een overzicht van de cmdlets die door deze interface worden blootgesteld.

Opmerking

De Path parameter op deze cmdlets geeft een pad naar een item aan in plaats van een eigenschap te identificeren.

Cmdlet Definition
Clear-ItemProperty Stelt eigenschappen van de gespecificeerde items in op de "clear"-waarde. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.
Get-ItemProperty Haalt eigenschappen op van de opgegeven items en streamt de resulterende objecten.
Set-ItemProperty Stelt eigenschappen van de gespecificeerde items in met de aangegeven waarden. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.

IDynamicPropertyCmdletProvider

De System.Management.Automation.Provider.IDynamicPropertyCmdletProvider-interface , afgeleid van System.Management.Automation.Provider.IPropertyCmdletProvider, definieert een provider die dynamische parameters specificeert voor de ondersteunde cmdlets. Dit type provider verwerkt operaties waarvoor eigenschappen tijdens runtime kunnen worden gedefinieerd, bijvoorbeeld een nieuwe eigenschapsoperatie. Dergelijke bewerkingen zijn niet mogelijk op items met statisch gedefinieerde eigenschappen. De volgende tabel geeft een overzicht van de cmdlets die door deze interface worden blootgesteld.

Cmdlet Definition
Copy-ItemProperty Kopieert een eigenschap van het opgegeven item naar een ander item. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.
Move-ItemProperty Verplaatst een eigenschap van het opgegeven item naar een ander item. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.
New-ItemProperty Maakt een eigenschap aan op de opgegeven items en streamt de resulterende objecten.
Remove-ItemProperty Verwijdert een eigenschap voor de opgegeven items.
Rename-ItemProperty Hernoemt een eigenschap van de gespecificeerde items. Deze cmdlet laat een uitvoerobject niet door de pijplijn lopen tenzij de parameter is PassThru gespecificeerd.

ISecurityDescriptorCmdletProvider

De System.Management.Automation.Provider.ISecurityDescriptorCmdletProvider-interface voegt beveiligingsdescriptorfunctionaliteit toe aan een provider. Deze interface stelt de gebruiker in staat om beveiligingsdescriptorinformatie voor een item in de datastore te verkrijgen en in te stellen. De volgende tabel geeft een overzicht van de cmdlets die door deze interface worden blootgesteld.

Cmdlet Definition
Get-Acl Haalt de informatie op in een toegangscontrolelijst (ACL), die deel uitmaakt van een beveiligingsdescriptor die wordt gebruikt om besturingssysteembronnen te beschermen, bijvoorbeeld een bestand of object.
Set-Acl Stelt de informatie in voor een ACL. Het is in de vorm van een instantie van System.Security.AccessControl.ObjectSecurity op het item(en) dat is aangewezen voor het opgegeven pad. Deze cmdlet kan informatie instellen over bestanden, sleutels en subsleutels in het register, of elk ander provideritem, als de Windows PowerShell-provider het instellen van beveiligingsinformatie ondersteunt.

Zie ook

Windows PowerShell-providers aanmaken

Hoe Windows PowerShell werkt

Windows PowerShell SDK