Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Toto téma popisuje, jak vytvořit poskytovatele, který umožní uživateli manipulovat s vlastnostmi položek v datovém úložišti. V důsledku toho se tento typ poskytovatele označuje jako poskytovatel vlastností Windows PowerShell. Například poskytovatel registru poskytovaný Windows PowerShell zpracovává hodnoty klíčů registru jako vlastnosti položky klíče registru. Tento typ poskytovatele musí přidat rozhraní System.Management.Automation.Provider.IPropertyCmdletProvider do implementace třídy .NET.
Poznámka:
Windows PowerShell poskytuje šablonový soubor, který můžete použít k vývoji poskytovatele Windows PowerShell. Soubor TemplateProvider.cs je dostupný v Microsoft Windows Software Development Kit pro Windows Vista a .NET Framework 3.0 Runtime Components. Pro návod ke stažení viz Jak nainstalovat Windows PowerShell a Stáhněte si Windows PowerShell SDK. Stažená šablona je dostupná v adresáři <PowerShell Samples> . Měli byste si tento soubor zkopírovat a použít kopii k vytvoření nového poskytovatele Windows PowerShell, čímž odstraníte všechny funkce, které nepotřebujete. Pro více informací o dalších implementacích poskytovatelů Windows PowerShell viz Návrh vašeho poskytovatele Windows PowerShell.
Upozornění
Metody vašeho poskytovatele vlastností by měly psát objekty pomocí metody System.Management.Automation.Provider.CmdletProvider.Writepropertyobject* .
Definování poskytovatele Windows PowerShell
Poskytovatel vlastností musí vytvořit třídu .NET, která podporuje rozhraní System.Management.Automation.Provider.IPropertyCmdletProvider . Zde je výchozí deklarace třídy ze souboru TemplateProvider.cs poskytovaného Windows PowerShell.
Definování základní funkcionality
Rozhraní System.Management.Automation.Provider.IPropertyCmdletProvider lze připojit ke kterékoliv základní třídě poskytovatele, s výjimkou třídy System.Management.Automation.Provider.DriveCmdletProvider . Přidejte základní funkcionalitu, kterou vyžaduje základní třída, kterou používáte. Pro více informací o základních třídách viz Návrh vašeho Windows PowerShell Providera.
Získávání vlastností
Pro získání vlastností musí poskytovatel implementovat metodu System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty*, která podporuje volání z Get-ItemProperty cmdletu. Tato metoda získává vlastnosti položky umístěné na určené interní cestě poskytovatele (plně kvalifikované).
Parametr providerSpecificPickList určuje, které vlastnosti získat zpět. Pokud je tento parametr nebo prázdný null , metoda by měla získat všechny vlastnosti. Kromě toho System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* zapisuje instanci objektu System.Management.Automation.PSObject , který reprezentuje vlastnostní vak získaných vlastností. Metoda by neměla nic vrátit.
Doporučuje se, aby implementace System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* podporovala rozšíření názvů vlastností pro každý prvek v seznamu výběrů pomocí divoké karty. K tomu použijte třídu System.Management.Automation.WildcardPattern k provedení porovnávání vzorů divokých karet.
Zde je výchozí implementace System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* ze souboru TemplateProvider.cs poskytovaného Windows PowerShell.
Na co si pamatovat při implementaci GetProperty
Následující podmínky se mohou vztahovat na vaši implementaci System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty*:
Při definování třídy poskytovatele může poskytovatel vlastností Windows PowerShell deklarovat schopnosti poskytovatele ExpandWildcards, Filter, Include nebo Exclude z výčtu System.Management.Automation.Provider.ProviderCapabilities . V těchto případech musí implementace metody System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* zajistit, že cesta předaná metodě splňuje požadavky specifikovaných schopností. K tomu by metoda měla přistupovat k příslušným vlastnostem, například k vlastnostim System.Management.Automation.Provider.CmdletProvider.Exclude* a System.Management.Automation.Provider.CmdletProvider.Include* .
Ve výchozím nastavení by přepisy této metody neměly čtečku načítat objekty, které jsou uživateli skryté, pokud vlastnost System.Management.Automation.Provider.CmdletProvider.Force* není nastavena na
true. Chyba by měla být zapsána, pokud cesta představuje položku skrytou před uživatelem a System.Management.Automation.Provider.CmdletProvider.Force* je nastavena nafalse.
Připojení dynamických parametrů k Get-ItemProperty Cmdletu
Cmdlet Get-ItemProperty může vyžadovat další parametry, které jsou dynamicky specifikovány za běhu. Pro poskytnutí těchto dynamických parametrů musí poskytovatel vlastností Windows PowerShell implementovat metodu System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* . Parametr path označuje plně kvalifikovanou interní cestu poskytovatele, zatímco parametr providerSpecificPickList specifikuje vlastnosti specifické pro poskytovatele zadané v příkazovém řádku. Tento parametr může být nebo prázdný null , pokud jsou vlastnosti připojeny do cmdletu. V tomto případě tato metoda vrací objekt, který má vlastnosti a pole s atributy pro analýzu podobnými třídě cmdlet nebo objektu System.Management.Automation.RuntimeDefinedParameterDictionary . Runtime Windows PowerShell používá vrácený objekt k přidání parametrů do cmdletu.
Zde je výchozí implementace System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* ze souboru TemplateProvider.cs poskytovaného Windows PowerShell.
Nastavení vlastností
Pro nastavení vlastností musí poskytovatel vlastností Windows PowerShell implementovat metodu System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty*, která podporuje volání z Set-ItemProperty CMDLETu. Tato metoda nastaví jednu nebo více vlastností položky na dané cestě a podle potřeby přepíše dodané vlastnosti.
System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* také zapisuje instanci objektu System.Management.Automation.PSObject , který reprezentuje vlastnostní tašku aktualizovaných vlastností.
Zde je výchozí implementace System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* ze souboru TemplateProvider.cs poskytovaného Windows PowerShell.
Na co si dát pozor při zavádění Set-ItemProperty
Následující podmínky se mohou vztahovat na implementaci System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty*:
Při definování třídy poskytovatele může poskytovatel vlastností Windows PowerShell deklarovat schopnosti poskytovatele ExpandWildcards, Filter, Include nebo Exclude z výčtu System.Management.Automation.Provider.ProviderCapabilities . V těchto případech musí implementace metody System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* zajistit, že cesta předaná metodě splňuje požadavky specifikovaných schopností. K tomu by metoda měla přistupovat k příslušným vlastnostem, například k vlastnostim System.Management.Automation.Provider.CmdletProvider.Exclude* a System.Management.Automation.Provider.CmdletProvider.Include* .
Ve výchozím nastavení by přepisy této metody neměly čtečku načítat objekty, které jsou uživateli skryté, pokud vlastnost System.Management.Automation.Provider.CmdletProvider.Force* není nastavena na
true. Chyba by měla být zapsána, pokud cesta představuje položku skrytou před uživatelem a System.Management.Automation.Provider.CmdletProvider.Force* je nastavena nafalse.Vaše implementace metody System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* by měla volat System.Management.Automation.Provider.CmdletProvider.ShouldProcess a ověřit její návratovou hodnotu před jakýmikoli změnami v datovém úložišti. Tato metoda se používá k potvrzení provedení operace při změně stavu systému, například přejmenování souborů. System.Management.Automation.Provider.CmdletProvider.ShouldProcess odesílá uživateli název zdroje, který má být změněn, přičemž runtime Windows PowerShell a řeší všechna nastavení příkazové řádky nebo preference proměnné při určování, co má být zobrazeno.
Po volání na System.Management.Automation.Provider.CmdletProvider.ShouldProcess se vrátí
true, pokud lze provést potenciálně nebezpečné systémové úpravy, měla by metoda System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* volat metodu System.Management.Automation.Provider.CmdletProvider.ShouldContinue . Tato metoda odešle uživateli potvrzovací zprávu, která umožňuje další zpětnou vazbu naznačující pokračování v operaci.
Připojení dynamických parametrů pro Set-ItemProperty Cmdlet
Cmdlet Set-ItemProperty může vyžadovat další parametry, které jsou dynamicky specifikovány za běhu. Pro poskytnutí těchto dynamických parametrů musí poskytovatel vlastností Windows PowerShell implementovat metodu System.Management.Automation.Provider.IPropertyCmdletProvider.SetPropertyDynamicParameters* . Tato metoda vrací objekt, který má vlastnosti a pole s atributy pro parsování podobnými třídě cmdlet nebo objektu System.Management.Automation.RuntimeDefinedParameterDictionary . Hodnota může být vrácena, null pokud není třeba přidávat dynamické parametry.
Zde je výchozí implementace System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* ze souboru TemplateProvider.cs poskytovaného Windows PowerShell.
Vlastnosti clearingu
Pro vyčištění vlastností musí poskytovatel vlastností Windows PowerShell implementovat metodu System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty*, která podporuje volání z Clear-ItemProperty cmdletu. Tato metoda nastavuje jednu nebo více vlastností pro položku umístěnou na určené cestě.
Zde je výchozí implementace System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* z TemplateProvider.cs souboru poskytnutého Windows PowerShell.
Věc, na kterou je třeba pamatovat při implementaci ClearProperty
Následující podmínky se mohou vztahovat na vaši implementaci System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty*:
Při definování třídy poskytovatele může poskytovatel vlastností Windows PowerShell deklarovat schopnosti poskytovatele ExpandWildcards, Filter, Include nebo Exclude z výčtu System.Management.Automation.Provider.ProviderCapabilities . V těchto případech musí implementace metody System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* zajistit, že cesta předávaná metodě splňuje požadavky specifikovaných schopností. K tomu by metoda měla přistupovat k příslušným vlastnostem, například k vlastnostim System.Management.Automation.Provider.CmdletProvider.Exclude* a System.Management.Automation.Provider.CmdletProvider.Include* .
Ve výchozím nastavení by přepisy této metody neměly čtečku načítat objekty, které jsou uživateli skryté, pokud vlastnost System.Management.Automation.Provider.CmdletProvider.Force* není nastavena na
true. Chyba by měla být zapsána, pokud cesta představuje položku skrytou před uživatelem a System.Management.Automation.Provider.CmdletProvider.Force* je nastavena nafalse.Vaše implementace metody System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* by měla volat System.Management.Automation.Provider.CmdletProvider.ShouldProcess a ověřit její návratovou hodnotu před jakýmikoli změnami v datovém úložišti. Tato metoda se používá k potvrzení provedení operace před změnou stavu systému, například vymazáním obsahu. System.Management.Automation.Provider.CmdletProvider.ShouldProcess odesílá uživateli název zdroje, který má být změněn, přičemž runtime Windows PowerShell zohledňuje všechna nastavení příkazové řádky nebo preference proměnné při určování, co má být zobrazeno.
Po volání na System.Management.Automation.Provider.CmdletProvider.ShouldProcess vrátí
true, pokud lze provést potenciálně nebezpečné systémové úpravy, měla by metoda System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* vyvolat metodu System.Management.Automation.Provider.CmdletProvider.ShouldContinue . Tato metoda odesílá uživateli potvrzovací zprávu, která umožňuje další zpětnou vazbu naznačující, že potenciálně nebezpečná operace by měla být pokračována.
Připojení dynamických parametrů k Clear-ItemProperty Cmdletu
Cmdlet Clear-ItemProperty může vyžadovat další parametry, které jsou dynamicky specifikovány za běhu. Pro poskytnutí těchto dynamických parametrů musí poskytovatel vlastností Windows PowerShell implementovat metodu System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* . Tato metoda vrací objekt, který má vlastnosti a pole s atributy pro parsování podobnými třídě cmdlet nebo objektu System.Management.Automation.RuntimeDefinedParameterDictionary . Hodnota může být vrácena, null pokud není třeba přidávat dynamické parametry.
Zde je výchozí implementace System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* z TemplateProvider.cs souboru poskytnutého Windows PowerShell.
Vytvoření poskytovatele Windows PowerShell
Podívejte se, jak registrovat cmdlety, poskytovatele a hostitelské aplikace.
Viz také
Navrhněte svého poskytovatele Windows PowerShell
Rozšíření typů objektů a formátování
Jak registrovat cmdlety, poskytovatele a hostitelské aplikace