Projektowanie dostawcy programu Windows PowerShell

Należy zaimplementować dostawcę Windows PowerShell, jeśli produkt lub konfiguracja uwidacznia zestaw przechowywanych danych, takich jak baza danych, którą użytkownik będzie chciał przeglądać lub nawigować. Ponadto, jeśli produkt udostępnia kontener, nawet jeśli nie jest kontenerem wielopoziomowym, warto zaimplementować Windows PowerShell kontenera. Na przykład można zaimplementować dostawcę kontenera usługi Windows PowerShell, jeśli czasownik polecenia cmdlet Kopiuj, Przenieś, Zmień nazwę, Nowy lub Usuń ma sens jako operację na produkcie lub danych konfiguracji.

Windows PowerShell Ścieżki identyfikują dostawcę

Środowisko Windows PowerShell uruchomieniowe używa Windows PowerShell dostępu do odpowiedniego Windows PowerShell dostawcy. Gdy polecenie cmdlet określa jedną z tych ścieżek, środowisko uruchomieniowe wie, którego dostawcy użyć w celu uzyskania dostępu do skojarzonego magazynu danych. Te ścieżki obejmują ścieżki kwalifikowane przez dysk, ścieżki kwalifikowane przez dostawcę, ścieżki bezpośrednie dostawcy i ścieżki wewnętrzne dostawcy. Każdy Windows PowerShell musi obsługiwać co najmniej jedną z tych ścieżek.

Aby uzyskać więcej informacji na Windows PowerShell, zobacz How Windows PowerShell Works (Jak Windows PowerShell działa).

Definiowanie ścieżki Drive-Qualified danych

Aby umożliwić użytkownikowi dostęp do danych znajdujących się na dysku fizycznym, dostawca Windows PowerShell musi obsługiwać ścieżkę kwalifikowaną na dysku. Ta ścieżka rozpoczyna się od nazwy dysku, po którym następuje dwukropek (:), na przykład mydrive:\abc\bar.

Definiowanie ścieżki Provider-Qualified danych

Aby umożliwić Windows PowerShell uruchomieniowe, aby zainicjować i niezainicjować dostawcę, dostawca Windows PowerShell musi obsługiwać ścieżkę kwalifikowaną przez dostawcę. Na przykład FileSystem:: \uncshare\abc\bar to ścieżka kwalifikowana przez dostawcę systemu plików, którą \ Windows PowerShell.

Definiowanie ścieżki Provider-Direct danych

Aby umożliwić zdalny dostęp do dostawcy Windows PowerShell, powinna obsługiwać ścieżkę bezpośrednią dostawcy do przekazania bezpośrednio do dostawcy Windows PowerShell dla bieżącej lokalizacji. Na przykład dostawca rejestru może Windows PowerShell \ \server\regkeypath jako ścieżki bezpośredniej dostawcy.

Definiowanie ścieżki Provider-Internal danych

Aby umożliwić dostawcy polecenia cmdlet do uzyskiwania dostępu do danych przy użyciu interfejsów Windows PowerShell programowania aplikacji (API), dostawca Windows PowerShell powinien obsługiwać ścieżkę wewnętrzną dostawcy. Ta ścieżka jest wskazywana po "::" w ścieżce kwalifikowanej przez dostawcę. Na przykład wewnętrzna ścieżka dostawcy dla systemu plików, Windows PowerShell to \ \uncshare\abc\bar.

Zmienianie przechowywanych danych

W przypadku zastępowania metod, które modyfikują bazowy magazyn danych, zawsze należy wywołać metodę System.Management.Automation.Provider.Cmdletprovider.Writeitemobject* najbardziej aktualnej wersji elementu zmienionej przez tę metodę. Infrastruktura dostawcy określa, czy obiekt elementu musi zostać przekazany do potoku, na przykład gdy użytkownik określa parametr -PassThru. Jeśli pobieranie najbardziej aktualnego elementu jest kosztowną operacją (z wydajnością), możesz przetestować właściwość Context.PassThru, aby określić, czy w rzeczywistości musisz napisać wynikowy element.

Wybieranie klasy bazowej dla dostawcy

Windows PowerShell udostępnia wiele klas bazowych, których można użyć do zaimplementowania własnego Windows PowerShell dostawcy. Podczas projektowania dostawcy wybierz klasę bazową opisaną w tej sekcji, która najlepiej odpowiada Twoim potrzebom.

Każda Windows PowerShell klasy bazowej dostawcy udostępnia zestaw polecenia cmdlet. W tej sekcji opisano polecenia cmdlet, ale nie opisano ich parametrów.

Przy użyciu stanu sesji środowisko Windows PowerShell udostępnia kilka polecenia cmdlet lokalizacji niektórym dostawcom Windows PowerShell, takim jak Get-Location polecenia Set-Location Pop-Location cmdlet , , i Push-Location . Aby uzyskać informacje o tych poleceniach cmdlet lokalizacji, można Get-Help użyć polecenia cmdlet .

Klasa podstawowa CmdletProvider

Klasa System.Management.Automation.Provider.Cmdletprovider definiuje podstawowego Windows PowerShell dostawcy. Ta klasa obsługuje deklarację dostawcy i dostarcza szereg właściwości i metod, które są dostępne dla wszystkich Windows PowerShell dostawców. Klasa jest wywoływana przez polecenie Get-PSProvider cmdlet , aby wyświetlić listę wszystkich dostępnych dostawców dla sesji. Implementacja tego polecenia cmdlet jest zasłaniana przez stan sesji.

Uwaga

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

DriveCmdletProvider, klasa podstawowa

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 i inicjowania dysków domyślnych. Na przykład dostawca FileSystem dostarczony przez program Windows PowerShell inicjuje dyski dla wszystkich zainstalowanych woluminów, takich jak dyski twarde i dyski CD/DVD.

Ta klasa pochodzi od klasy bazowej System.Management.Automation.Provider.Cmdletprovider. W poniższej tabeli wymieniono polecenia cmdlet udostępniane przez tę klasę. Oprócz wymienionych polecenie cmdlet (widoczne według stanu sesji) jest powiązanym poleceniem cmdlet używanym do Get-PSDrive pobierania dostępnych dysków.

Polecenie cmdlet Definicja
New-PSDrive Tworzy nowy dysk dla sesji i przesyła strumieniowo informacje o dysku.
Remove-PSDrive Usuwa dysk z sesji.

ItemCmdletProvider, klasa podstawowa

Klasa System.Management.Automation.Provider.Itemcmdletprovider definiuje dostawcę elementu usługi Windows PowerShell, który wykonuje operacje na poszczególnych elementach magazynu danych i nie przyjmuje żadnych możliwości nawigacji ani kontenera. Ta klasa pochodzi od klasy bazowej System.Management.Automation.Provider.Drivecmdletprovider. W poniższej tabeli wymieniono polecenia cmdlet udostępniane przez tę klasę.

Polecenie cmdlet Definicja
Clear-Item Czyszczy bieżącą zawartość elementów w określonej lokalizacji i zastępuje ją wartością "clear" określoną przez dostawcę. To polecenie cmdlet nie przekaże obiektu wyjściowego za pośrednictwem potoku, chyba że PassThru określono jego parametr.
Get-Item Pobiera elementy z określonej lokalizacji i przesyła strumieniowo wynikowe obiekty.
Invoke-Item Wywołuje akcję domyślną dla elementu w określonej ścieżce.
Set-Item Ustawia element w określonej lokalizacji z wskazaną wartością. To polecenie cmdlet nie przekaże obiektu wyjściowego za pośrednictwem potoku, chyba że PassThru określono jego parametr.
Resolve-Path Rozwiązuje symboli wieloznacznych dla ścieżki Windows PowerShell strumienie informacji o ścieżce.
Test-Path Testuje podaną ścieżkę i zwraca wartość true , jeśli istnieje. false To polecenie cmdlet jest implementowane w celu obsługi parametru dla metody IsContainer System.Management.Automation.Provider.Cmdletprovider.Writeitemobject*.

ContainerCmdletProvider, klasa podstawowa

Klasa System.Management.Automation.Provider.Containercmdletprovider definiuje dostawcę kontenera usługi Windows PowerShell, który uwidacznia kontener dla elementów magazynu danych użytkownikowi. Należy pamiętać, że Windows PowerShell kontenera może być używany tylko wtedy, gdy istnieje jeden kontener (bez zagnieżdżonych kontenerów) z elementami w nim. Jeśli istnieją zagnieżdżone kontenery, należy zaimplementować dostawcę Windows PowerShell nawigacji.

Ta klasa pochodzi od klasy bazowej System.Management.Automation.Provider.Itemcmdletprovider. W poniższej tabeli zdefiniowano polecenia cmdlet zaimplementowane przez tę klasę.

Polecenie cmdlet Definicja
Copy-Item Kopiuje elementy z jednej lokalizacji do innej. To polecenie cmdlet nie przekaże obiektu wyjściowego za pośrednictwem potoku, chyba że PassThru określono jego parametr.
Get-Childitem Pobiera elementy podrzędne w określonej lokalizacji i przesyła je strumieniowo jako obiekty.
New-Item Tworzy nowe elementy w określonej lokalizacji i przesyła strumieniowo wynikowy obiekt.
Remove-Item Usuwa elementy z określonej lokalizacji.
Rename-Item Zmienia nazwę elementu w określonej lokalizacji. To polecenie cmdlet nie przekaże obiektu wyjściowego za pośrednictwem potoku, chyba że PassThru określono jego parametr.

Klasa System.Management.Automation.Provider.Navigationcmdletprovider definiuje dostawcę nawigacji usługi Windows PowerShell, który wykonuje operacje na elementach, które używają więcej niż jednego kontenera. Ta klasa pochodzi od klasy bazowej System.Management.Automation.Provider.Containercmdletprovider. W poniższej tabeli przedstawiono polecenia cmdlet udostępniane przez tę klasę.

Polecenie cmdlet Definicja
Combine-Path Łączy dwie ścieżki w jedną ścieżkę przy użyciu ogranicznika specyficznego dla dostawcy między ścieżkami. To polecenie cmdlet przesyła strumieniowo ciągi.
Move-Item Przenosi elementy do określonej lokalizacji. To polecenie cmdlet nie przekaże obiektu wyjściowego za pośrednictwem potoku, chyba że PassThru określono jego parametr.

Powiązane polecenie cmdlet to podstawowe Parse-Path cmdlet, które jest Windows PowerShell. To polecenie cmdlet może służyć do analizowania Windows PowerShell ścieżki do obsługi Parent parametru. Przesyła on strumieniowo ciąg ścieżki nadrzędnej.

Wybieranie interfejsów dostawcy do pomocy technicznej

Oprócz wyprowadzania z jednej z klas bazowych Windows PowerShell, dostawca Windows PowerShell może obsługiwać inne funkcje przez wyprowadzanie z co najmniej jednego z następujących interfejsów dostawcy. W tej sekcji zdefiniowano te interfejsy i polecenia cmdlet obsługiwane przez poszczególne interfejsy. Nie opisano w nim parametrów dla obsługiwanych przez interfejs polecenia cmdlet. Informacje o parametrach polecenia cmdlet są dostępne online przy użyciu Get-Command polecenia Get-Help cmdlet i .

IContentCmdletProvider

Interfejs System.Management.Automation.Provider.Icontentcmdletprovider definiuje dostawcę zawartości, który wykonuje operacje na zawartości elementu danych. W poniższej tabeli wymieniono polecenia cmdlet udostępniane przez ten interfejs.

Polecenie cmdlet Definicja
Add-Content Dołącza wskazane długości wartości do zawartości określonego elementu. To polecenie cmdlet nie przekaże obiektu wyjściowego przez potok, chyba że PassThru określono jego parametr.
Clear-Content Ustawia zawartość określonego elementu na wartość "wyczyść". To polecenie cmdlet nie przekaże obiektu wyjściowego przez potok, chyba że PassThru określono jego parametr.
Get-Content Pobiera zawartość określonych elementów i przesyła strumieniowo wynikowe obiekty.
Set-Content Zastępuje istniejącą zawartość dla określonych elementów. To polecenie cmdlet nie przekaże obiektu wyjściowego przez potok, chyba że PassThru określono jego parametr.

IPropertyCmdletProvider

Interfejs System.Management.Automation.Provider.Ipropertycmdletprovider definiuje dostawcę właściwości Windows PowerShell, który wykonuje operacje na właściwościach elementów w magazynie danych. W poniższej tabeli wymieniono polecenia cmdlet udostępniane przez ten interfejs.

Uwaga

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

Polecenie cmdlet Definicja
Clear-ItemProperty Ustawia właściwości określonych elementów na wartość "wyczyść". To polecenie cmdlet nie przekaże obiektu wyjściowego przez potok, chyba że PassThru określono jego parametr.
Get-ItemProperty Pobiera właściwości z określonych elementów i przesyła strumieniowo wynikowe obiekty.
Set-ItemProperty Ustawia właściwości określonych elementów za pomocą wskazanych wartości. To polecenie cmdlet nie przekaże obiektu wyjściowego przez potok, chyba że PassThru określono jego parametr.

IDynamicPropertyCmdletProvider

Interfejs System.Management.Automation.Provider.Idynamicpropertycmdletprovider pochodzący z klasy System.Management.Automation.Provider.Ipropertycmdletproviderdefiniuje dostawcę, który określa parametry dynamiczne dla obsługiwanych przez nie cmdlet. Ten typ dostawcy obsługuje operacje, dla których właściwości mogą być definiowane w czasie działania, na przykład nowa operacja właściwości. Takie operacje nie są możliwe w przypadku elementów o statycznie zdefiniowanych właściwościach. W poniższej tabeli wymieniono polecenia cmdlet udostępniane przez ten interfejs.

Polecenie cmdlet Definicja
Copy-ItemProperty Kopiuje właściwość z określonego elementu do innego elementu. To polecenie cmdlet nie przekaże obiektu wyjściowego przez potok, chyba że PassThru określono jego parametr.
Move-ItemProperty Przenosi właściwość z określonego elementu do innego elementu. To polecenie cmdlet nie przekaże obiektu wyjściowego przez potok, chyba że PassThru określono jego parametr.
New-ItemProperty Tworzy właściwość na określonych elementach i przesyła strumieniowo wynikowe obiekty.
Remove-ItemProperty Usuwa właściwość dla określonych elementów.
Rename-ItemProperty Zmienia nazwę właściwości określonych elementów. To polecenie cmdlet nie przekaże obiektu wyjściowego przez potok, chyba że PassThru określono jego parametr.

ISecurityDescriptorCmdletProvider

Interfejs System.Management.Automation.Provider.Isecuritydescriptorcmdletprovider dodaje funkcje deskryptora zabezpieczeń do dostawcy. Ten interfejs umożliwia użytkownikowi uzyskiwanie i ustawianie informacji deskryptora zabezpieczeń dla elementu w magazynie danych. W poniższej tabeli wymieniono polecenia cmdlet udostępniane przez ten interfejs.

Polecenie cmdlet Definicja
Get-Acl Pobiera informacje zawarte na liście kontroli dostępu (ACL), która jest częścią deskryptora zabezpieczeń używanego do ochrony zasobów systemu operacyjnego, na przykład pliku lub obiektu.
Set-Acl Ustawia informacje dla listy ACL. Ma ona postać wystąpienia System.Security.Accesscontrol.Objectsecurity w elementach wyznaczonych dla określonej ścieżki. To polecenie cmdlet może ustawić informacje o plikach, kluczach i podkluczach w rejestrze lub dowolnym innym elementem dostawcy, jeśli dostawca Windows PowerShell obsługuje ustawienia informacji o zabezpieczeniach.

Zobacz też

Tworzenie Windows PowerShell dostawców

Jak Windows PowerShell działa

Windows PowerShell SDK