Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Detta ämne beskriver hur man skapar en leverantör som gör det möjligt för användaren att manipulera egenskaperna hos objekt i en datalagring. Som en följd kallas denna typ av leverantör för en Windows PowerShell-egenskapsleverantör. Till exempel hanterar registerleverantören som tillhandahålls av Windows PowerShell registernyckelvärden som egenskaper för registreringsnyckelobjektet. Denna typ av leverantör måste lägga till System.Management.Automation.Provider.IPropertyCmdletProvider-gränssnittet till implementeringen av .NET-klassen.
Anmärkning
Windows PowerShell tillhandahåller en mallfil som du kan använda för att utveckla en Windows PowerShell-leverantör. TemplateProvider.cs-filen finns tillgänglig på Microsoft Windows Software Development Kit för Windows Vista och .NET Framework 3.0 Runtime Components. För nedladdningsinstruktioner, se Hur man installerar Windows PowerShell och laddar ner Windows PowerShell SDK. Den nedladdade mallen finns tillgänglig i PowerShell Samples-katalogen<>. Du bör göra en kopia av denna fil och använda kopian för att skapa en ny Windows PowerShell-leverantör, och ta bort all funktionalitet du inte behöver. För mer information om andra implementeringar av Windows PowerShell-leverantörer, se Designing Your Windows PowerShell Provider.
Försiktighet
Metoderna hos din fastighetsleverantör bör skriva alla objekt med System.Management.Automation.Provider.CmdletProvider.Writepropertyobject* -metoden.
Definiera Windows PowerShell-leverantören
En egenskapsleverantör måste skapa en .NET-klass som stöder System.Management.Automation.Provider.IPropertyCmdletProvider-gränssnittet . Här är standardklassdeklarationen från TemplateProvider.cs-filen som tillhandahålls av Windows PowerShell.
Definiera basfunktionalitet
System.Management.Automation.Provider.IPropertyCmdletProvider-gränssnittet kan kopplas till vilken av leverantörens basklasser som helst, med undantag för System.Management.Automation.Provider.DriveCmdletProvider-klassen. Lägg till den grundläggande funktionalitet som krävs av basklassen du använder. För mer information om basklasser, se Designing Your Windows PowerShell Provider.
Återvinning av egenskaper
För att hämta egenskaper måste leverantören implementera metoden System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* för att stödja anrop från Get-ItemProperty cmdleten. Denna metod hämtar egenskaperna hos objektet som är placerat vid den specificerade leverantörsinterna vägen (fullt kvalificerad).
Parametern providerSpecificPickList anger vilka egenskaper som ska hämtas. Om denna parameter är null eller tom, bör 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 property bag med de hämtade egenskaperna. Metoden borde inte ge något.
Det rekommenderas att implementeringen av System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* stödjer wildcard-expansion av egenskapsnamn för varje element i vallistan. För att göra detta, använd klassen System.Management.Automation.WildcardPattern för att utföra wildcard-mönstermatchningen.
Här är standardimplementeringen av System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* från den TemplateProvider.cs-fil som tillhandahålls av Windows PowerShell.
Saker att tänka på när man implementerar GetProperty
Följande villkor kan gälla för din implementation av System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty*:
När leverantörsklassen definieras kan en Windows PowerShell-egenskapsleverantör deklarera leverantörsförmågorna ExpandWildcards, Filter, Include eller Exkluder, från System.Management.Automation.Provider.ProviderCapabilities-uppräkningen . I dessa fall måste implementeringen av System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* säkerställa att den väg som skickas till metoden uppfyller kraven för de specificerade kapabiliteterna. För att göra detta bör metoden komma åt rätt egenskap, till exempel egenskaperna System.Management.Automation.Provider.CmdletProvider.Exclude* och System.Management.Automation.Provider.CmdletProvider.Include* .
Som standard ska överskrivningar av denna metod inte hämta en läsare för objekt som är dolda för användaren om inte egenskapen System.Management.Automation.Provider.CmdletProvider.Force* är inställd på
true. Ett fel bör skrivas om sökvägen representerar ett objekt som är dolt för användaren och System.Management.Automation.Provider.CmdletProvider.Force* är satt tillfalse.
Att fästa dynamiska parametrar till Get-ItemProperty cmdleten
Cmdleten Get-ItemProperty kan kräva ytterligare parametrar som specificeras dynamiskt vid körning. För att tillhandahålla dessa dynamiska parametrar måste Windows PowerShell-egenskapsleverantören implementera System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* -metoden. Parametern path anger en fullt kvalificerad leverantör-intern sökväg, medan parametern providerSpecificPickList anger de leverantörsspecifika egenskaper som anges i kommandoraden. Denna parameter kan vara null eller tom om egenskaperna skickas till cmdleten. I detta fall returnerar denna metod ett objekt som har egenskaper och fält med parsingattribut liknande en cmdlet-klass eller ett System.Management.Automation.RuntimeDefinedParameterDictionary-objekt . Windows PowerShell-runtime 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 TemplateProvider.cs-filen som tillhandahålls av Windows PowerShell.
Ange egenskaper
För att sätta egenskaper måste Windows PowerShell-egenskapsleverantören implementera metoden System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* för att stödja anrop från Set-ItemProperty cmdlet. Denna metod sätter en eller flera egenskaper hos objektet på den angivna vägen och skriver över de tillhandahållna egenskaperna vid behov.
System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* skriver också en instans av ett System.Management.Automation.PSObject-objekt som representerar en egenskapspåse med de uppdaterade egenskaperna.
Här är standardimplementeringen av System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* från TemplateProvider.cs filen som tillhandahålls av Windows PowerShell.
Saker att komma ihåg när man implementerar Set-ItemProperty
Följande villkor kan gälla för en implementation av System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty*:
När leverantörsklassen definieras kan en Windows PowerShell-egenskapsleverantör deklarera leverantörsförmågorna ExpandWildcards, Filter, Include eller Exkluder, från System.Management.Automation.Provider.ProviderCapabilities-uppräkningen . I dessa fall måste implementeringen av System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* -metoden säkerställa att vägen som skickas till metoden uppfyller kraven för de specificerade kapabiliteterna. För att göra detta bör metoden komma åt rätt egenskap, till exempel egenskaperna System.Management.Automation.Provider.CmdletProvider.Exclude* och System.Management.Automation.Provider.CmdletProvider.Include* .
Som standard ska överskrivningar av denna metod inte hämta en läsare för objekt som är dolda för användaren om inte egenskapen System.Management.Automation.Provider.CmdletProvider.Force* är inställd på
true. Ett fel bör skrivas om sökvägen representerar ett objekt som är dolt för användaren och System.Management.Automation.Provider.CmdletProvider.Force* är satt tillfalse.Din implementation 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. Denna metod används för att bekräfta att en operation utförs 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, tillsammans med Windows PowerShell-runtime och hanterar eventuella kommandoradsinställningar eller preferensvariabler 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, ska metoden System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* anropa metoden System.Management.Automation.Provider.CmdletProvider.ShouldContinue . Denna metod skickar ett bekräftelsemeddelande till användaren för att ge ytterligare feedback som indikerar att operationen ska fortsätta.
Att fästa dynamiska parametrar för Set-ItemProperty cmdlet
Cmdleten Set-ItemProperty kan kräva ytterligare parametrar som specificeras dynamiskt vid körning. För att tillhandahålla dessa dynamiska parametrar måste Windows PowerShell-egenskapsleverantören implementera metoden System.Management.Automation.Provider.IPropertyCmdletProvider.SetPropertyDynamicParameters* . Denna metod returnerar ett objekt som har egenskaper och fält med parsningsattribut liknande 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 standardimplementeringen av System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* från TemplateProvider.cs-filen som tillhandahålls av Windows PowerShell.
Rensningsfastigheter
För att rensa egenskaper måste Windows PowerShell-egenskapsleverantören implementera metoden System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* för att stödja anrop från Clear-ItemProperty cmdleten. Denna metod sätter en eller flera egenskaper för objektet som finns vid den angivna vägen.
Här är standardimplementeringen av System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* från TemplateProvider.cs-filen som tillhandahålls av Windows PowerShell.
Saker att komma ihåg när du implementerar ClearProperty
Följande villkor kan gälla för din implementation av System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty*:
När leverantörsklassen definieras kan en Windows PowerShell-egenskapsleverantör deklarera leverantörsförmågorna ExpandWildcards, Filter, Include eller Exkluder, från System.Management.Automation.Provider.ProviderCapabilities-uppräkningen . I dessa fall måste implementeringen av System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* -metoden säkerställa att den väg som skickas till metoden uppfyller kraven för de specificerade kapabiliteterna. För att göra detta bör metoden komma åt rätt egenskap, till exempel egenskaperna System.Management.Automation.Provider.CmdletProvider.Exclude* och System.Management.Automation.Provider.CmdletProvider.Include* .
Som standard ska överskrivningar av denna metod inte hämta en läsare för objekt som är dolda för användaren om inte egenskapen System.Management.Automation.Provider.CmdletProvider.Force* är inställd på
true. Ett fel bör skrivas om sökvägen representerar ett objekt som är dolt för användaren och System.Management.Automation.Provider.CmdletProvider.Force* är satt tillfalse.Din implementation 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. Denna metod används för att bekräfta att en operation utförs innan en ändring görs i systemstatus, såsom att rensa innehåll. System.Management.Automation.Provider.CmdletProvider.ShouldProcess skickar namnet på resursen som ska ändras till användaren, där Windows PowerShell-runtime tar hänsyn till eventuella kommandoradsinställningar eller preferensvariabler vid avgörandet av vad som ska visas.
Efter anropet till System.Management.Automation.Provider.CmdletProvider.ShouldProcess återvänder
true, om potentiellt farliga systemändringar kan göras, bör metoden System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* anropa metoden System.Management.Automation.Provider.CmdletProvider.ShouldContinue . Denna metod skickar ett bekräftelsemeddelande till användaren för att ge ytterligare feedback som indikerar att den potentiellt farliga operationen bör fortsätta.
Att fästa dynamiska parametrar till Clear-ItemProperty cmdleten
Cmdleten Clear-ItemProperty kan kräva ytterligare parametrar som specificeras dynamiskt vid körning. För att tillhandahålla dessa dynamiska parametrar måste Windows PowerShell-egenskapsleverantören implementera System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* -metoden. Denna metod returnerar ett objekt som har egenskaper och fält med parsningsattribut liknande 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 standardimplementeringen av System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* från TemplateProvider.cs-filen som tillhandahålls av Windows PowerShell.
Bygger Windows PowerShell-leverantören
Se hur du registrerar cmdlets, leverantörer och värdapplikationer.
Se även
Designa din Windows PowerShell-leverantör
Utvidgning av objekttyper och formatering
Hur man registrerar cmdlets, leverantörer och värdapplikationer