Odnajdywanie programu PowerShell

Program PowerShell to powłoka wiersza polecenia i język skryptowy w jednym. Program PowerShell został uruchomiony w systemie Windows. Miało to pomóc w automatyzacji zadań administracyjnych, ale teraz stał się międzyplatformowy i może być używany do różnych zadań.

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

Nawet wtedy może być konieczne masaże wyników trochę.

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

Użycie programu PowerShell rosło od czasów, w których był tylko system Windows. Jest ona nadal używana do automatyzacji zadań systemu Windows, ale obecnie można jej używać do wykonywania różnych 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 o wiele więcej obszarów użycia, ale na powyższej liście znajduje się wskazówka, że program PowerShell jest bardzo długi.

Kto używa programu PowerShell?

Program PowerShell jest bardzo zaawansowany i wiele osób, pracujących w wielu rolach, może korzystać z niego. Tradycyjnie program PowerShell był używany przez rolę administratora systemu, 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 jako polecenie-let.

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

Gdy po raz pierwszy wybierzesz program PowerShell, może to wydawać się zastraszające, ponieważ wydaje się, że 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. Za pomocą 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 należy przestrzegać większość poleceń. Odpowiedź zawiera opis tego, co robią te czasowniki. W miarę jak większość poleceń używa tego nazewnictwa, określa oczekiwania dotyczące tego, co robi polecenie. Ułatwia to wybranie odpowiedniego polecenia i nazwę polecenia, które należy utworzyć.
  • Get-Command. To polecenie pobiera listę wszystkich poleceń zainstalowanych na maszynie.
  • Get-Member. Działa na danych wyjściowych opartych na obiektach i umożliwia odnajdywanie obiektów, właściwości i metod dostępnych 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źć prawie wszystko, co musisz wiedzieć o programie PowerShell.

Czasownik

Czasownik jest ważnym pojęciem w programie PowerShell. Jest to standard nazewnictwa, którego przestrzega większość poleceń cmdlet. Jest to również standard nazewnictwa, który powinien być przestrzegany podczas pisania własnych poleceń. Chodzi o to, że czasownik mówi, co próbujesz zrobić, na przykład 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

Dane wyjściowe z jego uruchamiania to długa lista zleceń. Co jest pouczające o odpowiedzi, jest to, że pokazuje również więcej kontekstu, co takie zlecenie ma zrobić. Oto pierwszy wiersz danych wyjściowych:

Verb        AliasPrefix Group          Description
----        ----------- -----          -----------
Add         a           Common         Adds a resource to a container, or attaches an item to ano…

Znajdowanie poleceń za pomocą Get-Command

Polecenie Get-Command cmdlet zwraca listę wszystkich dostępnych poleceń zainstalowanych w systemie. Ta lista, którą wracasz, jest jednak dość duża. Aby ułatwić znajdowanie poleceń, można ograniczyć ilość informacji, które są zwracane. Odpowiedź można filtrować przy użyciu parametrów lub poleceń cmdlet pomocnika.

Filtruj według nazwy

Dane wyjściowe Get-Commandpolecenia można filtrować przy użyciu różnych parametrów. Filtrowanie w ten sposób dotyczy wykonywania zapytań o określoną właściwość w poleceniu. Chodzi o określenie właściwości, względem której chcesz filtrować, a następnie podanie ciągu, względem którego chcesz dopasować. W związku z tym uzyskasz porównanie, które wygląda następująco:

Get-Command -Name '*Process'

W tym momencie filtrowanie próbuje wykonać dokładne dopasowanie względem podanego argumentu ciągu. Jeśli chcesz mieć większą elastyczność, w porównaniu możesz użyć symbolu wieloznakowego *, który wykonuje dopasowywanie wzorca. Poniższy kod będzie szukać wszystkich poleceń, których nazwa kończy się procesem:

Powyżej parametr jest używany do filtrowania -Name . -NameOprócz funkcji można również filtrować wartości i -ParameterName-Type, na przykład .

Filtrowanie według czasownika i czasownika

Wiesz już, jak można filtrować według -Nameparametrów i że istnieją również inne parametry, na których można filtrować. Czasownik i czasownik to coś, co można również filtrować. Takie filtrowanie jest częścią nazwy polecenia.

  • Filtruj według zlecenia. Część czasownika nazwy polecenia jest najbardziej lewą częścią. W poleceniu Get-Processczęść czasownika to Get. Aby filtrować część czasownika, określ -Verb jako parametr w następujący sposób:

    Get-Command -Verb 'Get'
    

    Powyższe polecenie wyświetli listę wszystkich poleceń, w których część czasownika to Get.

  • Filtruj według nicownika. Najbardziej prawą częścią polecenia jest część wierzchołka. Gdzie czasownik powinien znajdować się wśród czasowników zwracanych z wywołania Get-Verb, nic nie może być niczym. W poleceniu Get-Processczęść to .Process Aby filtrować według nounu, określ -Noun jako parametr i argument ciągu, w następujący sposób:

    Get-Command -Noun U*
    

Tylko użycie czasownika lub czasownika do filtrowania może prowadzić do dużego wyniku. Aby zawęzić wyszukiwanie, warto połączyć dwa parametry, takie jak w poniższym przykładzie:

Get-Command -Verb Get -Noun U*

Wynik powyższego wygląda następująco:

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
Cmdlet          Get-UsageAggregates          2.0.0      Az.Billing

W ten sposób zawęziliśmy dane wyjściowe dość nieco, znając czasownik i to, co jest wywoływane.

Filtrowanie wyników za pomocą poleceń cmdlet pomocnika

Oprócz używania parametrów do filtrowania, można również użyć poleceń, aby ułatwić wykonanie tego zadania. Oto kilka poleceń, które mogą działać jako filtry:

  • Select-Object. Jest to bardzo wszechstronne polecenie, które ułatwia wybranie określonych właściwości z co najmniej jednego obiektu. Ponadto przy użyciu parametrów można ograniczyć odpowiedź, którą otrzymujesz. Oto przykład Select-Object użycia do żądania ograniczonej liczby rekordów:

    Get-Command | Select-Object -First 3
    

    Wynikiem powyższych jest trzy pierwsze polecenia zliczane od góry. Wynik wygląda następująco:

    CommandType     Name                                               Version    Source
    -----------     ----                                               -------    ------
    Alias           Add-AdlAnalyticsDataSource                         1.0.2      Az.DataLakeAnalytics
    Alias           Add-AdlAnalyticsFirewallRule                       1.0.2      Az.DataLakeAnalytics
    Alias           Add-AdlStoreFirewallRule                           1.3.0      Az.DataLakeStore
    

    Warto dokładniej przyjrzeć się temu poleceniu, ponieważ może zrobić o wiele więcej dokumentów Select-Object

  • Where-Object. Obiekt where ułatwia wybieranie obiektów z kolekcji na podstawie wartości właściwości. Polecenie przyjmuje wyrażenie, w którym można wyrazić kolumny/s, które mają być zgodne z wartościami. Aby znaleźć cały obiekt procesu, w ProcessName którym rozpoczyna się od p, można użyć Where-Object w następujący sposób:

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

    Powyżej polecenie Get-Process cmdlet tworzy kolekcję obiektów procesu. Aby odfiltrować odpowiedź, należy przekazać polecenieWhere-Object. Potok oznacza, że dwa lub więcej poleceń jest połączonych za pośrednictwem znaku potoku | . Chodzi o to, że dane wyjściowe z jednego polecenia służą jako dane wejściowe dla następnego polecenia, odczytywane od lewej do prawej. Wyrażenie Where-Object jest używane do filtrowania. Wyrażenie używa -like operatora i argumentu ciągu zawierającego wyrażenie wieloznaczne.

Eksplorowanie obiektów za pomocą Get-Member

Po zlokalizowaniu żądanego polecenia cmdlet chcesz dowiedzieć się więcej o tym, co generuje, dane wyjściowe. Dane wyjściowe są interesujące z kilku powodów, takich jak:

  • Autonomiczne. Możesz uruchomić tylko jedno polecenie cmdlet i chcesz wyświetlić dane wyjściowe w jakimś raporcie. Pytaniem, które należy zadać sobie, jest to, czy polecenie generuje dane wyjściowe, które działają dla Ciebie, czy też musisz go zmienić.
  • W przypadku użycia w potoku. W programie PowerShell często łączy się kilka poleceń w potoku, aby pobrać dane, filtrować i przekształcać je. Aby polecenie mieściło się w potoku, należy sprawdzić, jakie dane wejściowe i wyjściowe są generowane. Chodzi o to, że dane wyjściowe polecenia są używane jako dane wejściowe innego polecenia.

Polecenie Get-Member cmdlet wyświetla typ, właściwości i metody obiektu wynikowego. Potok danych wyjściowych, które chcesz sprawdzić w Get-Memberpliku .

Get-Process | Get-Member

Wynik wyświetla zwrócony typ jako TypeName , a następnie 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

Obiekt zwykle ma wiele właściwości i metod, aby łatwiej znaleźć szukane elementy, można filtrować wyniki. Za pomocą parametru -MemberTypemożna określić, aby na przykład wyświetlić wszystkie metody, takie jak w poniższym przykładzie:

Get-Process | Get-Member -MemberType Method

Po powrocie odpowiedzi program PowerShell zwykle wyświetla tylko kilka właściwości. W powyższej odpowiedzi Namezostanie wyświetlona wartość , MemberType i Definition została wyświetlona. Aby zmienić ten ekran, możesz użyć polecenia cmdlet Select-Object. Select-Object umożliwia określenie kolumn, które mają być widoczne. Możesz podać ją nazwą kolumny, rozdzielaną przecinkami lub symbolem wieloznacznymi *. Oto przykład Select-Object służący do pobierania Name i Definition:

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

Wyszukaj według typu

Innym sposobem na podejście do wyszukiwania żądanego polecenia jest wyszukiwanie poleceń wszystkich działających w tym samym typie. Gdy użyto Get-Membermetody , zwracany typ jest wyświetlany jako pierwszy wiersz odpowiedzi w następujący sposób:

TypeName: System.Diagnostics.Process

Teraz możesz użyć tego typu i wyszukać polecenia w następujący sposób:

Get-Command -ParameterType Process

Wynikiem wywołania powyższej jest lista z poleceniami, które działają wyłącznie na typie 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…

Jak widać, znajomość typu polecenia może znacznie zawęzić wyszukiwanie po poleceniach, które mogą być interesujące dla Ciebie.

Ćwiczenie — wywoływanie pierwszego polecenia

W tym ćwiczeniu dowiesz się, jak uruchomić pierwsze polecenie.

  1. Uruchom konsolę programu PowerShell, wpisując pwshpolecenie :

    pwsh
    
  2. Uruchom następujące $PSVersionTable.PSVersionpolecenie:

    $PSVersionTable.PSVersion
    

    Dane wyjściowe wyglądają podobnie do następujących:

    Major  Minor  Patch  PreReleaseLabel BuildLabel
    -----  -----  -----  --------------- ----------
    7      1      0
    

    Gratulacje, udało Ci się uruchomić pierwsze polecenie i udało ci się uzyskać informacje o wersji programu PowerShell zainstalowanej w systemie.

W tym ćwiczeniu twoim celem jest dowiedzieć się więcej o poleceniu. W ten sposób znajdziesz również takie rzeczy jak typ, na którym działa, i jakie inne podobne polecenia działają na tym samym typie.

  1. Upewnij się, że masz uruchomioną powłokę programu PowerShell

  2. Uruchom polecenie Get-Process:

    Get-Process | Get-Member | Select-Object TypeName -Unique
    

    Dane wyjściowe będą wyglądać mniej więcej tak:

    TypeName
    --------
    System.Diagnostics.Process
    --------
    

    Co wracasz, to typy zwracane przez polecenie Get-Command. W tym momencie możesz teraz dowiedzieć się, jakie inne polecenie również działa na tych typach.

  3. Uruchom polecenie Get-Command:

    Get-Command -ParameterType Process
    

    Dane wyjściowe będą wyglądać mniej więcej tak:

    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…
    

    Gratulacje, udało Ci się znaleźć inne polecenia, które działają w tym samym typie Process. Użycie Get-Member to dobry punkt wyjścia, aby zrozumieć, jakie inne polecenia należy zaewidencjonować dalej.

Podsumowanie

W pierwszej części przedstawiono, co to jest program PowerShell i jakie obszary mogą być używane. W tym miejscu nauczyliśmy się poleceń cmdlet, a w szczególności Get-Command, Get-Verb i Get-Member. Znajomość tych poleceń cmdlet jest ważna, ponieważ uczy się, jak się uczyć. W następnej części dowiesz się, jak korzystać z zaawansowanego systemu pomocy.

Dodatkowe zasoby