Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten temat jest punktem wyjścia dowiesz się, jak utworzyć dostawcę programu Windows PowerShell. Podstawowy dostawca opisany tutaj udostępnia metody uruchamiania i zatrzymywania dostawcy, a mimo że ten dostawca nie zapewnia dostępu do magazynu danych lub pobierania lub ustawiania danych w magazynie danych, zapewnia podstawowe funkcje wymagane przez wszystkich dostawców.
Jak wspomniano wcześniej, podstawowy dostawca opisany tutaj implementuje metody uruchamiania i zatrzymywania dostawcy. Środowisko uruchomieniowe programu Windows PowerShell wywołuje te metody w celu zainicjowania i niezainicjowania dostawcy.
Uwaga
Przykład tego dostawcy można znaleźć w pliku AccessDBSampleProvider01.cs dostarczonym przez program Windows PowerShell.
Definiowanie klasy dostawcy programu Windows PowerShell
Pierwszym krokiem tworzenia dostawcy programu Windows PowerShell jest zdefiniowanie jej klasy .NET. Ten podstawowy dostawca definiuje klasę o nazwie AccessDBProvider
pochodzącą z klasy bazowej System.Management.Automation.Provider.CmdletProvider.
Zaleca się umieszczenie klas dostawców w Providers
przestrzeni nazw przestrzeni nazw interfejsu API, na przykład xxx.PowerShell.Providers. Ten dostawca używa Microsoft.Samples.PowerShell.Provider
przestrzeni nazw, w której są uruchamiane wszystkie przykłady dostawców programu Windows PowerShell.
Uwaga
Klasa dostawcy programu Windows PowerShell musi być jawnie oznaczona jako publiczna. Klasy, które nie są oznaczone jako publiczne, będą domyślnie wewnętrznych i nie zostaną znalezione przez środowisko uruchomieniowe programu Windows PowerShell.
Oto definicja klasy dla tego podstawowego dostawcy:
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : CmdletProvider
Tuż przed definicją klasy należy zadeklarować atrybut System.Management.Automation.Provider.CmdletProviderAttribute z składnią [CmdletProvider()].
W razie potrzeby możesz ustawić słowa kluczowe atrybutu, aby dodatkowo zadeklarować klasę. Zwróć uwagę, że atrybut System.Management.Automation.Provider.CmdletProviderAttribute zadeklarowany tutaj zawiera dwa parametry. Pierwszy parametr atrybutu określa przyjazną dla dostawcy nazwę domyślną, którą użytkownik może zmodyfikować później. Drugi parametr określa funkcje zdefiniowane przez program Windows PowerShell, które dostawca uwidacznia środowisko uruchomieniowe programu Windows PowerShell podczas przetwarzania poleceń. Możliwe wartości możliwości dostawcy są definiowane przez wyliczenie System.Management.Automation.Provider.ProviderCapabil ities. Ponieważ jest to podstawowy dostawca, nie obsługuje żadnych możliwości.
Uwaga
W pełni kwalifikowana nazwa dostawcy programu Windows PowerShell zawiera nazwę zestawu i inne atrybuty określone przez program Windows PowerShell podczas rejestracji dostawcy.
Definiowanie informacji o stanie Provider-Specific
Klasa bazowa System.Management.Automation.Provider.CmdletProvider i wszystkie klasy pochodne są traktowane jako bezstanowe, ponieważ środowisko uruchomieniowe programu Windows PowerShell tworzy wystąpienia dostawcy tylko zgodnie z wymaganiami. W związku z tym, jeśli dostawca wymaga pełnej kontroli i konserwacji stanu dla danych specyficznych dla dostawcy, musi pochodzić z klasy System.Management.Automation.ProviderInfo klasy. Klasa pochodna powinna definiować elementy członkowskie niezbędne do zachowania stanu, aby można było uzyskać dostęp do danych specyficznych dla dostawcy, gdy środowisko uruchomieniowe programu Windows PowerShell wywołuje metodę System.Management.Automation.Provider.CmdletProvider.Start* w celu zainicjowania dostawcy.
Dostawca programu Windows PowerShell może również zachować stan oparty na połączeniu. Aby uzyskać więcej informacji na temat obsługi stanu połączenia, zobacz Tworzenie dostawcy dysków programu PowerShell.
Inicjowanie dostawcy
Aby zainicjować dostawcę, środowisko uruchomieniowe programu Windows PowerShell wywołuje metodę System.Management.Automation.Provider.CmdletProvider.Start* podczas uruchamiania programu Windows PowerShell. W większości przypadków dostawca może użyć domyślnej implementacji tej metody, która po prostu zwraca obiekt System.Management.Automation.ProviderInfo opisujący dostawcę. Jednak w przypadku, gdy chcesz dodać dodatkowe informacje inicjacyjne, należy zaimplementować własną System.Management.Automation.Provider.CmdletProvider.Start* metodę, która zwraca zmodyfikowaną wersję System.Management.Automation.ProviderInfo obiektu, który jest przekazywany do dostawcy. Ogólnie rzecz biorąc, ta metoda powinna zwrócić podany obiekt System.Management.Automation.ProviderInfo przekazany do niego lub zmodyfikowany obiekt System.Management.Automation.ProviderInfo zawierający inne informacje o inicjowaniu.
Ten podstawowy dostawca nie zastępuje tej metody. Jednak poniższy kod przedstawia domyślną implementację tej metody:
Dostawca może zachować stan informacji specyficznych dla dostawcy zgodnie z opisem w Definiowanie stanu danych specyficznych dla dostawcy. W takim przypadku implementacja musi zastąpić metodę System.Management.Automation.Provider.CmdletProvider.Start*, aby zwrócić wystąpienie klasy pochodnej.
Uruchamianie parametrów dynamicznych
Implementacja dostawcy metody System.Management.Automation.Provider.CmdletProvider.Start* może wymagać dodatkowych parametrów. W takim przypadku dostawca powinien zastąpić metodę System.Management.Automation.Provider.CmdletProvider.StartDynamicParameters* i zwrócić obiekt zawierający właściwości i pola z atrybutami analizy podobnymi do klasy poleceń cmdlet lub System.Management.Automation.Automation.RuntimeDefinedParameterDictionary.
Ten podstawowy dostawca nie zastępuje tej metody. Jednak poniższy kod przedstawia domyślną implementację tej metody:
Uninitializing the Provider
Aby zwolnić zasoby używane przez dostawcę programu Windows PowerShell, dostawca powinien zaimplementować własną metodę System.Management.Automation.Provider.CmdletProvider.Stop*. Ta metoda jest wywoływana przez środowisko uruchomieniowe programu Windows PowerShell w celu niezainicjowania dostawcy na zamknięciu sesji.
Ten podstawowy dostawca nie zastępuje tej metody. Jednak poniższy kod przedstawia domyślną implementację tej metody:
Przykładowy kod
Aby uzyskać pełny przykładowy kod, zobacz AccessDbProviderSample01 Code Sample.
Testowanie dostawcy programu Windows PowerShell
Po zarejestrowaniu dostawcy programu Windows PowerShell w programie Windows PowerShell możesz go przetestować, uruchamiając obsługiwane polecenia cmdlet w wierszu polecenia. W przypadku tego podstawowego dostawcy uruchom nową powłokę i użyj polecenia cmdlet Get-PSProvider
, aby pobrać listę dostawców i upewnić się, że dostawca programu AccessDb jest obecny.
Get-PSProvider
Zostanie wyświetlone następujące dane wyjściowe:
Name Capabilities Drives
---- ------------ ------
AccessDb None {}
Alias ShouldProcess {Alias}
Environment ShouldProcess {Env}
FileSystem Filter, ShouldProcess {C, Z}
Function ShouldProcess {function}
Registry ShouldProcess {HKLM, HKCU}
Zobacz też
tworzenie dostawców programu Windows PowerShell
projektowanie dostawcy programu Windows PowerShell