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-Location
och 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. |
NavigationCmdletProvider, basklass
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