Skapa en Windows PowerShell-egenskapsprovider
Det här avsnittet beskriver hur du skapar en provider som gör det möjligt för användaren att ändra egenskaperna för objekt i ett datalager. Därför kallas den här typen av leverantör för en Windows PowerShell en egenskapsprovider. Till exempel hanterar registerprovidern som tillhandahålls Windows PowerShell registernyckelvärden som egenskaper för registernyckelobjektet. Den här typen av provider måste lägga till gränssnittet System.Management.Automation.Provider.Ipropertycmdletprovider i implementeringen av .NET-klassen.
Anteckning
Windows PowerShell en mallfil som du kan använda för att utveckla en Windows PowerShell provider. Filen TemplateProvider.cs finns på Microsoft Windows Software Development Kit för Windows Vista och .NET Framework 3.0 Runtime Components. Anvisningar för nedladdning finns i Installera Windows PowerShell och Ladda ned Windows PowerShell SDK. Den nedladdade mallen är tillgänglig i <PowerShell Samples> katalogen . Du bör göra en kopia av den här filen och använda kopian för att skapa en Windows PowerShell provider, vilket tar bort alla funktioner som du inte behöver. Mer information om andra Windows PowerShell-providerimplementering finns i Designing Your Windows PowerShell Provider (Utforma din Windows PowerShell provider).
Varning
Metoderna för egenskapsprovidern ska skriva alla objekt med hjälp av metoden System.Management.Automation.Provider.Cmdletprovider.Writepropertyobject*.
Definiera Windows PowerShell leverantör
En egenskapsprovider måste skapa en .NET-klass som stöder gränssnittet System.Management.Automation.Provider.Ipropertycmdletprovider. Här är standardklassdeklarationen från filen TemplateProvider.cs som tillhandahålls av Windows PowerShell.
Definiera grundläggande funktioner
Gränssnittet System.Management.Automation.Provider.Ipropertycmdletprovider kan kopplas till någon av providerns basklasser, med undantag för klassen System.Management.Automation.Provider.Drivecmdletprovider. Lägg till de grundläggande funktioner som krävs av basklassen som du använder. Mer information om basklasser finns i Designing Your Windows PowerShell Provider (Utforma din Windows PowerShell provider).
Hämta egenskaper
För att hämta egenskaper måste providern implementera metoden System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* för att stödja anrop från Get-ItemProperty cmdleten. Den här metoden hämtar egenskaperna för objektet som finns på den angivna providerns interna sökväg (fullständigt kvalificerad).
Parametern providerSpecificPickList anger vilka egenskaper som ska hämtas. Om den här null parametern är eller tom ska metoden hämta alla egenskaper. Dessutom skriver System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* en instans av ett System.Management.Automation.PSObject-objekt som representerar en egenskaps påse med de hämtade egenskaperna. Metoden bör inte returnera något.
Vi rekommenderar att implementeringen av System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* stöder jokerteckenexpansion av egenskapsnamn för varje element i listrutan. Det gör du genom att använda klassen System.Management.Automation.Wildcardpattern för att utföra matchning av jokerteckenmönster.
Här är standardimplementering av System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* från filen TemplateProvider.cs som tillhandahålls av Windows PowerShell.
Saker att komma ihåg om att implementera GetProperty
Följande villkor kan gälla för din implementering av System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty*:
När du definierar providerklassen kan en Windows PowerShell-egenskapsprovider deklarera providerfunktioner för ExpandWildcards, Filter, Include eller Exclude från uppräkningen System.Management.Automation.Provider.Providercapabilities. I dessa fall måste implementeringen av metoden System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* se till att sökvägen som skickas till metoden uppfyller kraven för de angivna funktionerna. För att göra detta ska metoden komma åt lämplig egenskap, till exempel egenskaperna System.Management.Automation.Provider.Cmdletprovider.Exclude* och System.Management.Automation.Provider.Cmdletprovider.Include*.
Som standard ska åsidosättningar av den här metoden inte hämta en läsare för objekt som är dolda från användaren såvida inte egenskapen System.Management.Automation.Provider.Cmdletprovider.Force* har angetts till
true. Ett fel ska skrivas om sökvägen representerar ett objekt som är dolt för användaren och System.Management.Automation.Provider.Cmdletprovider.Force* har angetts tillfalse.
Koppla dynamiska parametrar till Get-ItemProperty cmdlet
Get-ItemPropertyCmdleten kan kräva ytterligare parametrar som anges dynamiskt vid körning. För att tillhandahålla dessa dynamiska parametrar måste Windows PowerShell-egenskapsprovidern implementera metoden System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters*. Parametern path anger en fullständigt kvalificerad provider-intern sökväg, medan parametern anger de providerSpecificPickList providerspecifika egenskaper som anges på kommandoraden. Den här parametern null kan vara eller tom om egenskaperna har pipe-erats till cmdleten . I det här fallet returnerar den här metoden ett objekt som har egenskaper och fält med parsningsattribut som liknar en cmdlet-klass eller ett System.Management.Automation.Runtimedefinedparameterdictionary-objekt. Den Windows PowerShell körningen använder det returnerade objektet för att lägga till parametrarna i cmdleten.
Här är standardimplementering av System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* från filen TemplateProvider.cs som tillhandahålls av Windows PowerShell.
Inställningsegenskaper
För att ange egenskaper måste Windows PowerShell-egenskapsprovidern implementera metoden System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* för att stödja anrop från Set-ItemProperty cmdleten. Den här metoden anger en eller flera egenskaper för objektet på den angivna sökvägen och skriver över de angivna egenskaperna efter behov.
System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* skriver också en instans av ett System.Management.Automation.PSObject-objekt som representerar en egenskapsuppsättning med de uppdaterade egenskaperna.
Här är standardimplementering av System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* från filen TemplateProvider.cs som tillhandahålls av Windows PowerShell.
Saker att komma ihåg om att implementera Set-ItemProperty
Följande villkor kan gälla för en implementering av System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty*:
När du definierar providerklassen kan en Windows PowerShell-egenskapsprovider deklarera providerfunktioner för ExpandWildcards, Filter, Include eller Exclude från uppräkningen System.Management.Automation.Provider.Providercapabilities. I dessa fall måste implementeringen av metoden System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* se till att sökvägen som skickas till metoden uppfyller kraven för de angivna funktionerna. För att göra detta ska metoden komma åt lämplig egenskap, till exempel egenskaperna System.Management.Automation.Provider.Cmdletprovider.Exclude* och System.Management.Automation.Provider.Cmdletprovider.Include*.
Som standard ska åsidosättningar av den här metoden inte hämta en läsare för objekt som är dolda från användaren såvida inte egenskapen System.Management.Automation.Provider.Cmdletprovider.Force* har angetts till
true. Ett fel ska skrivas om sökvägen representerar ett objekt som är dolt för användaren och System.Management.Automation.Provider.Cmdletprovider.Force* har angetts tillfalse.Implementeringen av metoden System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* bör anropa System.Management.Automation.Provider.Cmdletprovider.ShouldProcess och verifiera dess returvärde innan du gör några ändringar i datalagret. Den här metoden används för att bekräfta körningen av en åtgärd när en ändring görs i systemtillståndet, till exempel namnbyte av filer. System.Management.Automation.Provider.Cmdletprovider.ShouldProcess skickar namnet på resursen som ska ändras till användaren, med Windows PowerShell-körningen och hantering av kommandoradsinställningar eller inställningsvariabler för att avgöra vad som ska visas.
Efter anropet till System.Management.Automation.Provider.Cmdletprovider.ShouldProcess returnerar , om potentiellt farliga systemändringar kan göras, bör metoden
trueSystem.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* anropa metoden System.Management.Automation.Provider.Cmdletprovider.ShouldContinue. Den här metoden skickar ett bekräftelsemeddelande till användaren för att tillåta ytterligare feedback som anger att åtgärden ska fortsätta.
Koppla dynamiska parametrar för Set-ItemProperty cmdlet
Set-ItemPropertyCmdleten kan kräva ytterligare parametrar som anges dynamiskt vid körning. För att tillhandahålla dessa dynamiska parametrar måste Windows PowerShell-egenskapsprovidern implementera metoden System.Management.Automation.Provider.Ipropertycmdletprovider.Setpropertydynamicparameters*. Den här metoden returnerar ett objekt som har egenskaper och fält med parsningsattribut som liknar en cmdlet-klass eller ett System.Management.Automation.Runtimedefinedparameterdictionary-objekt. Värdet null kan returneras om inga dynamiska parametrar ska läggas till.
Här är standardimplementering av System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* från filen TemplateProvider.cs som tillhandahålls av Windows PowerShell.
Rensa egenskaper
För att rensa egenskaper måste Windows PowerShell-egenskapsprovidern implementera metoden System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* för att stödja anrop från Clear-ItemProperty cmdleten. Den här metoden anger en eller flera egenskaper för objektet som finns på den angivna sökvägen.
Här är standardimplementering av System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* från filen TemplateProvider.cs som tillhandahålls av Windows PowerShell.
Kom ihåg att implementera ClearProperty
Följande villkor kan gälla för implementeringen av System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty*:
När du definierar providerklassen kan en Windows PowerShell-egenskapsprovider deklarera providerfunktioner för ExpandWildcards, Filter, Include eller Exclude från uppräkningen System.Management.Automation.Provider.Providercapabilities. I dessa fall måste implementeringen av metoden System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* se till att sökvägen som skickas till metoden uppfyller kraven för de angivna funktionerna. För att göra detta ska metoden komma åt lämplig egenskap, till exempel egenskaperna System.Management.Automation.Provider.Cmdletprovider.Exclude* och System.Management.Automation.Provider.Cmdletprovider.Include*.
Som standard ska åsidosättningar av den här metoden inte hämta en läsare för objekt som är dolda från användaren såvida inte egenskapen System.Management.Automation.Provider.Cmdletprovider.Force* har angetts till
true. Ett fel ska skrivas om sökvägen representerar ett objekt som är dolt för användaren och System.Management.Automation.Provider.Cmdletprovider.Force* har angetts tillfalse.Implementeringen av metoden System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* bör anropa System.Management.Automation.Provider.Cmdletprovider.ShouldProcess och verifiera dess returvärde innan du gör några ändringar i datalagret. Den här metoden används för att bekräfta körningen av en åtgärd innan en ändring görs i systemtillståndet, till exempel att rensa innehåll. System.Management.Automation.Provider.Cmdletprovider.ShouldProcess skickar namnet på resursen som ska ändras till användaren, där Windows PowerShell-körningen tar hänsyn till alla kommandoradsinställningar eller inställningsvariabler för att fastställa vad som ska visas.
Efter anropet till System.Management.Automation.Provider.Cmdletprovider.ShouldProcess returnerar , om potentiellt farliga systemändringar kan göras, bör metoden
trueSystem.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* anropa metoden System.Management.Automation.Provider.Cmdletprovider.ShouldContinue. Den här metoden skickar ett bekräftelsemeddelande till användaren för att tillåta ytterligare feedback som anger att den potentiellt farliga åtgärden ska fortsätta.
Koppla dynamiska parametrar till Clear-ItemProperty cmdlet
Clear-ItemPropertyCmdleten kan kräva ytterligare parametrar som anges dynamiskt vid körning. För att tillhandahålla dessa dynamiska parametrar måste Windows PowerShell-egenskapsprovidern implementera metoden System.Management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters*. Den här metoden returnerar ett objekt som har egenskaper och fält med parsningsattribut som liknar en cmdlet-klass eller ett System.Management.Automation.Runtimedefinedparameterdictionary-objekt. Värdet null kan returneras om inga dynamiska parametrar ska läggas till.
Här är standardimplementering av System.Management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters* från filen TemplateProvider.cs som tillhandahålls av Windows PowerShell.
Skapa Windows PowerShell leverantör
Se Registrera cmdlets, providers och värdprogram.
Se även
Utforma din Windows PowerShell provider
Feedback
Skicka och visa feedback för