Designa en Windows PowerShell-provider

Du bör implementera en Windows PowerShell provider om din produkt eller konfiguration exponerar en uppsättning lagrade data, till exempel en databas som användaren vill navigera i eller bläddra i. Om din produkt tillhandahåller en container, även om den inte är en container på flera nivåer, är det dessutom klokt att implementera en Windows PowerShell provider. Du kanske till exempel vill implementera en Windows PowerShell-containerprovider om cmdlet-verbet Kopiera, Flytta, Byt namn, Ny eller Ta bort är en åtgärd på dina produkt- eller konfigurationsdata.

Windows PowerShell Sökvägar identifierar din leverantör

Körningen Windows PowerShell använder Windows PowerShell för att få åtkomst till lämplig Windows PowerShell provider. När en cmdlet anger en av dessa sökvägar vet körningen vilken provider som ska användas för att komma åt det associerade datalagret. Dessa sökvägar omfattar enhetskvalificerade sökvägar, leverantörskvalificerade sökvägar, provider-direkta sökvägar och provider-interna sökvägar. Varje Windows PowerShell måste ha stöd för en eller flera av dessa sökvägar.

Mer information om Windows PowerShell finns i Så här Windows PowerShell fungerar.

Definiera en Drive-Qualified sökväg

Om du vill ge användaren åtkomst till data som finns på en fysisk enhet Windows PowerShell providern ha stöd för en enhetskvalificerad sökväg. Den här sökvägen börjar med enhetsnamnet följt av ett kolon (:) till exempel mydrive:\abc\bar.

Definiera en Provider-Qualified sökväg

För att Windows PowerShell tillåta att Windows PowerShell initierar och oinitierar providern måste din Windows PowerShell ha stöd för en leverantörskvalificerad sökväg. FileSystem:: \uncshare\abc\bar är till exempel den providerkvalificerade sökvägen för filsystemsprovidern som \ används Windows PowerShell.

Definiera en Provider-Direct sökväg

För att tillåta fjärråtkomst till din Windows PowerShell bör den ha stöd för en direkt providersökväg som skickas direkt till Windows PowerShell för den aktuella platsen. Registertjänstleverantören kan till exempel Windows PowerShell \ \server\regkeypath som en direkt providersökväg.

Definiera en Provider-Internal sökväg

Om du vill tillåta att provider-cmdleten får åtkomst till data med hjälp Windows PowerShell API:er (Application Programming Interfaces) bör Windows PowerShell-providern ha stöd för en intern providersökväg. Den här sökvägen anges efter "::" i den providerkvalificerade sökvägen. Den interna sökvägen för filsystemet är till exempel Windows PowerShell \ \uncshare\abc\bar.

Ändra lagrade data

När du åsidosätter metoder som ändrar det underliggande datalagret anropar du alltid metoden System.Management.Automation.Provider.Cmdletprovider.Writeitemobject* med den senaste versionen av objektet som ändrats med den metoden. Providerinfrastrukturen avgör om objektobjektet måste skickas till pipelinen, till exempel när användaren anger parametern -PassThru. Om hämtning av det senaste objektet är en kostsam åtgärd (prestandamässigt) kan du testa egenskapen Context.PassThru för att avgöra om du faktiskt behöver skriva det resulterande objektet.

Välj en basklass för din leverantör

Windows PowerShell innehåller ett antal basklasser som du kan använda för att implementera din egen Windows PowerShell provider. När du utformar en leverantör väljer du den basklass som beskrivs i det här avsnittet och som passar bäst för dina behov.

Varje Windows PowerShell providerns basklass gör en uppsättning cmdlets tillgängliga. Det här avsnittet beskriver cmdletarna, men beskriver inte deras parametrar.

Med sessionstillståndet gör Windows PowerShell-körningen flera plats-cmdlets tillgängliga för vissa Windows PowerShell providers, till exempel Get-Location Set-Location Pop-Location cmdletarna , , Push-Location och . Du kan använda Get-Help cmdleten för att hämta information om dessa plats-cmdlets.

CmdletProvider, basklass

Klassen System.Management.Automation.Provider.Cmdletprovider definierar en grundläggande Windows PowerShell provider. Den här klassen stöder leverantörsdeklarationen och tillhandahåller ett antal egenskaper och metoder som är tillgängliga för alla Windows PowerShell leverantörer. Klassen anropas av Get-PSProvider cmdleten för att lista alla tillgängliga providers för en session. Implementeringen av denna cmdlet beror på sessionstillståndet.

Anteckning

Windows PowerShell leverantörer är tillgängliga för alla Windows PowerShell språkomfång.

DriveCmdletProvider, basklass

Klassen System.Management.Automation.Provider.Drivecmdletprovider definierar en Windows PowerShell-enhetsprovider som stöder åtgärder för att lägga till nya enheter, ta bort befintliga enheter och initiera standardenheter. FileSystem-providern som tillhandahålls av Windows PowerShell initierar till exempel enheter för alla volymer som är monterade, till exempel hårddiskar och CD/DVD-enheter.

Den här klassen härleds från basklassen System.Management.Automation.Provider.Cmdletprovider. I följande tabell visas de cmdlets som exponeras av den här klassen. Förutom de som visas är cmdleten (exponerad av sessionstillstånd) en relaterad Get-PSDrive cmdlet som används för att hämta tillgängliga enheter.

Cmdlet Definition
New-PSDrive Skapar en ny enhet för sessionen och strömmar enhetsinformation.
Remove-PSDrive Tar bort en enhet från sessionen.

ItemCmdletProvider, basklass

Klassen System.Management.Automation.Provider.Itemcmdletprovider definierar en Windows PowerShell-objektprovider som utför åtgärder på enskilda objekt i datalagret och den förutsätter inte några container- eller navigeringsfunktioner. Den här klassen härleds från basklassen System.Management.Automation.Provider.Drivecmdletprovider. I följande tabell visas de cmdlets som exponeras av den här klassen.

Cmdlet Definition
Clear-Item Rensar det aktuella innehållet i objekt på den angivna platsen och ersätter det med det "rensa"-värde som angetts av providern. Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.
Get-Item Hämtar objekt från den angivna platsen och strömmar de resulterande objekten.
Invoke-Item Anropar standardåtgärden för objektet på den angivna sökvägen.
Set-Item Anger ett objekt på den angivna platsen med det angivna värdet. Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.
Resolve-Path Matchar jokertecken för en Windows PowerShell sökväg och strömmar sökvägsinformation.
Test-Path Testar för den angivna sökvägen och returnerar true om den finns eller false inte. Den här cmdleten implementeras för att stödja parametern för metoden IsContainer System.Management.Automation.Provider.Cmdletprovider.Writeitemobject*.

ContainerCmdletProvider, basklass

Klassen System.Management.Automation.Provider.Containercmdletprovider definierar en Windows PowerShell-containerprovider som exponerar en container för datalagerobjekt för användaren. Tänk på att en Windows PowerShell containerprovider endast kan användas när det finns en container (inga kapslade containrar) med objekt i den. Om det finns kapslade containrar måste du implementera en Windows PowerShell navigeringsprovider .

Den här klassen härleds från basklassen System.Management.Automation.Provider.Itemcmdletprovider. I följande tabell definieras de cmdlets som implementeras av den här klassen.

Cmdlet Definition
Copy-Item Kopierar objekt från en plats till en annan. Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.
Get-Childitem Hämtar underordnade objekt på den angivna platsen och strömmar dem som objekt.
New-Item Skapar nya objekt på den angivna platsen och strömmar det resulterande objektet.
Remove-Item Tar bort objekt från den angivna platsen.
Rename-Item Byter namn på ett objekt på den angivna platsen. Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.

Klassen System.Management.Automation.Provider.Navigationcmdletprovider definierar en Windows PowerShell-navigeringsprovider som utför åtgärder för objekt som använder mer än en container. Den här klassen härleds från basklassen System.Management.Automation.Provider.Containercmdletprovider. I följande tabell visas de cmdlets som exponeras av den här klassen.

Cmdlet Definition
Combine-Path Kombinerar två sökvägar till en enda sökväg med hjälp av en providerspecifik avgränsare mellan sökvägar. Denna cmdlet strömmar strängar.
Move-Item Flyttar objekt till den angivna platsen. Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.

En relaterad cmdlet är den grundläggande Parse-Path cmdleten som Windows PowerShell. Den här cmdleten kan användas för att parsa en Windows PowerShell sökväg som stöd för Parent parametern. Den strömmar den överordnade sökvägssträngen.

Välj providergränssnitt som stöd

Förutom att härleda från en av Windows PowerShell-basklasserna kan din Windows PowerShell-provider stödja andra funktioner genom att härleda från ett eller flera av följande providergränssnitt. Det här avsnittet definierar de gränssnitt och cmdlets som stöds av var och en. Den beskriver inte parametrarna för cmdletarna som stöds av gränssnittet. Information om cmdlet-parametern är tillgänglig online med hjälp av Get-Command Get-Help cmdletarna och .

IContentCmdletProvider

Gränssnittet System.Management.Automation.Provider.Icontentcmdletprovider definierar en innehållsprovider som utför åtgärder på innehållet i ett dataobjekt. I följande tabell visas de cmdlets som exponeras av det här gränssnittet.

Cmdlet Definition
Add-Content Lägger till de angivna värdelängderna i innehållet i det angivna objektet. Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.
Clear-Content Anger innehållet i det angivna objektet till värdet "rensa". Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.
Get-Content Hämtar innehållet i de angivna objekten och strömmar de resulterande objekten.
Set-Content Ersätter det befintliga innehållet för de angivna objekten. Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.

IPropertyCmdletProvider

Gränssnittet System.Management.Automation.Provider.Ipropertycmdletprovider definierar en egenskaps-Windows PowerShell-provider som utför åtgärder på egenskaperna för objekt i datalagret. I följande tabell visas de cmdlets som exponeras av det här gränssnittet.

Anteckning

Parametern Path på dessa cmdlets anger en sökväg till ett objekt i stället för att identifiera en egenskap.

Cmdlet Definition
Clear-ItemProperty Anger egenskaperna för de angivna objekten till värdet "rensa". Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.
Get-ItemProperty Hämtar egenskaper från de angivna objekten och strömmar de resulterande objekten.
Set-ItemProperty Anger egenskaper för de angivna objekten med de angivna värdena. Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.

IDynamicPropertyCmdletProvider

Gränssnittet System.Management.Automation.Provider.Idynamicpropertycmdletprovider, härlett från System.Management.Automation.Provider.Ipropertycmdletprovider,definierar en provider som anger dynamiska parametrar för de cmdlets som stöds. Den här typen av provider hanterar åtgärder för vilka egenskaper kan definieras vid körning, till exempel en ny egenskapsåtgärd. Sådana åtgärder är inte möjliga för objekt som har statiskt definierade egenskaper. I följande tabell visas de cmdlets som exponeras av det här gränssnittet.

Cmdlet Definition
Copy-ItemProperty Kopierar en egenskap från det angivna objektet till ett annat objekt. Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.
Move-ItemProperty Flyttar en egenskap från det angivna objektet till ett annat objekt. Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.
New-ItemProperty Skapar en egenskap för de angivna objekten och strömmar de resulterande objekten.
Remove-ItemProperty Tar bort en egenskap för de angivna objekten.
Rename-ItemProperty Byter namn på en egenskap för de angivna objekten. Denna cmdlet skickar inte ett utdataobjekt via pipelinen såvida inte PassThru dess parameter har angetts.

ISecurityDescriptorCmdletProvider

Gränssnittet System.Management.Automation.Provider.Isecuritydescriptorcmdletprovider lägger till säkerhetsbeskrivningsfunktioner till en provider. Med det här gränssnittet kan användaren hämta och ange säkerhetsbeskrivningsinformation för ett objekt i datalagret. I följande tabell visas de cmdlets som exponeras av det här gränssnittet.

Cmdlet Definition
Get-Acl Hämtar informationen i en åtkomstkontrollista (ACL), som är en del av en säkerhetsbeskrivning som används för att skydda operativsystemresurser, till exempel en fil eller ett objekt.
Set-Acl Anger informationen för en ACL. Det är i form av en instans av System.Security.Accesscontrol.Objectsecurity på de objekt som är avsedda för den angivna sökvägen. Denna cmdlet kan ange information om filer, nycklar och undernycklar i registret eller andra providerobjekt om Windows PowerShell-providern stöder inställningen av säkerhetsinformation.

Se även

Skapa Windows PowerShell providers

Så Windows PowerShell fungerar

Windows PowerShell SDK