Udostępnij za pośrednictwem


Projektowanie dostawcy programu Windows PowerShell

Należy zaimplementować dostawcę programu Windows PowerShell, jeśli produkt lub konfiguracja uwidacznia zestaw przechowywanych danych, takich jak baza danych, którą użytkownik będzie chciał nawigować lub przeglądać. Ponadto jeśli produkt udostępnia kontener, nawet jeśli nie jest kontenerem wieloszczepowym, warto zaimplementować dostawcę programu Windows PowerShell. Na przykład możesz zaimplementować dostawcę kontenera programu Windows PowerShell, jeśli czasownik cmdlet Copy, Move, Rename, New lub Remove ma sens jako operacja na danych produktu lub konfiguracji.

Ścieżki programu Windows PowerShell identyfikują dostawcę

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

Aby uzyskać więcej informacji na temat ścieżek programu Windows PowerShell, zobacz Jak działa program Windows PowerShell.

Definiowanie ścieżki Drive-Qualified

Aby umożliwić użytkownikowi dostęp do danych znajdujących się na dysku fizycznym, dostawca programu Windows PowerShell musi obsługiwać ścieżkę kwalifikowaną przez dysk. 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

Aby umożliwić środowisku uruchomieniowemu programu Windows PowerShell inicjowanie i uninitialize dostawcy, dostawca programu 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 dostarczana przez program Windows PowerShell.

Definiowanie ścieżki Provider-Direct

Aby zezwolić na zdalny dostęp do dostawcy programu Windows PowerShell, powinna obsługiwać ścieżkę bezpośrednią dostawcy, aby przekazać ją bezpośrednio do dostawcy programu Windows PowerShell dla bieżącej lokalizacji. Na przykład dostawca rejestru windows PowerShell może użyć \\server\regkeypath jako ścieżki bezpośredniej dostawcy.

Definiowanie ścieżki Provider-Internal

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

Zmienianie przechowywanych danych

Podczas zastępowania metod modyfikujących bazowy magazyn danych zawsze wywołaj metodę System.Management.Automation.Provider.CmdletProvider.WriteItemObject* metodę z najbardziej up-to-date 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 up-toelement -date jest kosztowną operacją (wydajność mądry), możesz przetestować właściwość Context.PassThru, aby określić, czy rzeczywiście musisz napisać wynikowy element.

Wybierz klasę bazową dostawcy

Program Windows PowerShell udostępnia szereg klas bazowych, których można użyć do zaimplementowania własnego dostawcy programu Windows PowerShell. Podczas projektowania dostawcy wybierz klasę bazową opisaną w tej sekcji, która jest najbardziej odpowiednia dla Twoich wymagań.

Każda klasa podstawowa dostawcy programu Windows PowerShell udostępnia zestaw poleceń cmdlet. W tej sekcji opisano polecenia cmdlet, ale nie opisuje ich parametrów.

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

CmdletProvider, klasa bazowa

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

Uwaga

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

DriveCmdletProvider, klasa bazowa

Klasa System.Management.Automation.Provider.DriveCmdletProvider definiuje dostawcę dysków programu 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 systemu plików dostarczony przez program Windows PowerShell inicjuje stacje dysków dla wszystkich zainstalowanych woluminów, takich jak dyski twarde i stacje urządzeń CD/DVD.

Ta klasa pochodzi z klasy podstawowej System.Management.Automation.Provider.CmdletProvider. W poniższej tabeli wymieniono polecenia cmdlet uwidocznione przez tę klasę. Oprócz tych wymienionych polecenie cmdlet Get-PSDrive (uwidocznione przez stan sesji) jest powiązanym poleceniem cmdlet używanym do pobierania dostępnych dysków.

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

ItemCmdletProvider, klasa bazowa

Klasa System.Management.Automation.Provider.ItemCmdletProvider definiuje dostawcę elementów programu Windows PowerShell, który wykonuje operacje na poszczególnych elementach magazynu danych i nie zakłada żadnych możliwości kontenera ani nawigacji. Ta klasa pochodzi z klasy bazowej System.Management.Automation.Provider.DriveCmdletProvider. W poniższej tabeli wymieniono polecenia cmdlet uwidocznione przez tę klasę.

Cmdlet Definicja
Clear-Item Czyści bieżącą zawartość elementów w określonej lokalizacji i zastępuje ją wartością "clear" określoną przez dostawcę. To polecenie cmdlet nie przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.
Get-Item Pobiera elementy z określonej lokalizacji i przesyła strumieniowo wynikowe obiekty.
Invoke-Item Wywołuje domyślną akcję elementu w określonej ścieżce.
Set-Item Ustawia element w określonej lokalizacji ze wskazaną wartością. To polecenie cmdlet nie przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.
Resolve-Path Rozpoznaje symbole wieloznaczne dla ścieżki programu Windows PowerShell i przesyła strumieniowo informacje o ścieżce.
Test-Path Testuje określoną ścieżkę i zwraca true, jeśli istnieje i false w przeciwnym razie. To polecenie cmdlet jest implementowane w celu obsługi parametru IsContainer dla metody System.Management.Automation.Provider.CmdletProvider.WriteItemObject*.

ContainerCmdletProvider, klasa bazowa

Klasa System.Management.Automation.Provider.ContainerCmdletProvider definiuje dostawcę kontenera programu Windows PowerShell, który uwidacznia kontener dla elementów magazynu danych użytkownikowi. Należy pamiętać, że dostawca kontenera programu Windows PowerShell 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, musisz zaimplementować dostawcę nawigacji programu Windows PowerShell.

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

Cmdlet Definicja
Copy-Item Kopiuje elementy z jednej lokalizacji do innej. To polecenie cmdlet nie przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.
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 przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.

Klasa System.Management.Automation.Provider.NavigationCmdletProvider definiuje dostawcę nawigacji programu Windows PowerShell, który wykonuje operacje dla elementów korzystających z więcej niż jednego kontenera. Ta klasa pochodzi z klasy bazowej System.Management.Automation.Provider.ContainerCmdletProvider. W poniższej tabeli wymieniono polecenia cmdlet uwidocznione przez tę klasę.

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 przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.

Powiązane polecenie cmdlet to podstawowe polecenie cmdlet Parse-Path dostarczone przez program Windows PowerShell. To polecenie cmdlet może służyć do analizowania ścieżki środowiska Windows PowerShell w celu obsługi parametru Parent. Przesyła strumieniowo ciąg ścieżki nadrzędnej.

Wybieranie interfejsów dostawcy do obsługi

Oprócz wyprowadzania z jednej z klas bazowych programu Windows PowerShell dostawca programu Windows PowerShell może obsługiwać inne funkcje, wyprowadzając je 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. Nie opisuje parametrów poleceń cmdlet obsługiwanych przez interfejs. Informacje o parametrach polecenia cmdlet są dostępne w trybie online przy użyciu poleceń cmdlet Get-Command i Get-Help.

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 uwidocznione przez ten interfejs.

Cmdlet Definicja
Add-Content Dołącza wskazane długości wartości do zawartości określonego elementu. To polecenie cmdlet nie przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.
Clear-Content Ustawia zawartość określonego elementu na wartość "clear". To polecenie cmdlet nie przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.
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 przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.

IPropertyCmdletProvider

Interfejs System.Management.Automation.Provider.IPropertyCmdletProvider definiuje właściwość dostawcy programu Windows PowerShell, który wykonuje operacje na właściwościach elementów w magazynie danych. W poniższej tabeli wymieniono polecenia cmdlet uwidocznione przez ten interfejs.

Uwaga

Parametr Path dla tych poleceń cmdlet wskazuje ścieżkę do elementu zamiast identyfikowania właściwości.

Cmdlet Definicja
Clear-ItemProperty Ustawia właściwości określonych elementów na wartość "clear". To polecenie cmdlet nie przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.
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 ze wskazanymi wartościami. To polecenie cmdlet nie przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.

IDynamicPropertyCmdletProvider

Interfejs System.Management.Automation.Provider.IDynamicPropertyCmdletProvider pochodzący z interfejsu System.Management.Automation.Provider.IPropertyCmdletProvider, definiuje dostawcę, który określa parametry dynamiczne obsługiwanych poleceń cmdlet. Ten typ dostawcy obsługuje operacje, dla których właściwości można zdefiniować w czasie wykonywania, na przykład nową operację właściwości. Takie operacje nie są możliwe w przypadku elementów ze statycznie zdefiniowanymi właściwościami. W poniższej tabeli wymieniono polecenia cmdlet uwidocznione przez ten interfejs.

Cmdlet Definicja
Copy-ItemProperty Kopiuje właściwość z określonego elementu do innego elementu. To polecenie cmdlet nie przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.
Move-ItemProperty Przenosi właściwość z określonego elementu do innego elementu. To polecenie cmdlet nie przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.
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 przekazuje obiektu wyjściowego przez potok, chyba że określono jego parametr PassThru.

ISecurityDescriptorCmdletProvider

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

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 dotyczące listy ACL. Jest to wystąpienie System.Security.AccessControl.ObjectSecurity elementów wyznaczonych dla określonej ścieżki. To polecenie cmdlet może ustawiać informacje o plikach, kluczach i podkluczach w rejestrze lub innym elemencie dostawcy, jeśli dostawca programu Windows PowerShell obsługuje ustawienie informacji zabezpieczających.

Zobacz też

tworzenie dostawców programu Windows PowerShell

jak działa program Windows PowerShell

zestaw SDK programu Windows PowerShell