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. |
NavigationCmdletProvider, klasa podstawowa
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. |