Udostępnij za pośrednictwem


Polecenia cmdlet — omówienie

Polecenie cmdlet to uproszczone polecenie, które jest używane w środowisku programu PowerShell. Środowisko uruchomieniowe programu PowerShell wywołuje te polecenia cmdlet w kontekście skryptów automatyzacji dostępnych w wierszu polecenia. Środowisko uruchomieniowe programu PowerShell wywołuje je programowo za pomocą interfejsów API programu PowerShell.

Cmdlet

Polecenia cmdlet wykonują akcję i zazwyczaj zwracają obiekt Microsoft .NET do następnego polecenia w potoku. Polecenie cmdlet to pojedyncze polecenie, które uczestniczy w semantyce potokowej PowerShell. Obejmuje to polecenia cmdlet binarne (C#), zaawansowane funkcje skryptów, cdXML i przepływy pracy.

W tej dokumentacji zestawu SDK opisano sposób tworzenia binarnych poleceń cmdlet napisanych w języku C#. Aby uzyskać informacje o poleceniach cmdlet opartych na skryptach, zobacz:

Aby utworzyć binarne polecenie cmdlet, należy zaimplementować klasę poleceń cmdlet, która pochodzi z jednej z dwóch wyspecjalizowanych klas bazowych poleceń cmdlet. Klasa pochodna musi:

  • Zadeklaruj atrybut identyfikujący klasę pochodną jako polecenie cmdlet.
  • Zdefiniuj właściwości publiczne, które są ozdobione atrybutami identyfikujące właściwości publiczne jako parametry polecenia cmdlet.
  • Zastąpić co najmniej jedną metodę przetwarzania danych wejściowych w celu przetwarzania rekordów.

Zestaw zawierający klasę można załadować bezpośrednio przy użyciu polecenia cmdlet Import-Module lub utworzyć aplikację hosta, która ładuje zestaw przy użyciu interfejsu API System.Management.Automation.Runspaces.InitialSessionState API. Obie metody zapewniają dostęp programowy i wiersza polecenia do funkcji polecenia cmdlet.

Terminy poleceń cmdlet

Następujące terminy są często używane w dokumentacji poleceń cmdlet programu PowerShell:

Atrybut polecenia cmdlet

Atrybut platformy .NET używany do deklarowania klasy poleceń cmdlet jako polecenia cmdlet. Mimo że program PowerShell używa kilku innych atrybutów, które są opcjonalne, wymagany jest atrybut cmdlet. Aby uzyskać więcej informacji o tym atrybucie, zobacz Deklaracja atrybutu polecenia cmdlet.

Parametr polecenia cmdlet

Właściwości publiczne definiujące parametry dostępne dla użytkownika lub aplikacji, która uruchamia polecenie cmdlet. Polecenia cmdlet mogą mieć wymagane parametry przełącznika o nazwach, pozycyjnych i. Parametry przełącznika umożliwiają definiowanie parametrów, które są oceniane tylko wtedy, gdy parametry są określone w wywołaniu. Aby uzyskać więcej informacji na temat różnych typów parametrów, zobacz Cmdlet Parameters.

Zestaw parametrów

Grupa parametrów, których można użyć w tym samym poleceniu, aby wykonać określoną akcję. Polecenie cmdlet może mieć wiele zestawów parametrów, ale każdy zestaw parametrów musi mieć co najmniej jeden parametr, który jest unikatowy. Dobry projekt polecenia cmdlet zdecydowanie sugeruje, że unikatowy parametr jest również wymaganym parametrem. Aby uzyskać więcej informacji na temat zestawów parametrów, zobacz zestawy parametrów poleceń cmdlet .

Parametr dynamiczny

Parametr dodawany do polecenia cmdlet w czasie wykonywania. Zazwyczaj parametry dynamiczne są dodawane do polecenia cmdlet, gdy inny parametr jest ustawiony na określoną wartość. Aby uzyskać więcej informacji na temat parametrów dynamicznych, zobacz Cmdlet Dynamic Parameters.

Metody przetwarzania danych wejściowych

Klasa System.Management.Automation.Cmdlet udostępnia następujące metody wirtualne używane do przetwarzania rekordów. Wszystkie pochodne klasy poleceń cmdlet muszą zastąpić co najmniej jedną z trzech pierwszych metod:

Aby uzyskać więcej informacji na temat tych metod, zobacz Metody przetwarzania danych wejściowych poleceń cmdlet.

Podczas implementowania polecenia cmdlet należy zastąpić co najmniej jedną z tych metod przetwarzania danych wejściowych. Zazwyczaj ProcessRecord() to metoda, która jest zastępowana, ponieważ jest wywoływana dla każdego rekordu, który przetwarza polecenie cmdlet. Natomiast metoda BeginProcessing() i EndProcessing() są wywoływane jednorazowo w celu wykonania wstępnego przetwarzania lub przetwarzania końcowego rekordów. Aby uzyskać więcej informacji na temat tych metod, zobacz Metody przetwarzania wejściowego.

Funkcja ShouldProcess

Program PowerShell umożliwia tworzenie poleceń cmdlet, które monitować użytkownika o opinię przed wprowadzeniem zmiany w systemie przez polecenie cmdlet. Aby użyć tej funkcji, polecenie cmdlet musi zadeklarować, że obsługuje funkcję ShouldProcess podczas deklarowania atrybutu cmdlet, a polecenie cmdlet musi wywołać metodę System.Management.Automation.Cmdlet.ShouldProcess i System.Management.Automation.Cmdlet.ShouldContinue metod z metody przetwarzania wejściowego. Aby uzyskać więcej informacji na temat obsługi funkcji ShouldProcess, zobacz żądanie potwierdzenia.

Transakcja

Logiczna grupa poleceń, które są traktowane jako pojedyncze zadanie. Zadanie automatycznie kończy się niepowodzeniem, jeśli jakiekolwiek polecenie w grupie zakończy się niepowodzeniem, a użytkownik ma możliwość zaakceptowania lub odrzucenia akcji wykonywanych w ramach transakcji. Aby wziąć udział w transakcji, polecenie cmdlet musi zadeklarować, że obsługuje transakcje po zadeklarowaniu atrybutu cmdlet. Obsługa transakcji została wprowadzona w programie Windows PowerShell 2.0. Aby uzyskać więcej informacji na temat transakcji, zobacz How to Support Transactions.

Czym różnią się polecenia cmdlet od poleceń

Polecenia cmdlet różnią się od poleceń w innych środowiskach powłoki poleceń w następujący sposób:

  • Polecenia cmdlet to wystąpienia klas platformy .NET; nie są to autonomiczne pliki wykonywalne.
  • Polecenia cmdlet można tworzyć na podstawie kilkunastu wierszy kodu.
  • Polecenia cmdlet zwykle nie wykonują własnych analiz, prezentacji błędów ani formatowania danych wyjściowych. Analizowanie, prezentacja błędów i formatowanie danych wyjściowych są obsługiwane przez środowisko uruchomieniowe programu PowerShell.
  • Polecenia cmdlet przetwarzają obiekty wejściowe z potoku, a nie strumieni tekstu, a polecenia cmdlet zwykle dostarczają obiekty jako dane wyjściowe do potoku.
  • Polecenia cmdlet są zorientowane na rekordy, ponieważ przetwarzają jeden obiekt naraz.

Klasy bazowe poleceń cmdlet

Program Windows PowerShell obsługuje polecenia cmdlet pochodzące z następujących dwóch klas bazowych.

  • Większość poleceń cmdlet jest oparta na klasach .NET, które pochodzą z System.Management.Automation.Cmdlet klasy bazowej. Wyprowadzanie z tej klasy umożliwia poleceniem cmdlet użycie minimalnego zestawu zależności w środowisku uruchomieniowym programu Windows PowerShell. Ma to dwie korzyści. Pierwszą korzyścią jest to, że obiekty poleceń cmdlet są mniejsze i mniej prawdopodobne, że zmiany w środowisku uruchomieniowym programu PowerShell będą miały mniejszy wpływ. Drugą korzyścią jest to, że jeśli musisz, możesz bezpośrednio utworzyć wystąpienie obiektu cmdlet, a następnie wywołać go bezpośrednio zamiast wywołać go za pośrednictwem środowiska uruchomieniowego programu PowerShell.

  • Bardziej złożone polecenia cmdlet są oparte na klasach platformy .NET, które pochodzą z System.Management.Automation.PSCmdlet klasy bazowej. Wyprowadzanie z tej klasy zapewnia znacznie większy dostęp do środowiska uruchomieniowego programu PowerShell. Ten dostęp umożliwia polecenie cmdlet wywoływanie skryptów, uzyskiwanie dostępu do dostawców oraz uzyskiwanie dostępu do bieżącego stanu sesji. (Aby uzyskać dostęp do bieżącego stanu sesji, uzyskasz i ustawisz zmienne sesji i preferencje). Jednak wyprowadzanie z tej klasy zwiększa rozmiar obiektu cmdlet i oznacza, że polecenie cmdlet jest ściślej powiązane z bieżącą wersją środowiska uruchomieniowego programu PowerShell.

Ogólnie rzecz biorąc, chyba że potrzebujesz rozszerzonego dostępu do środowiska uruchomieniowego programu PowerShell, należy utworzyć z klasy System.Management.Automation.Cmdlet. Jednak środowisko uruchomieniowe programu PowerShell ma rozbudowane możliwości rejestrowania na potrzeby wykonywania poleceń cmdlet. Jeśli model inspekcji zależy od tego rejestrowania, możesz zapobiec wykonaniu polecenia cmdlet z poziomu innego polecenia cmdlet, wyprowadzając z klasy System.Management.Automation.PSCmdlet.

Atrybuty poleceń cmdlet

Program PowerShell definiuje kilka atrybutów platformy .NET, które są używane do zarządzania poleceniami cmdlet i do określania typowych funkcji udostępnianych przez program PowerShell i które mogą być wymagane przez polecenie cmdlet. Na przykład atrybuty służą do wyznaczania klasy jako polecenia cmdlet, określania parametrów polecenia cmdlet i żądania weryfikacji danych wejściowych, aby deweloperzy poleceń cmdlet nie musieli implementować tej funkcji w kodzie polecenia cmdlet. Aby uzyskać więcej informacji na temat atrybutów, zobacz Atrybuty programu PowerShell.

Nazwy poleceń cmdlet

Program PowerShell używa pary nazw czasownika i nounu, aby nazwać polecenia cmdlet. Na przykład polecenie cmdlet Get-Command zawarte w programie PowerShell służy do pobierania wszystkich poleceń cmdlet zarejestrowanych w powłoce poleceń. Czasownik identyfikuje akcję wykonywaną przez polecenie cmdlet, a rzeczownik identyfikuje zasób, na którym polecenie cmdlet wykonuje swoją akcję.

Te nazwy są określane, gdy klasa .NET jest zadeklarowana jako polecenie cmdlet. Aby uzyskać więcej informacji na temat deklarowania klasy .NET jako polecenia cmdlet, zobacz Deklaracja atrybutu polecenia cmdlet.

Pisanie kodu polecenia cmdlet

Ten dokument zawiera dwa sposoby odnajdywania sposobu pisania kodu polecenia cmdlet. Jeśli wolisz zobaczyć kod bez wyjaśnienia, zobacz Przykłady kodu polecenia cmdlet. Jeśli wolisz więcej wyjaśnień dotyczących kodu, zobacz GetProc Tutorial, StopProc Tutoriallub SelectStr Tutorial temat.

Aby uzyskać więcej informacji na temat wytycznych dotyczących pisania poleceń cmdlet, zobacz Cmdlet Development Guidelines.

Zobacz też

Pojęcia dotyczące poleceń cmdlet programu PowerShell

pisanie polecenia cmdlet programu PowerShell

zestaw SDK programu PowerShell