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 provider för en Windows PowerShell-egenskapsprovider. Registerprovidern som tillhandahålls av Windows PowerShell hanterar till exempel 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.
Anmärkning
Windows PowerShell innehåller en mallfil som du kan använda för att utveckla en Windows PowerShell-provider. Filen TemplateProvider.cs finns i Microsoft Windows Software Development Kit för Windows Vista och .NET Framework 3.0 Runtime Components. Instruktioner för nedladdning finns i Så här installerar du Windows PowerShell och laddar ned Windows PowerShell SDK. Den nedladdade mallen är tillgänglig i katalogen <PowerShell-exempel>. Du bör göra en kopia av den här filen och använda kopian för att skapa en ny Windows PowerShell-provider och ta bort alla funktioner som du inte behöver. Mer information om andra Implementeringar av Windows PowerShell-providern finns i Designing Your Windows PowerShell Provider.
Försiktighet
Egenskapsproviderns metoder bör skriva objekt med hjälp av metoden System.Management.Automation.Provider.CmdletProvider.Writepropertyobject*.
Definiera Windows PowerShell-providern
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 basfunktioner
-gränssnittet System.Management.Automation.Provider.IPropertyCmdletProvider kan kopplas till någon av providerbasklasserna, med undantag för System.Management.Automation.Provider.DriveCmdletProvider-klassen. Lägg till basfunktionerna som krävs av basklassen som du använder. Mer information om basklasser finns i Utforma din Windows PowerShell-provider.
Hämtar 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 cmdleten Get-ItemProperty
. Den här metoden hämtar egenskaperna för objektet som finns på den angivna provider-interna sökvägen (fullständigt kvalificerad).
Parametern providerSpecificPickList
anger vilka egenskaper som ska hämtas. Om den här parametern är null
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 egenskapsuppsättning för de hämtade egenskaperna. Metoden ska inte returnera någonting.
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 matchningen av jokerteckenmönstret.
Här är standardimplementeringen 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 implementeringen 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 System.Management.Automation.Provider.ProviderCapabilities uppräkning. I dessa fall måste implementeringen av metoden System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* för att säkerställa att sökvägen som skickas till metoden uppfyller kraven för de angivna funktionerna. För att göra detta bör metoden komma åt lämplig egenskap, till exempel System.Management.Automation.Provider.CmdletProvider.Exclude* och System.Management.Automation.Provider.CmdletProvider.Include* egenskaper.
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 om inte egenskapen System.Management.Automation.Provider.CmdletProvider.Force* är inställd på
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* är inställt påfalse
.
Koppla dynamiska parametrar till cmdleten Get-ItemProperty
Cmdleten Get-ItemProperty
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 System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters*-metoden. Parametern path
anger en fullständigt kvalificerad provider-intern sökväg, medan parametern providerSpecificPickList
anger de providerspecifika egenskaper som anges på kommandoraden. Den här parametern kan vara null
eller tom om egenskaperna skickas 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 en System.Management.Automation.RuntimeDefinedParameterDictionary-objekt. Windows PowerShell-körningen använder det returnerade objektet för att lägga till parametrarna i cmdleten.
Här är standardimplementeringen av System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* från filen TemplateProvider.cs som tillhandahålls av Windows PowerShell.
Ange egenskaper
Om du vill ange egenskaper måste Windows PowerShell-egenskapsprovidern implementera System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty*-metoden för att stödja anrop från cmdleten Set-ItemProperty
. 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 standardimplementeringen 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 System.Management.Automation.Provider.ProviderCapabilities uppräkning. 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 bör metoden komma åt lämplig egenskap, till exempel System.Management.Automation.Provider.CmdletProvider.Exclude* och System.Management.Automation.Provider.CmdletProvider.Include* egenskaper.
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 om inte egenskapen System.Management.Automation.Provider.CmdletProvider.Force* är inställd på
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* är inställt påfalse
.Din implementering av metoden System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* * ska 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 genom att byta namn på 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 eventuella kommandoradsinställningar eller inställningsvariabler för att avgöra vad som ska visas.
Efter anropet till System.Management.Automation.Provider.CmdletProvider.ShouldProcess returnerar
true
, om potentiellt farliga systemändringar kan göras, bör System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty*-metoden anropa metoden System.Management.Automation.Provider.CmdletProvider.ShouldContinue metod. Den här metoden skickar ett bekräftelsemeddelande till användaren för att tillåta ytterligare feedback för att indikera att åtgärden ska fortsätta.
Koppla dynamiska parametrar för cmdleten Set-ItemProperty
Cmdleten Set-ItemProperty
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 System.Management.Automation.Provider.IPropertyCmdletProvider.SetPropertyDynamicParameters*-metoden. Den här metoden returnerar ett objekt som har egenskaper och fält med parsningsattribut som liknar en cmdlet-klass eller en System.Management.Automation.RuntimeDefinedParameterDictionary-objekt. Värdet null
kan returneras om inga dynamiska parametrar ska läggas till.
Här är standardimplementeringen 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 cmdleten Clear-ItemProperty
. Den här metoden anger en eller flera egenskaper för objektet som finns på den angivna sökvägen.
Här är standardimplementeringen av System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* från filen TemplateProvider.cs som tillhandahålls av Windows PowerShell.
Tänk på 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 System.Management.Automation.Provider.ProviderCapabilities uppräkning. I dessa fall måste implementeringen av metoden System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* säkerställa att sökvägen som skickas till metoden uppfyller kraven för de angivna funktionerna. För att göra detta bör metoden komma åt lämplig egenskap, till exempel System.Management.Automation.Provider.CmdletProvider.Exclude* och System.Management.Automation.Provider.CmdletProvider.Include* egenskaper.
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 om inte egenskapen System.Management.Automation.Provider.CmdletProvider.Force* är inställd på
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* är inställt påfalse
.Din implementering 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 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 eventuella kommandoradsinställningar eller inställningsvariabler för att avgöra vad som ska visas.
Efter anropet till System.Management.Automation.Provider.CmdletProvider.ShouldProcess returnerar
true
, om potentiellt farliga systemändringar kan göras, bör System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty*-metoden anropa metoden System.Management.Automation.Provider.CmdletProvider.ShouldContinue metod. Den här metoden skickar ett bekräftelsemeddelande till användaren för att tillåta ytterligare feedback för att indikera att den potentiellt farliga åtgärden ska fortsätta.
Koppla dynamiska parametrar till cmdleten Clear-ItemProperty
Cmdleten Clear-ItemProperty
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 en System.Management.Automation.RuntimeDefinedParameterDictionary-objekt. Värdet null
kan returneras om inga dynamiska parametrar ska läggas till.
Här är standardimplementeringen av System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* från filen TemplateProvider.cs som tillhandahålls av Windows PowerShell.
Skapa Windows PowerShell-providern
Se Så här registrerar du cmdletar, leverantörer och värdprogram.
Se även
Utforma Din Windows PowerShell-provider