Udostępnij za pomocą


Projektowanie dostawcy Windows PowerShell

Powinieneś wdrożyć dostawcę Windows PowerShell, jeśli Twój produkt lub konfiguracja udostępnia zestaw przechowywanych danych, na przykład bazę danych, którą użytkownik będzie chciał przeglądać lub nawigować. Dodatkowo, jeśli Twój produkt dostarcza kontener, nawet jeśli nie jest kontenerem wielopoziomowym, sensowne jest wdrożenie dostawcy Windows PowerShell. Na przykład możesz chcieć zaimplementować dostawcę kontenera PowerShell w Windows, jeśli czasownik Copy, Move, Rename, New lub Remove ma sens jako operacja na Twoim produkcie lub danych konfiguracyjnych.

Ścieżki Windows PowerShell identyfikują Twojego dostawcę

Środowisko uruchomieniowe Windows PowerShell korzysta ze ścieżek Windows PowerShell do dostępu do odpowiedniego dostawcy Windows PowerShell. Gdy cmdlet określa jedną z tych ścieżek, środowisko wykonawcze wie, którego dostawcy użyć do dostępu do powiązanego magazynu danych. Ścieżki te obejmują ścieżki kwalifikowane przez drive, kwalifikowane przez dostawcę, ścieżki bezpośrednie od dostawcy oraz ścieżki wewnętrzne dla dostawców. Każdy dostawca Windows PowerShell musi obsługiwać jedną lub więcej z tych ścieżek.

Więcej informacji o ścieżkach Windows PowerShell znajdziesz w artykule Jak działa Windows PowerShell.

Definiowanie ścieżki Drive-Qualified

Aby użytkownik mógł uzyskać dostęp do danych znajdujących się na fizycznym dysku, Twój dostawca Windows PowerShell musi obsługiwać ścieżkę kwalifikowaną na dysku. Ta ścieżka zaczyna się od nazwy dysku, po której następuje dwukropek (:), na przykład mydrive:\abc\bar.

Definiowanie ścieżki Provider-Qualified

Aby środowisko uruchomieniowe Windows PowerShell mogło inicjować i odinicjalizować dostawcę, Twój dostawca Windows PowerShell musi obsługiwać ścieżkę kwalifikowaną przez dostawcę. Na przykład FileSystem::\\uncshare\abc\bar to ścieżka kwalifikowana przez dostawcę dla dostawcy systemu plików udostępniana przez Windows PowerShell.

Definiowanie ścieżki Provider-Direct

Aby umożliwić zdalny dostęp do dostawcy Windows PowerShell, powinien on obsługiwać bezpośrednią ścieżkę do dostawcy do dostawcy w danym miejscu. Na przykład dostawca Windows PowerShell w rejestrze może używać \\server\regkeypath jako ścieżki bezpośredniej do dostawcy.

Definiowanie ścieżki Provider-Internal

Aby umożliwić cmdlet dostawcy dostęp do danych za pomocą interfejsów programistycznych (API) nie-Windows PowerShell, Twój dostawca Windows PowerShell powinien obsługiwać ścieżkę wewnętrzną operatora. Ta ścieżka jest wskazana po "::" w ścieżce kwalifikowanej przez dostawcę. Na przykład wewnętrzna ścieżka dostawcy dla dostawcy systemu plików Windows PowerShell to \\uncshare\abc\bar.

Zmiana przechowywanych danych

Podczas nadpisywania metod modyfikujących bazowy magazyn danych, zawsze wywołuj metodę System.Management.Automation.Provider.CmdletProvider.WriteItemObject* z najbardziej up-to-datą wersji elementu zmienionego przez tę metodę. Infrastruktura dostawcy decyduje, czy obiekt przedmiotu musi zostać przekazany do potoku, na przykład gdy użytkownik określa parametr -PassThru. Jeśli pobieranie elementu o największej up-to-daty jest kosztowną operacją (pod względem wydajności), możesz przetestować właściwość Context.PassThru, aby sprawdzić, czy faktycznie musisz zapisać ten element.

Wybierz podstawową klasę dla swojego dostawcy

Windows PowerShell oferuje szereg klas bazowych, które możesz wykorzystać do implementacji własnego dostawcy Windows PowerShell. Projektując dostawcę, wybierz klasę bazową, opisaną w tej sekcji, która najlepiej odpowiada Twoim wymaganiom.

Każda podstawowa klasa dostawcy Windows PowerShell udostępnia zestaw cmdletów. Ta sekcja opisuje cmdlety, ale nie opisuje ich parametrów.

Wykorzystując stan sesji, środowisko uruchomieniowe Windows PowerShell udostępnia kilka cmdletów lokalizacyjnych wybranym wybranym operatorom Windows PowerShell, takich jak Get-Location, Set-Location, Pop-Location, i Push-Location cmdlety. Możesz użyć Get-Help cmdletu, aby uzyskać informacje o tych lokalizacjach cmdletów.

Podstawowa klasa CmdletProvider

Klasa System.Management.Automation.Provider.CmdletProvider definiuje podstawowego dostawcy Windows PowerShell. Ta klasa wspiera deklarację dostawcy i dostarcza szereg właściwości oraz metod dostępnych dla wszystkich dostawców Windows PowerShell. Klasa jest wywoływana Get-PSProvider przez cmdlet, aby wypisać wszystkich dostępnych dostawców na sesję. Implementacja tego cmdletu jest dostarczana przez stan sesji.

Uwaga / Notatka

Dostawcy Windows PowerShell są dostępni dla wszystkich zakresów języka Windows PowerShell.

DriveCmdletProvider Base Class

Klasa System.Management.Automation.Provider.DriveCmdletProvider definiuje dostawcę dysków Windows PowerShell, który obsługuje operacje dodawania nowych dysków, usuwania istniejących dysków oraz inicjalizacji dysków domyślnych. Na przykład dostawca systemu plików udostępniany przez Windows PowerShell inicjalizuje napędy dla wszystkich zamontowanych woluminów, takich jak dyski twarde i napędy CD/DVD.

Ta klasa pochodzi z podstawowej klasy System.Management.Automation.Provider.CmdletProvider . Poniższa tabela przedstawia cmdlety ujawnione przez tę klasę. Oprócz wymienionych, Get-PSDrive cmdlet (exposed by session state) jest powiązanym cmdletem służącym do pobierania dostępnych dysków.

Cmdlet Definition
New-PSDrive Tworzy nowy dysk do sesji i przesyła informacje o dysku.
Remove-PSDrive Usuwa dysk z sesji.

ItemCmdletProvider Base Class

Klasa System.Management.Automation.Provider.ItemCmdletProvider definiuje dostawcę elementów Windows PowerShell, który wykonuje operacje nad poszczególnymi elementami magazynu danych i nie zakłada żadnych możliwości kontenerowych ani nawigacyjnych. Ta klasa pochodzi z podstawowej klasy System.Management.Automation.Provider.DriveCmdletProvider . Poniższa tabela przedstawia cmdlety ujawnione przez tę klasę.

Cmdlet Definition
Clear-Item Usuwa aktualną zawartość elementów w określonej lokalizacji i zastępuje ją wartością "clear" określoną przez dostawcę. Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.
Get-Item Pobiera elementy z podanego miejsca i przesyła strumieniowanie powstałych obiektów.
Invoke-Item Wywołuje domyślną akcję dla elementu na określonej ścieżce.
Set-Item Ustawia element w podanej lokalizacji o wskazanej wartości. Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.
Resolve-Path Rozwiązuje dzikie karty dla ścieżki Windows PowerShell i przesyła informacje o ścieżce.
Test-Path Testuje określoną ścieżkę i zwraca, true jeśli istnieje, a false jeśli nie. Ten cmdlet został zaimplementowany, IsContainer aby wspierać parametr dla metody System.Management.Automation.Provider.CmdletProvider.WriteItemObject* .

ContainerCmdletProvider Base Class

Klasa System.Management.Automation.Provider.ContainerCmdletProvider definiuje dostawcę kontenera Windows PowerShell, który udostępnia użytkownikowi kontener dla elementów magazynu danych. Pamiętaj, że dostawca kontenerów Windows PowerShell może być używany tylko wtedy, gdy istnieje jeden kontener (bez zagnieżdżonych kontenerów) zawierający elementy. Jeśli są zagnieżdżone kontenery, musisz zaimplementować dostawcę nawigacji w Windows PowerShell.

Ta klasa pochodzi z podstawowej klasy System.Management.Automation.Provider.ItemCmdletProvider . Poniższa tabela definiuje cmdlety zaimplementowane przez tę klasę.

Cmdlet Definition
Copy-Item Kopiuje przedmioty z jednego miejsca do drugiego. Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.
Get-ChildItem Pobiera przedmioty potomne w określonej lokalizacji i przesyła je strumieniowo jako obiekty.
New-Item Tworzy nowe elementy w określonej lokalizacji i przesyła powstały obiekt strumieniowo.
Remove-Item Usuwa przedmioty z podanego miejsca.
Rename-Item Przekształca nazwę przedmiotu w określonym miejscu. Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.

Klasa System.Management.Automation.Provider.NavigationCmdletProvider definiuje dostawcę nawigacji Windows PowerShell, który wykonuje operacje dla elementów korzystających z więcej niż jednego kontenera. Ta klasa pochodzi z podstawowej klasy System.Management.Automation.Provider.ContainerCmdletProvider . Poniższa tabela przedstawia cmdlety prezentowane przez tę klasę.

Cmdlet Definition
Combine-Path Łączy dwie ścieżki w jedną ścieżkę, wykorzystując specyficzny dla dostawcy separator między ścieżkami. Ten cmdlet przesyła struny.
Move-Item Przenosi przedmioty do określonego miejsca. Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.

Powiązany cmdlet to podstawowy Parse-Path cmdlet udostępniany przez Windows PowerShell. Ten cmdlet może być używany do parsowania ścieżki Windows PowerShell, aby wspierać ten Parent parametr. Streamuje łańcuch ścieżki rodzica.

Wybierz interfejsy dostawców do wsparcia

Oprócz wywodzenia z jednej z podstawowych klas Windows PowerShell, Twój dostawca Windows PowerShell może wspierać inne funkcje, korzystając z jednego lub więcej z poniższych interfejsów dostawców. Ta sekcja definiuje te interfejsy oraz cmdlety obsługiwane przez każdy z nich. Nie opisuje parametrów cmdletów obsługiwanych przez interfejs. Informacje o parametrach cmdlet są dostępne online za pomocą Get-Command cmdletów i Get-Help .

IContentCmdletProvider

Interfejs System.Management.Automation.Provider.IContentCmdletProvider definiuje dostawcę treści, który wykonuje operacje nad treścią elementu danych. Poniższa tabela przedstawia cmdlety udostępnione przez ten interfejs.

Cmdlet Definition
Add-Content Do zawartości określonego elementu dodaje podane długości wartości. Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.
Clear-Content Ustawia zawartość określonego elementu na wartość "clear". Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.
Get-Content Pobiera zawartość określonych elementów i przesyła strumieniowanie powstałych obiektów.
Set-Content Zastępuje istniejącą zawartość wybranymi przedmiotami. Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.

IPropertyCmdletProvider

Interfejs System.Management.Automation.Provider.IPropertyCmdletProvider definiuje własność dostawcy Windows PowerShell, która wykonuje operacje nad właściwościami elementów w magazynie danych. Poniższa tabela przedstawia cmdlety udostępnione przez ten interfejs.

Uwaga / Notatka

Parametr Path w tych cmdletach wskazuje ścieżkę do elementu zamiast identyfikować właściwość.

Cmdlet Definition
Clear-ItemProperty Ustawia właściwości określonych elementów na wartość "clear". Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.
Get-ItemProperty Pobiera własności z określonych elementów i przesyła strumieniowanie powstałych obiektów.
Set-ItemProperty Ustala właściwości określonych elementów o wskazanych wartościach. Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.

IDynamicPropertyCmdletProvider

Interfejs System.Management.Automation.Provider.IDynamicPropertyCmdletProvider , wywodząc się z System.Management.Automation.Provider.IPropertyCmdletProvider, definiuje dostawcę, który określa parametry dynamiczne dla obsługiwanych cmdletów. Ten typ dostawcy obsługuje operacje, dla których właściwości można zdefiniować w czasie działania, na przykład operację nowej właściwości. Takie operacje nie są możliwe na obiektach o statycznie definiowanych właściwościach. Poniższa tabela przedstawia cmdlety udostępnione przez ten interfejs.

Cmdlet Definition
Copy-ItemProperty Kopiuje własność z określonego elementu do innego elementu. Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.
Move-ItemProperty Przenosi właściwość z określonego elementu do innego. Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.
New-ItemProperty Tworzy właściwość na określonych elementach i przesyła strumieniowanie powstałych obiektów.
Remove-ItemProperty Usuwa właściwość dla określonych elementów.
Rename-ItemProperty Przekształca nazwę własności określonych elementów. Ten cmdlet nie przepuszcza obiektu wyjściowego przez potok, chyba że jego PassThru parametr zostanie określony.

ISecurityDescriptorCmdletProvider

Interfejs System.Management.Automation.Provider.ISecurityDescriptorCmdletProvider dodaje funkcjonalność deskryptorów bezpieczeństwa do dostawcy. Ten interfejs pozwala użytkownikowi uzyskać i ustawić informacje o deskryptorze bezpieczeństwa dla danego elementu w magazynie danych. Poniższa tabela przedstawia cmdlety udostępnione przez ten interfejs.

Cmdlet Definition
Get-Acl Pobiera informacje zawarte w liście kontroli dostępu (ACL), która jest częścią deskryptora bezpieczeństwa służącego do ochrony zasobów systemu operacyjnego, na przykład pliku lub obiektu.
Set-Acl Ustawia informacje do ACL. Ma formę instancji System.Security.AccessControl.ObjectSecurity na elementach przeznaczonych dla określonej ścieżki. Ten cmdlet może ustawiać informacje o plikach, kluczach i podkluczach w rejestrze lub w dowolnym innym elemencie dostawcy, jeśli dostawca Windows PowerShell obsługuje ustawianie informacji bezpieczeństwa.

Zobacz też

Tworzenie dostawców Windows PowerShell

Jak działa Windows PowerShell

Windows PowerShell SDK