Designa din Windows PowerShell-leverantör

Du bör implementera en Windows PowerShell-leverantör om din produkt eller konfiguration exponerar en uppsättning lagrad data, såsom en databas som användaren vill navigera i eller bläddra i. Dessutom, om din produkt tillhandahåller en container, även om det inte är en multilevel-container, är det logiskt att implementera en Windows PowerShell-leverantör. Till exempel kan du vilja implementera en Windows PowerShell-containerleverantör om cmdlet-verbet Kopiera, flytta, Byta namn, Nytt eller Ta bort är meningsfullt som en operation på din produkt eller konfigurationsdata.

Windows PowerShell-vägar identifierar din leverantör

Windows PowerShell-runtime använder Windows PowerShell-vägar för att komma åt rätt Windows PowerShell-leverantör. När en cmdlet specificerar en av dessa vägar vet körtiden vilken leverantör som ska användas för att komma åt den associerade datalagringen. Dessa vägar inkluderar drivkvalificerade vägar, leverantörskvalificerade vägar, leverantörsdirekta vägar och leverantörsinterna vägar. Varje Windows PowerShell-leverantör måste stödja en eller flera av dessa vägar.

För mer information om Windows PowerShell-vägar, se Hur Windows PowerShell fungerar.

Definiera en Drive-Qualified väg

För att användaren ska kunna komma åt data som finns på en fysisk enhet måste din Windows PowerShell-leverantör stödja en diskkvalificerad väg. Denna sökväg börjar med enhetsnamnet följt av ett kolon (:), till exempel mydrive:\abc\bar.

Definiera en Provider-Qualified väg

För att tillåta Windows PowerShell-runtime att initiera och avinitialisera leverantören måste din Windows PowerShell-leverantör stödja en leverantörskvalificerad väg. Till exempel är FileSystem::\uncshare\abc\bar den leverantörskvalificerade vägen för FileSystem-leverantören som tillhandahålls av Windows PowerShell.

Definiera en Provider-Direct väg

För att tillåta fjärråtkomst till din Windows PowerShell-leverantör bör den stödja en leverantörsdirektväg för att skicka direkt till Windows PowerShell-leverantören för den aktuella platsen. Till exempel kan registrets Windows PowerShell-leverantör använda \\server\regkeypath som en provider-direct-väg.

Definiera en Provider-Internal väg

För att låta leverantörens cmdlet komma åt data via icke-Windows PowerShell applikationsprogrammeringsgränssnitt (API:er), bör din Windows PowerShell-leverantör stödja en leverantörsintern sökväg. Denna väg anges efter "::" i den leverantörskvalificerade vägen. Till exempel är provider-intern sökväg för FileSystem Windows PowerShell-leverantören \\uncshare\abc\bar.

Att ändra lagrad data

När man åsidosätter metoder som ändrar den underliggande datalagringen, anropa alltid System.Management.Automation.Provider.CmdletProvider.WriteItemObject* -metoden där den mest up-to-datumsversionen av objektet ändras av den metoden. Leverantörsinfrastrukturen avgör om objektobjektet behöver skickas till pipelinen, till exempel när användaren anger parametern -PassThru. Om det är en kostsam operation (prestandamässigt) att hämta det mest up-toa-datumade objektet (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 vårdgivare

Windows PowerShell tillhandahåller ett antal basklasser som du kan använda för att implementera din egen Windows PowerShell-leverantör. När du utformar en leverantör, välj den basklass, som beskrivs i detta avsnitt, som passar dina behov bäst.

Varje basklass för Windows PowerShell-leverantörer tillhandahåller en uppsättning cmdlets. Detta avsnitt beskriver cmdlets, men beskriver inte deras parametrar.

Med hjälp av sessionstillståndet gör Windows PowerShell-runtime flera plats-cmdlets tillgängliga för vissa Windows PowerShell-leverantörer, såsom Get-Location, Set-Location, Pop-Location, och Push-Location cmdlets. Du kan använda cmdleten Get-Help för att få information om dessa plats-cmdlets.

CmdletProvider Basklass

System.Management.Automation.Provider.CmdletProvider-klassen definierar en grundläggande Windows PowerShell-leverantör. Denna klass 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 cmdleten Get-PSProvider för att lista alla tillgängliga leverantörer för en session. Implementeringen av denna cmdlet tillhandahålls av sessionstillståndet.

Anmärkning

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-enhetsleverantör som stödjer operationer för att lägga till nya enheter, ta bort befintliga enheter och initiera standarddiskar. Till exempel initierar Filsystemleverantören som tillhandahålls av Windows PowerShell enheter för alla volymer som är monterade, såsom hårddiskar och CD/DVD-enhetsenheter.

Denna klass härstammar från basklassen System.Management.Automation.Provider.CmdletProvider . Följande tabell listar de cmdlets som exponeras av denna klass. Utöver de listade är cmdleten Get-PSDrive (exponerad av sessionstillstånd) en relaterad cmdlet som används för att hämta tillgängliga diskar.

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

ItemCmdletProvider basklass

System.Management.Automation.Provider.ItemCmdletProvider-klassen definierar en Windows PowerShell-produktleverantör som utför operationer på de enskilda objekten i datalagret, och den antar inga container- eller navigationsfunktioner. Denna klass härstammar från Basklassen System.Management.Automation.Provider.DriveCmdletProvider . Följande tabell listar de cmdlets som exponeras av denna klass.

Cmdlet Definition
Clear-Item Rensar det aktuella innehållet på den angivna platsen och ersätter det med det "rensade" värdet som tillhandahållaren angett. Denna cmdlet skickar inte ett utdataobjekt genom pipelinen om inte dess PassThru parameter är specificerad.
Get-Item Hämtar föremål från den angivna platsen och strömmar de resulterande objekten.
Invoke-Item Anropar standardåtgärden för objektet vid den angivna vägen.
Set-Item Sätter ett föremål på den angivna platsen med det angivna värdet. Denna cmdlet skickar inte ett utdataobjekt genom pipelinen om inte dess PassThru parameter är specificerad.
Resolve-Path Löser jokerkorten för en Windows PowerShell-sökväg och strömmar väginformationen.
Test-Path Testar för den angivna vägen och returnerar true om den finns och false annars. Denna cmdlet är implementerad för att stödja parametern IsContainer för System.Management.Automation.Provider.CmdletProvider.WriteItemObject* -metoden.

ContainerCmdletProvider basklass

Klassen System.Management.Automation.Provider.ContainerCmdletProvider definierar en Windows PowerShell-containerleverantör som exponerar en container, för datalagringsobjekt, för användaren. Var medveten om att en Windows PowerShell-containerleverantör endast kan användas när det finns en container (inga nästlade containrar) med objekt i. Om det finns nästlade containrar måste du implementera en Windows PowerShell-navigationsleverantör.

Denna klass härstammar från basklassen System.Management.Automation.Provider.ItemCmdletProvider . Följande tabell definierar de cmdlets som implementeras av denna klass.

Cmdlet Definition
Copy-Item Kopierar föremål från en plats till en annan. Denna cmdlet skickar inte ett utdataobjekt genom pipelinen om inte dess PassThru parameter är specificerad.
Get-ChildItem Hämtar barnobjekten 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 föremål från den angivna platsen.
Rename-Item Byt namn på en föremålsplats på angiven plats. Denna cmdlet skickar inte ett utdataobjekt genom pipelinen om inte dess PassThru parameter är specificerad.

Klassen System.Management.Automation.Provider.NavigationCmdletProvider definierar en Windows PowerShell-navigationsleverantör som utför operationer för objekt som använder mer än en container. Denna klass härstammar från basklassen System.Management.Automation.Provider.ContainerCmdletProvider . Följande tabell listar de cmdlets som exponerats av denna klass.

Cmdlet Definition
Combine-Path Kombinerar två vägar till en enda väg, med hjälp av en leverantörsspecifik avgränsare mellan vägarna. Denna cmdlet strömmar strängar.
Move-Item Flyttar föremål till angiven plats. Denna cmdlet skickar inte ett utdataobjekt genom pipelinen om inte dess PassThru parameter är specificerad.

En relaterad cmdlet är den grundläggande Parse-Path-cmdlet som tillhandahålls av Windows PowerShell. Denna cmdlet kan användas för att tolka en Windows PowerShell-väg för att stödja parametern Parent . Den strömmar föräldrasträngen för vägen.

Välj leverantörsgränssnitt att stödja

Förutom att härleda från en av Windows PowerShell-basklasserna kan din Windows PowerShell-leverantör stödja annan funktionalitet genom att härleda från ett eller flera av följande leverantörsgränssnitt. Detta avsnitt definierar dessa gränssnitt och de cmdlets som stöds av var och en. Den beskriver inte parametrarna för de gränssnittsstödda cmdlets. Information om cmdlet-parametrar finns tillgänglig online via Get-Command och Get-Help cmdlets.

IContentCmdletProvider

System.Management.Automation.Provider.IContentCmdletProvider-gränssnittet definierar en innehållsleverantör som utför operationer på innehållet i ett dataobjekt. Följande tabell listar de cmdlets som exponeras av detta gränssnitt.

Cmdlet Definition
Add-Content Lägger till de angivna värdelängderna till innehållet i det angivna objektet. Denna cmdlet skickar inte ett utdataobjekt genom pipelinen om inte dess PassThru parameter är specificerad.
Clear-Content Sätter innehållet i det specificerade objektet till värdet "clear". Denna cmdlet skickar inte ett utdataobjekt genom pipelinen om inte dess PassThru parameter är specificerad.
Get-Content Hämtar innehållet i de specificerade objekten och strömmar de resulterande objekten.
Set-Content Ersätter det befintliga innehållet för de angivna elementen. Denna cmdlet skickar inte ett utdataobjekt genom pipelinen om inte dess PassThru parameter är specificerad.

IPropertyCmdletProvider

System.Management.Automation.Provider.IPropertyCmdletProvider-gränssnittet definierar en egenskap Windows PowerShell-leverantör som utför operationer på egenskaperna för objekt i datalagret. Följande tabell listar de cmdlets som exponeras av detta gränssnitt.

Anmärkning

Parametern Path på dessa cmdlets anger en väg till ett objekt istället för att identifiera en egenskap.

Cmdlet Definition
Clear-ItemProperty Sätter egenskaperna för de angivna objekten till "clear"-värdet. Denna cmdlet skickar inte ett utdataobjekt genom pipelinen om inte dess PassThru parameter är specificerad.
Get-ItemProperty Hämtar egenskaper från de angivna objekten och strömmar de resulterande objekten.
Set-ItemProperty Sätter egenskaper för de specificerade objekten med de angivna värdena. Denna cmdlet skickar inte ett utdataobjekt genom pipelinen om inte dess PassThru parameter är specificerad.

IDynamicPropertyCmdletProvider

System.Management.Automation.Provider.IDynamicPropertyCmdletProvider-gränssnittet, härlett från System.Management.Automation.Provider.IPropertyCmdletProvider, definierar en leverantör som specificerar dynamiska parametrar för dess stödda cmdlets. Denna typ av leverantör hanterar operationer för vilka egenskaper kan definieras vid körning, till exempel en ny egenskapsoperation. Sådana operationer är inte möjliga på objekt med statiskt definierade egenskaper. Följande tabell listar de cmdlets som exponeras av detta gränssnitt.

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

ISecurityDescriptorCmdletProvider

System.Management.Automation.Provider.ISecurityDescriptorCmdletProvider-gränssnittet lägger till säkerhetsdeskriptorfunktionalitet till en leverantör. Detta gränssnitt gör det möjligt för användaren att hämta och ställa in säkerhetsdeskriptorinformation för ett objekt i datalagret. Följande tabell listar de cmdlets som exponeras av detta gränssnitt.

Cmdlet Definition
Get-Acl Hämtar informationen som finns i en åtkomstkontrolllista (ACL), som är en del av en säkerhetsdeskriptor som används för att skydda operativsystemresurser, till exempel en fil eller ett objekt.
Set-Acl Sätter informationen för ett ACL. Den är i form av en instans av System.Security.AccessControl.ObjectSecurity på det eller de objekt som är avsedda för den angivna sökvägen. Denna cmdlet kan ställa in information om filer, nycklar och delnycklar i registret, eller i någon annan leverantörspost, om Windows PowerShell-leverantören stödjer inställningen av säkerhetsinformation.

Se även

Skapa Windows PowerShell-leverantörer

Hur Windows PowerShell fungerar

Windows PowerShell SDK