Dela via


Utforma din 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 eller bläddra i. Om din produkt dessutom tillhandahåller en container, även om den inte är en container med flera nivåer, är det klokt att implementera en Windows PowerShell-provider. Du kanske till exempel vill implementera en Windows PowerShell-containerprovider om cmdlet-verbet Copy, Move, Rename, New eller Remove är meningsfullt som en åtgärd för dina produkt- eller konfigurationsdata.

Windows PowerShell-sökvägar identifiera din provider

Windows PowerShell-körningen använder Windows PowerShell-sökvägar 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, providerkvalificerade sökvägar, provider-direct-sökvägar och provider-interna sökvägar. Varje Windows PowerShell-provider måste ha stöd för en eller flera av dessa sökvägar.

Mer information om Windows PowerShell-sökvägar finns i Så här fungerar Windows PowerShell.

Definiera en Drive-Qualified sökväg

För att användaren ska kunna komma åt data som finns på en fysisk enhet måste 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-körningen ska kunna initiera och enas om providern måste Windows PowerShell-providern ha stöd för en providerkvalificerad sökväg. Till exempel är FileSystem::\\uncshare\abc\bar den providerkvalificerade sökvägen för FileSystem-providern som tillhandahålls av Windows PowerShell.

Definiera en Provider-Direct sökväg

Om du vill tillåta fjärråtkomst till din Windows PowerShell-provider bör den ha stöd för en providerdirigeringssökväg för att skicka direkt till Windows PowerShell-providern för den aktuella platsen. Till exempel kan registrets Windows PowerShell-provider använda \\server\regkeypath som en providerdirigeringssökväg.

Definiera en Provider-Internal sökväg

Om du vill tillåta provider-cmdleten att komma åt data med andra API:er än Windows PowerShell-programprogram bör Din Windows PowerShell-provider ha stöd för en providerintern sökväg. Den här sökvägen anges efter "::" i den providerkvalificerade sökvägen. Den provider-interna sökvägen för Windows PowerShell-providern i FileSystem är till exempel \\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*-metoden med den mest up-to-date-versionen av objektet som ändrats med den metoden. Providerinfrastrukturen avgör om objektobjektet behöver skickas till pipelinen, till exempel när användaren anger parametern -PassThru. Om du hämtar det mest up-to-date-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 provider

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 provider väljer du den basklass som beskrivs i det här avsnittet och som passar bäst för dina behov.

Varje Windows PowerShell-providerbasklass gör en uppsättning cmdletar tillgängliga. Det här avsnittet beskriver cmdletarna, men det beskriver inte deras parametrar.

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

CmdletProvider, basklass

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

Anmärkning

Windows PowerShell-leverantörer är tillgängliga för alla Windows PowerShell-språkomfattningar.

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 cmdletar som exponeras av den här klassen. Förutom de som anges är cmdleten Get-PSDrive (exponerad av sessionstillstånd) en relaterad 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 cmdletar 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 "clear"-värde som anges av providern. Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru 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. Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru parameter har angetts.
Resolve-Path Löser 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 och false annat. Den här cmdleten implementeras för att stödja parametern IsContainer för metoden 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 cmdletar som implementeras av den här klassen.

Cmdlet Definition
Copy-Item Kopierar objekt från en plats till en annan. Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru 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. Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru 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 cmdletar 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. Den här cmdleten strömmar strängar.
Move-Item Flyttar objekt till den angivna platsen. Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru parameter har angetts.

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

Välj leverantörsgränssnitt som ska stödjas

Förutom att härleda från någon 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 cmdletar som stöds av var och en. Den beskriver inte parametrarna för cmdletar som stöds av gränssnittet. Cmdlet-parameterinformation är tillgänglig online med hjälp av cmdletarna Get-Command och Get-Help.

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 cmdletar som exponeras av det här gränssnittet.

Cmdlet Definition
Add-Content Lägger till angivna värdelängder i innehållet i det angivna objektet. Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru parameter har angetts.
Clear-Content Anger innehållet i det angivna objektet till värdet "rensa". Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru 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. Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru parameter har angetts.

IPropertyCmdletProvider

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

Anmärkning

Parametern Path på dessa cmdletar 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". Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru parameter har angetts.
Get-ItemProperty Hämtar egenskaper från de angivna objekten och strömmar de resulterande objekten.
Set-ItemProperty Anger egenskaperna för de angivna objekten med angivna värden. Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru parameter har angetts.

IDynamicPropertyCmdletProvider

Gränssnittet System.Management.Automation.Provider.IDynamicPropertyCmdletProvider, som härleds från System.Management.Automation.Provider.IPropertyCmdletProvider, definierar en provider som anger dynamiska parametrar för cmdletar 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 cmdletar som exponeras av det här gränssnittet.

Cmdlet Definition
Copy-ItemProperty Kopierar en egenskap från det angivna objektet till ett annat objekt. Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru parameter har angetts.
Move-ItemProperty Flyttar en egenskap från det angivna objektet till ett annat objekt. Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru 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. Den här cmdleten skickar inte ett utdataobjekt via pipelinen såvida inte dess PassThru 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 cmdletar som exponeras av det här gränssnittet.

Cmdlet Definition
Get-Acl Hämtar informationen i en åtkomstkontrollista (ACL), som ingår i 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 har angetts för den angivna sökvägen. Den här cmdleten 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

Hur Windows PowerShell fungerar

Windows PowerShell SDK