Poznawanie programu PowerShell

Program PowerShell to powłoka wiersza polecenia i język skryptowy w jednym. Program PowerShell został uruchomiony w systemie Windows, aby ułatwić automatyzowanie zadań administracyjnych. Teraz jest uruchamiana międzyplatformowa i może być używana do różnych zadań.

To, co sprawia, że program PowerShell jest unikatowy, jest to, że akceptuje i zwraca obiekty platformy .NET, a nie tekst. Ta funkcja ułatwia łączenie różnych poleceń w potoku.

Do czego można użyć programu PowerShell?

Użycie programu PowerShell wzrosła od czasów, w których był tylko system Windows. Jest on nadal używany do automatyzacji zadań systemu Windows, ale obecnie można go używać do wykonywania zadań, takich jak:

  • Zarządzanie chmurą. Program PowerShell może służyć do zarządzania zasobami w chmurze. Możesz na przykład pobrać informacje o zasobach w chmurze, a także zaktualizować lub wdrożyć nowe zasoby.
  • Ciągła integracja/ciągłe wdrażanie. Może być również używany jako część potoku ciągłej integracji/ciągłego wdrażania.
  • Automatyzowanie zadań dla usług Active Directory i Exchange. Służy do automatyzowania niemal dowolnego zadania w systemie Windows, takiego jak tworzenie użytkowników w usłudze Active Directory i skrzynkach pocztowych w programie Exchange.

Istnieje wiele obszarów użycia, ale poprzednia lista zawiera wskazówkę, że program PowerShell przeszedł długą drogę.

KtoTo używa programu PowerShell?

Program PowerShell to zaawansowane narzędzie, które może pomóc osobom pracującym w wielu rolach. Tradycyjnie program PowerShell był używany przez rolę System Administracja istrator, ale jest teraz używany przez osoby nazywające się DevOps, Cloud Ops, a nawet Deweloperzy.

Polecenia cmdlet programu PowerShell

Program PowerShell zawiera setki wstępnie zainstalowanych poleceń. Polecenia programu PowerShell są nazywane poleceniami cmdlet (wymawiane polecenia).

Nazwa każdego polecenia cmdlet składa się z pary Verb-Noun . Na przykład Get-Process. Ta konwencja nazewnictwa ułatwia zrozumienie, co robi polecenie cmdlet. Ułatwia również znajdowanie szukanych poleceń. Jeśli szukasz polecenia cmdlet do użycia, możesz filtrować czasownik lub rzeczownik.

Używanie poleceń cmdlet do eksplorowania programu PowerShell

Po pierwszym odebraniu programu PowerShell może to wydawać się zastraszające, ponieważ wydaje się, że jest tak wiele do nauki. Program PowerShell został zaprojektowany tak, aby ułatwić ci naukę w miarę potrzeb.

Program PowerShell zawiera polecenia cmdlet, które ułatwiają odnajdywanie programu PowerShell. Korzystając z tych trzech poleceń cmdlet, możesz dowiedzieć się, jakie polecenia są dostępne, co robią i na jakich typach działają.

  • Get-Verb. Uruchomienie tego polecenia zwraca listę zleceń, do których stosuje się większość poleceń. Odpowiedź zawiera opis tego, co robią te czasowniki. Ponieważ większość poleceń jest przestrzegana tej konwencji nazewnictwa, określa oczekiwania dotyczące działania polecenia. Ułatwia to wybranie odpowiedniego polecenia i nazwę polecenia, jeśli chcesz go utworzyć.
  • Get-Command. To polecenie pobiera listę wszystkich poleceń zainstalowanych na maszynie.
  • Get-Member. Działa na danych wyjściowych opartych na obiektach i jest w stanie wykryć, jaki obiekt, właściwości i metody są dostępne dla polecenia.
  • Get-Help. Wywołanie tego polecenia z nazwą polecenia jako argument wyświetla stronę pomocy opisującą różne części polecenia.

Za pomocą tych poleceń możesz odnaleźć niemal wszystko, co musisz wiedzieć o programie PowerShell.

Czasownik

Czasownik jest ważnym pojęciem w programie PowerShell. Jest to standard nazewnictwa, który następuje w większości poleceń cmdlet. Jest to również standard nazewnictwa, który powinien być obserwowany podczas pisania własnych poleceń. Chodzi o to, że czasownik mówi, co próbujesz zrobić, jak odczytywać lub zmieniać dane. Program PowerShell ma ustandaryzowaną listę zleceń. Aby uzyskać pełną listę wszystkich możliwych czasowników, użyj Get-Verb polecenia cmdlet :

Get-Verb

Polecenie cmdlet zwraca długą listę zleceń. Opis zawiera kontekst tego, co ma robić czasownik. Oto kilka pierwszych wierszy danych wyjściowych:

Verb    AliasPrefix   Group     Description
----    -----------   -----     -----------
Add     a             Common    Adds a resource to a container, or attaches an item to another item
Clear   cl            Common    Removes all the resources from a container but does not delete the container
Close   cs            Common    Changes the state of a resource to make it inaccessible, unavailable, or unusab…
Copy    cp            Common    Copies a resource to another name or to another container
Enter   et            Common    Specifies an action that allows the user to move into a resource
Exit    ex            Common    Sets the current environment or context to the most recently used context
...

Znajdowanie poleceń za pomocą polecenia Get-Command

Polecenie Get-Command cmdlet zwraca listę wszystkich dostępnych poleceń zainstalowanych w systemie. Lista, którą wracasz, jest dość duża. Możesz ograniczyć ilość informacji, które są zwracane, filtrując odpowiedź przy użyciu parametrów lub poleceń cmdlet pomocnika.

Filtruj według nazwy

Dane wyjściowe Get-Command można filtrować przy użyciu różnych parametrów. Filtrowanie umożliwia znajdowanie poleceń, które mają określone właściwości. Parametr Name umożliwia znalezienie określonego polecenia według nazwy.

Get-Command -Name Get-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management

Co zrobić, jeśli chcesz znaleźć wszystkie polecenia, które działają z procesami? Możesz użyć symbolu wieloznakowego * , aby dopasować inne formy ciągu. Na przykład:

Get-Command -Name *-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Debug-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Start-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Stop-Process      7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Wait-Process      7.0.0.0    Microsoft.PowerShell.Management

Filtrowanie według czasownika i czasownika

Istnieją inne parametry, które filtrują wartości czasowników i nounów. Część czasownika nazwy polecenia jest najbardziej lewą częścią. Czasownik powinien być jedną z wartości zwracanych przez Get-Verb polecenie cmdlet. Najbardziej właściwą częścią polecenia jest część wierzchołka. Noun może być niczym.

  • Filtruj według zlecenia. W poleceniu Get-Processczęść czasownika to Get. Aby odfiltrować część czasownika, użyj parametru Czasownik .

    Get-Command -Verb 'Get'
    

    W tym przykładzie wymieniono wszystkie polecenia używające czasownika Get.

  • Filtruj według nounu. W poleceniu Get-Process, częścią nounu jest Process. Aby filtrować dla unu, użyj parametru Noun . Poniższy przykład zwraca wszystkie polecenia cmdlet, które mają nouns począwszy od litery U.

    Get-Command -Noun U*
    

Ponadto możesz połączyć parametry, aby zawęzić wyszukiwanie, na przykład:

Get-Command -Verb Get -Noun U*
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Get-UICulture                7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Unique                   7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Uptime                   7.0.0.0    Microsoft.PowerShell.Utility

Filtrowanie wyników za pomocą poleceń cmdlet pomocnika

Możesz również użyć innych poleceń cmdlet do filtrowania wyników.

  • Select-Object. To uniwersalne polecenie ułatwia wybranie określonych właściwości z co najmniej jednego obiektu. Możesz również ograniczyć liczbę elementów, które otrzymujesz. Poniższy przykład zwraca wartości właściwości Name i Source dla pierwszych 5 poleceń dostępnych w bieżącej sesji.

    Get-Command | Select-Object -First 5 -Property Name, Source
    
    Name                      Source
    ----                      ------
    Add-AppPackage            Appx
    Add-AppPackageVolume      Appx
    Add-AppProvisionedPackage Dism
    Add-AssertionOperator     Pester
    Add-ProvisionedAppPackage Dism
    

    Aby uzyskać więcej informacji, zobacz Select-Object (Wybieranie obiektu).

  • Where-Object. To polecenie cmdlet umożliwia filtrowanie obiektów zwracanych na podstawie wartości właściwości. Polecenie przyjmuje wyrażenie, które może przetestować wartość właściwości. Poniższy przykład zwraca wszystkie procesy, w których ProcessName rozpoczyna się od p.

    Get-Process | Where-Object {$_.ProcessName -like "p*"}
    

    Polecenie Get-Process cmdlet zwraca kolekcję obiektów procesu. Aby odfiltrować odpowiedź, należy przekazać dane wyjściowe do Where-Object. Potokowanie oznacza, że co najmniej dwa polecenia są połączone za pośrednictwem znaku potoku | . Dane wyjściowe z jednego polecenia są wysyłane jako dane wejściowe dla następnego polecenia. Wyrażenie filtru -like dla Where-Object operatora używa operatora do dopasowywania procesów rozpoczynających się literą p.

Eksplorowanie obiektów za pomocą polecenia Get-Member

Po zlokalizowaniu żądanego polecenia cmdlet chcesz dowiedzieć się więcej o tym, jakie dane wyjściowe generuje. Polecenie Get-Member cmdlet wyświetla typ, właściwości i metody obiektu. Przeprowadź potok danych wyjściowych, które chcesz sprawdzić w pliku Get-Member.

Get-Process | Get-Member

Wynik wyświetla zwrócony typ jako TypeName i wszystkie właściwości i metody obiektu. Oto fragment takiego wyniku:

TypeName: System.Diagnostics.Process

Name        MemberType     Definition
----        ----------     ----------
Handles     AliasProperty  Handles = Handlecount
Name        AliasProperty  Name = ProcessName
...

Za pomocą parametru MemberType można ograniczyć zwracane informacje.

Get-Process | Get-Member -MemberType Method

Domyślnie program PowerShell wyświetla tylko kilka właściwości. W poprzednim przykładzie wyświetlono Nameelementy członkowskie i . MemberTypeDefinition Możesz użyć Select-Object polecenia , aby określić właściwości, które chcesz zobaczyć. Na przykład chcesz wyświetlić tylko Name właściwości i Definition :

Get-Process | Get-Member | Select-Object Name, Definition

Wyszukiwanie według typu parametru

Get-Member pokazano nam, że Get-Process zwraca obiekty typu procesu . Parametr Get-Command ParameterType polecenia może służyć do znajdowania innych poleceń, które przyjmują obiekty Procesu jako dane wejściowe.

Get-Command -ParameterType Process
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Debug-Process                7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Enter-PSHostProcess          7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Get-Process                  7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Get-PSHostProcessInfo        7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Stop-Process                 7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Wait-Process                 7.0.0.0    Microsoft.PowerShell.Managem…

Znajomość typu danych wyjściowych polecenia może pomóc w zawężaniu wyszukiwania powiązanych poleceń.

Dodatkowe zasoby