Sdílet prostřednictvím


Navrhování vašeho poskytovatele Windows PowerShell

Pokud váš produkt nebo konfigurace zpřístupňuje sadu uložených dat, například databázi, kterou chce uživatel procházet nebo prohlížet, byste měli implementovat poskytovatele Windows PowerShell. Navíc, pokud váš produkt poskytuje kontejner, i když není víceúrovňový kontejner, dává smysl implementovat poskytovatele Windows PowerShell. Například můžete chtít implementovat poskytovatele kontejnerů Windows PowerShell, pokud dává smysl sloveso Copy, Move, Rename, New nebo Remove jako operace na vašem produktu nebo konfiguračních datech.

Windows PowerShell cesty identifikují vašeho poskytovatele

Runtime Windows PowerShell používá cesty Windows PowerShell k přístupu k příslušnému poskytovateli Windows PowerShell. Když cmdlet specifikuje jednu z těchto cest, runtime ví, kterého poskytovatele použít k přístupu k příslušnému datovému úložišti. Tyto cesty zahrnují cesty kvalifikované podle disku, cesty kvalifikované poskytovatelem, přímé cesty poskytovatele a interní cesty poskytovatele. Každý poskytovatel Windows PowerShell musí podporovat jednu nebo více z těchto cest.

Pro více informací o cestách Windows PowerShell viz Jak funguje Windows PowerShell.

Definování Drive-Qualified cesty

Aby uživatel mohl přistupovat k datům umístěným na fyzickém disku, musí váš poskytovatel Windows PowerShell podporovat cestu kvalifikovanou na disku. Tato cesta začíná názvem disku následovaným dvojtečkou (:), například mydrive:\abc\bar.

Definování Provider-Qualified cesty

Aby runtime Windows PowerShell mohl inicializovat a odinicializovat poskytovatele, musí váš poskytovatel Windows PowerShell podporovat cestu kvalifikovanou pro poskytovatele. Například FileSystem::\\uncshare\abc\bar je cesta kvalifikovaná poskytovatelem pro poskytovatele souborových systémů poskytovaná Windows PowerShell.

Definování Provider-Direct cesty

Aby bylo možné vzdáleně přistupovat k vašemu poskytovateli Windows PowerShell, mělo by podporovat přímou cestu poskytovatele, která se předává přímo poskytovateli Windows PowerShell pro aktuální lokalitu. Například poskytovatel Windows PowerShell v registru může použít \\server\regkeypath jako přímou cestu k poskytovateli.

Definování Provider-Internal cesty

Aby poskytovatelský cmdlet mohl přistupovat k datům pomocí programovacích rozhraní (API), který není Windows PowerShell, měl by váš poskytovatel Windows PowerShell podporovat interní cestu poskytovatele. Tato cesta je označena za "::" v cestě kvalifikované pro poskytovatele. Například interní cesta poskytovatele pro poskytovatele souborového systému Windows PowerShell je \\uncshare\abc\bar.

Změna uložených dat

Při přepisování metod, které upravují základní datové úložiště, vždy volejte metodu System.Management.Automation.Provider.CmdletProvider.WriteItemObject* s nejaktuálnější verzí položky změněnup-toou touto metodou. Infrastruktura poskytovatele určuje, zda je potřeba objekt položky předat do pipeline, například když uživatel zadá parametr -PassThru. Pokud je získání položky s největším up-to-data nákladná operace (z hlediska výkonu), můžete otestovat vlastnost Context.PassThru, abyste zjistili, zda je skutečně potřeba výslednou položku zapsat.

Vyberte si základní třídu pro svého poskytovatele

Windows PowerShell poskytuje řadu základních tříd, které můžete použít k implementaci vlastního poskytovatele Windows PowerShell. Při navrhování poskytovatele zvolte základní třídu, popsanou v této části, která nejlépe odpovídá vašim požadavkům.

Každá základní třída poskytovatele Windows PowerShell zpřístupňuje sadu cmdletů. Tato sekce popisuje cmdlety, ale nepopisuje jejich parametry.

Pomocí stavu relace zpřístupňuje runtime Windows PowerShell několik lokalizačních cmdletů určitým poskytovatelům Windows PowerShell, jako jsou Get-Location, Set-Location, Pop-Location, a Push-Location cmdlety. Pomocí cmdletu můžete Get-Help získat informace o těchto lokačních cmdletech.

Základní třída CmdletProvider

Třída System.Management.Automation.Provider.CmdletProvider definuje základního poskytovatele Windows PowerShell. Tato třída podporuje deklaraci poskytovatelů a poskytuje řadu vlastností a metod, které jsou dostupné všem poskytovatelům Windows PowerShell. Třída je vyvolána Get-PSProvider příkazovým příkazem k vyvedení všech dostupných poskytovatelů pro danou relaci. Implementace tohoto cmdletu je poskytována stavem relace.

Poznámka:

Poskytovatelé Windows PowerShell jsou dostupní pro všechny jazykové rozsahy Windows PowerShell.

DriveCmdletProvider Base Class

Třída System.Management.Automation.Provider.DriveCmdletProvider definuje poskytovatele disků Windows PowerShell, který podporuje operace pro přidávání nových disků, odstraňování stávajících disků a inicializaci výchozích disků. Například poskytovatel souborových systémů poskytovaný Windows PowerShell inicializuje mechaniky všech připojených svazků, jako jsou pevné disky a CD/DVD jednotky.

Tato třída vychází ze základní třídy System.Management.Automation.Provider.CmdletProvider . Následující tabulka uvádí cmdlety vystavené touto třídou. Kromě těchto jmen je Get-PSDrive cmdlet (exposed by session state) příbuzný cmdlet, který slouží k načtení dostupných disků.

Cmdlet Definition
New-PSDrive Vytvoří nový disk pro relaci a streamuje informace o disku.
Remove-PSDrive Odebere disk ze relace.

ItemCmdletProvider Base Class

Třída System.Management.Automation.Provider.ItemCmdletProvider definuje poskytovatele položek Windows PowerShell, který provádí operace na jednotlivých položkách datového úložiště a nepředpokládá žádné schopnosti kontejneru ani navigace. Tato třída vychází ze základní třídy System.Management.Automation.Provider.DriveCmdletProvider . Následující tabulka uvádí cmdlety vystavené touto třídou.

Cmdlet Definition
Clear-Item Vymaže aktuální obsah položek na určeném místě a nahrazuje jej hodnotou "clear" stanovenou poskytovatelem. Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.
Get-Item Získá položky z určeného místa a streamuje výsledné objekty.
Invoke-Item Vyvolá výchozí akci pro položku na určené cestě.
Set-Item Nastaví položku na určené místo s uvedenou hodnotou. Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.
Resolve-Path Vyřeší žolíky pro cestu Windows PowerShell a streamuje informace o cestě.
Test-Path Testuje zadanou cestu a vrací true , pokud existuje, a false pokud ne. Tento cmdlet je implementován tak, aby podporoval IsContainer parametr pro metodu System.Management.Automation.Provider.CmdletProvider.WriteItemObject* .

ContainerCmdletProvider Base Class

Třída System.Management.Automation.Provider.ContainerCmdletProvider definuje poskytovatele kontejnerů Windows PowerShell, který uživateli zpřístupňuje kontejner pro položky datového úložiště. Mějte na paměti, že poskytovatel kontejnerů Windows PowerShell lze použít pouze tehdy, když je jeden kontejner (žádné vnořené kontejnery) s položkami. Pokud jsou kontejnery vnořené, musíte implementovat navigačního poskytovatele Windows PowerShell.

Tato třída vychází ze základní třídy System.Management.Automation.Provider.ItemCmdletProvider . Následující tabulka definuje cmdlety implementované touto třídou.

Cmdlet Definition
Copy-Item Kopíruje položky z jednoho místa na druhé. Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.
Get-ChildItem Vyhledává podpoložky na určeném místě a streamuje je jako objekty.
New-Item Vytvoří nové položky na určeném místě a výsledný objekt streamuje.
Remove-Item Odstraní předměty z určeného místa.
Rename-Item Přejmenuje položku na určeném místě. Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.

Třída System.Management.Automation.Provider.NavigationCmdletProvider definuje poskytovatele navigace ve Windows PowerShell, který provádí operace pro položky využívající více než jeden kontejner. Tato třída vychází ze základní třídy System.Management.Automation.Provider.ContainerCmdletProvider . Následující tabulka uvádí cmdlety vystavené touto třídou.

Cmdlet Definition
Combine-Path Kombinuje dvě cesty do jedné cesty, přičemž mezi cestami se používá oddělovač specifický pro poskytovatele. Tento cmdlet streamuje struny.
Move-Item Přesouvá předměty na určené místo. Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.

Související cmdlet je základní Parse-Path cmdlet poskytovaný Windows PowerShell. Tento cmdlet lze použít k analýze cesty Windows PowerShell pro podporu parametru Parent . Streamuje rodičovský řetězec cesty.

Vyberte rozhraní poskytovatele pro podporu

Kromě odvození z jedné ze základních tříd Windows PowerShell může váš poskytovatel Windows PowerShell podporovat i další funkce odvozením z jednoho nebo více z následujících rozhraní poskytovatele. Tato sekce definuje tato rozhraní a cmdlety podporované každým z nich. Nepopisuje parametry pro cmdlety podporované rozhraním. Informace o parametrech cmdletu jsou dostupné online pomocí Get-CommandGet-Help a cmdletů.

IContentCmdletProvider

Rozhraní System.Management.Automation.Provider.IContentCmdletProvider definuje poskytovatele obsahu, který provádí operace s obsahem datové položky. Následující tabulka uvádí cmdlety dostupné tímto rozhraním.

Cmdlet Definition
Add-Content Přidává uvedené délky hodnot k obsahu zadané položky. Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.
Clear-Content Nastaví obsah specifikované položky na hodnotu "clear". Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.
Get-Content Získá obsah specifikovaných položek a streamuje výsledné objekty.
Set-Content Nahrazuje stávající obsah za určené předměty. Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.

IPropertyCmdletProvider

Rozhraní System.Management.Automation.Provider.IPropertyCmdletProvider definuje vlastnost Windows PowerShell provider, který provádí operace s vlastnostmi položek v datovém úložišti. Následující tabulka uvádí cmdlety dostupné tímto rozhraním.

Poznámka:

Parametr na těchto cmdletech označuje Path cestu k položce místo identifikace vlastnosti.

Cmdlet Definition
Clear-ItemProperty Nastavuje vlastnosti specifikovaných položek na hodnotu "clear". Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.
Get-ItemProperty Získá vlastnosti ze specifikovaných prvků a streamuje výsledné objekty.
Set-ItemProperty Nastavuje vlastnosti specifikovaných položek s uvedenými hodnotami. Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.

IDynamicPropertyCmdletProvider

Rozhraní System.Management.Automation.Provider.IDynamicPropertyCmdletProvider , odvozené ze System.Management.Automation.Provider.IPropertyCmdletProvider, definuje poskytovatele, který specifikuje dynamické parametry pro podporované cmdlety. Tento typ poskytovatele zpracovává operace, pro které lze vlastnosti definovat za běhu, například novou operaci vlastností. Takové operace nejsou možné na položkách se staticky definovanými vlastnostmi. Následující tabulka uvádí cmdlety dostupné tímto rozhraním.

Cmdlet Definition
Copy-ItemProperty Kopíruje vlastnost ze specifikované položky na jinou položku. Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.
Move-ItemProperty Přesouvá vlastnost z dané položky na jinou. Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.
New-ItemProperty Vytvoří vlastnost na specifikovaných položkách a streamuje výsledné objekty.
Remove-ItemProperty Odstraní vlastnost pro specifikované položky.
Rename-ItemProperty Přejmenuje vlastnost specifikovaných položek. Tento cmdlet nepředává výstupní objekt pipeline, pokud není jeho PassThru parametr specifikován.

ISecurityDescriptorCmdletProvider

Rozhraní System.Management.Automation.Provider.ISecurityDescriptorCmdletProvider přidává poskytovateli funkce bezpečnostních deskriptorů. Toto rozhraní umožňuje uživateli získat a nastavit informace o bezpečnostních deskriptorech pro položku v datovém úložišti. Následující tabulka uvádí cmdlety dostupné tímto rozhraním.

Cmdlet Definition
Get-Acl Získává informace obsažené v seznamu řízení přístupu (ACL), což je součást bezpečnostního deskriptoru používaného k ochraně zdrojů operačního systému, například souboru nebo objektu.
Set-Acl Nastavuje informace pro ACL. Je to instance System.Security.AccessControl.ObjectSecurity na položce určené pro danou cestu. Tento cmdlet může nastavit informace o souborech, klíčích a podklíčích v registru nebo v jakémkoli jiném položce poskytovatele, pokud poskytovatel Windows PowerShell podporuje nastavení bezpečnostních informací.

Viz také

Vytváření poskytovatelů Windows PowerShell

Jak Windows PowerShell funguje

Windows PowerShell SDK