Wyślij zapytanie Dołącz do Sii

Czy zdarzyło ci się kiedyś, wykonywać tę samą czynność tak wiele razy, że od klikania w myszkę, aż rozbolała cię ręka? Właśnie w takich sytuacjach z pomocą przychodzi opracowany przez Microsoft PowerShell, potężne narzędzie do automatyzacji i zarządzania systemami operacyjnymi.

Jedną z najważniejszych i wartych poznania funkcji w PowerShell jest system pomocy, który dostarcza obszerną dokumentację, przykłady kodu oraz pomocne wskazówki dla użytkowników. Ten artykuł jest przewodnikiem po systemie pomocy w PowerShell, który pomoże Ci w wykorzystaniu pełnego potencjału narzędzia.

Zacznijmy od początku

Osoba, która pierwszy raz słyszy o Powershell, może zadać sobie pytanie: „Jak to uruchomić?”. Nic prostszego – wystarczy wpisać „Windows Powershell” w opcji wyszukiwania znajdującej się na pasku zadań systemu Windows.

Uruchamianie Powershell
Ryc. 1 Uruchamianie Powershell

Uwaga! Wykonanie niektórych poleceń może wymagać uruchomienia konsoli z uprawnieniami administratora, jednak w tym wpisie nie będzie nam to potrzebne.

Patrząc na powyższą grafikę, nasunąć się może pytanie o to, czym jest Windows Powershell ISE. Spokojnie, to zagadnienie omówię troszeczkę później.

Okno konsoli Powershell
Ryc. 2 Okno konsoli Powershell

Polecenia w PowerShell

Po uruchomieniu programu widzimy tylko takie okno jak powyżej. Jeżeli zastanawiacie się, co z tym dalej zrobić, odpowiedź jest bardzo prosta. Wystarczy wpisać odpowiednie dla naszych zamiarów polecenie cmdlet.

Polecenia w PowerShell mają bardzo konkretną strukturę: Czasownik-Rzeczownik, czyli CO chcemy zrobić i NA CZYM chcemy to wykonać. Poniższy przykład Get-ChildItem wyświetla wszystkie pliki w folderze C:\Kurs.

Polecenie Get-ChildItem
Ryc. 3 Polecenie Get-ChildItem

Polecenia cmdlet możemy również podawać z konkretnymi parametrami. W poniższym przykładzie dodanie parametru -Directory wyświetla nam jedynie foldery. Warto skorzystać tutaj z dostępnych opcji i za pomocą klawiszy strzałek góra/dół odnaleźć ostatnio wpisywanie polecenia.

Parametr -Directory
Ryc. 4 Parametr -Directory

Skąd mamy znać wszystkie te polecenia? Czy powinniśmy się ich uczyć na pamięć? Ależ skąd! Cmdletów są tysiące, a każdy z nich może zawierać nawet kilkanaście parametrów. Gdybyśmy poprosili profesjonalistę IT, aby z głowy wskazał, jak wykonać coś w Powershell, prawdopodobnie nie uzyskalibyśmy odpowiedzi. Jednak, dając mu dostęp do konsoli, po chwili, dzięki systemowi pomocy, znalazłby rozwiązanie.

Podstawowe polecenia

Dwa podstawowe polecenia, które warto zapamiętać, to:

  • Get-Verb – zwraca listę czasowników, czyli pierwszy człon naszych poleceń. Jest to pomocne, gdy wiemy, co chcemy zrobić, lecz nie wiemy jak. Dla przykładu: chcąc utworzyć nowy folder, w naszej głowie może zaświtać pomysł, aby użyć czasownika CREATE. Jednak z Get-Verb szybko zobaczymy, iż takowy nie jest wykorzystywany, a zamiast niego możemy użyć NEW.
Get-Verb
Ryc. 5 Get-Verb
  • Get-Command – wyświetla listę wszystkich poleceń dostępnych w naszym systemie. Mając wiedzę, że szukamy czasownika NEW, możemy wpisać to jako parametr dla Get-Command i zamiast listy wszystkich poleceń, znaleźć te, zaczynające się od NEW.
    Aby komenda zadziałała poprawnie, na końcu wartości New trzeba dodać symbol „*”, który oznacza dowolną liczbę dowolnych znaków. Czyli cała komenda oznacza: Wyświetl wszystkie komendy zaczynające się od New.
Get-Command New*
Ryc. 6 Get-Command New*

Systemy pomocy

Gdy znamy już podstawy obsługi poleceń w Powershell i wiemy, jak odnaleźć te, które nas interesują, pora dowiedzieć się, jak uzyskać pomoc dotyczącą konkretnych cmdletów.

Klawisz TAB

Rozpocznijmy od przydatnej funkcji autouzupełniania. Jeżeli zaczniemy pisać komendę i naciśniemy klawisz TAB na klawiaturze, system automatycznie dokończy pisać za nas. Jeżeli to, co napisaliśmy, może zostać dokończone na wiele sposobów, wybierze pierwszy z nich (alfabetycznie), jednak naciśnięcie klawisza TAB spowoduje przejście do kolejnej opcji.

Dla przykładu: chcąc wyszukać Get-ChildItem, po wpisaniu Get-C i naciśnięciu klawisza TAB, pojawi nam się Get-Certificate, a do oczekiwanego polecenia możemy przeskoczyć, naciskając klawisz jeszcze kilka razy. Jednak gdy napiszemy Get-Ch, po wciśnięciu klawisza TAB pojawi się Get-ChildItem, a kolejne próby nie dadzą nam innych wyników.

Opcji autouzupełniania da się też użyć do wyszukiwania potrzebnych parametrów. Po wpisaniu polecenia możemy wstawić znak myślnika i nacisnąć TAB. Autouzupełnianie wyświetli pierwszy parametr (alfabetycznie) dostępny dla danego polecenia i pozwoli nam przeskakiwać po nich tak, jak robiliśmy to z komendami.

Show-Command

Funkcja Show-Command, tak samo jak Get-Command, wyświetla nam wszystkie dostępne polecenia. Robi to w oddzielnym oknie, które po wybraniu odpowiedniego cmdletu, zawiera również jego parametry. Te, które są wymagane (w poniższym przykładzie jest to ścieżka), oznaczono gwiazdką.

Show-Command
Ryc. 7 Show-Command

Get-Help

Get-Help wyświetla dokumenty pomocy dla wybranego polecenia. Choć brzmi to niepozornie, jest najbardziej rozbudowaną opcją pomocy.

Get-Help Get-Service
Ryc. 8 Get-Help Get-Service

Jak widać, pomoc jest podzielona na sekcje, a dodatkowo w REMARKS możemy zauważyć, że Get-Help zawiera parametr -FULL, który wyświetli wszystkie, jeszcze bardziej szczegółowe informacje na temat komendy. Należą do nich chociażby przykłady użycia – a te bywają szczególnie cenne.

Pełną pomoc możemy również wyświetlić w oddzielnym oknie za pomocą parametru -ShowWindow.

Get-Help Get-Service -Full
Ryc. 9 Get-Help Get-Service -Full

SYNTAX

W kontekście pomocy bardzo interesującą sekcją jest SYNTAX, który nie dla wszystkich jest tak oczywisty do odczytania. Spójrzmy na niego na przykładzie naszego Get-Service.

Get-Service SYNTAX
Ryc. 10 Get-Service SYNTAX

Jak możemy zauważyć, wewnątrz SYNTAX mamy oddzielone od siebie 3 zestawy parametrów dla tego samego polecenia. Są to tak zwane Parameter Sets, czyli sposób organizacji parametrów w zależności od różnych sposobów użycia. Różnią się one wymaganiem lub opcjonalnością niektórych parametrów, a czasami zawierają również unikalne dla siebie parametry. Co ważne, można korzystać tylko z jednego Parameter Set w jednym czasie.

Jak rozpoznać czy dany parametr jest wymagany czy też nie? Mówią nam o tym nawiasy kwadratowe []. Na powyższym przykładzie dla pierwszego Parameter Set widać zapis [-ComputerName <System.string[]>]. Taki zapis oznacza, że parametr ComputerName, jak i jego wartość, są opcjonalne, a jeżeli chcemy ich użyć, musimy napisać zarówno -ComputerName jak i wartość, która jest opakowana w znaki <>.

Potencjalny parametr z wartością
Ryc. 11 Potencjalny parametr z wartością

Istnieje możliwość, aby cały parametr wraz z jego wartością był opcjonalny. Dodatkowo, gdy chcemy go użyć, możemy też pominąć nazwę parametru i od razu podać wartość, tak jest w trzecim Parameter Set dla parametru [[-Name] <System.String[]>].

Nawiasy kwadratowe wokół całego parametru wraz z wartością oznaczają to samo, co w pierwszym przykładzie. Jednak dwa dodatkowe nawiasy wokół -Name oznaczają, że nie musimy podawać parametru, a wystarczy jego wartość.

Podana jedynie wartość opcjonalnego parametru
Ryc. 12 Podana jedynie wartość opcjonalnego parametru

Spójrzmy teraz na przykład składni innego polecenia:

Get-EventLog Syntax
Ryc. 13 Get-EventLog Syntax

Możemy tu zauważyć, że [-LogName] jest opcjonalne, ale jego wartość nie znajduje się w nawiasach kwadratowych, czyli jest wymagana. Oznacza to, że możemy, ale nie musimy, podać parametr -LogName, ale bez podania jego wartości komenda nie zadziała lub sama poprosi nas o podanie wartości parametru.

Wymagana wartość parametru
Ryc. 14 Wymagana wartość parametru
Co się dzieje, gdy nie podamy wymaganej wartości lub parametru
Ryc. 15 Co się dzieje, gdy nie podamy wymaganej wartości lub parametru

Jest to też dobry moment na zobrazowanie, że parametry z różnych Parameter Set nie zadziałają ze sobą. Mogliśmy zauważyć, że -List znajduje się wyłącznie w drugim Parameter Set. W poniższym przykładzie próbowałem zastosować go z parametrami opisanymi w pierwszym Parameter Set.

Próba użycia dwóch Parameter Set
Ryc. 16 Próba użycia dwóch Parameter Set

Jeżeli wartość parametru jest zakończona nawiasami kwadratowymi, tak jak w przypadku parametru [Source <System.String[]], oznacza to, że możemy podać kilka wartości oddzielonych od siebie przecinkiem. Na poniższym przykładzie wyświetlamy logi z dwóch źródeł: Outlook oraz VSS.

Wiele wartości
Ryc. 17 Wiele wartości
Wiele wartości
Ryc. 18 Wiele wartości

Niektóre parametry musimy podawać w odpowiedniej kolejności. Decyduje o tym wartość Position?, którą możemy znaleźć w sekcji pomocy o nazwie Parameters. Jak możemy zobaczyć, -LogName ma wartość 0, co oznacza, że musi zostać podana jako pierwsza, -InstanceID ma wartość 1, czyli musi zostać podana jako druga, a -Newest ma wartość NAMED co oznacza, że możemy użyć jej w dowolnym miejscu.

Kolejność parametrów
Ryc. 19 Kolejność parametrów

Jak widać na powyższym przykładzie, gdy nie wskazaliśmy niewymaganych nazw parametrów, a jedynie ich wartości, Powershell sam dopasował, jakie parametry powinny być użyte w zależności od kolejności. Dla pierwszych dwóch przykładów -LogName otrzymało wartość SYSTEM, a InstanceID wartość 0,1. Natomiast -Newest może być użyte w dowolnym miejscu. Przy trzeciej próbie wartość System została podana dla parametru InstanceID, co zakończyło się błędem.

Intellisense

Wspomniałem na początku o Windows PowerShell ISE, więc już czas nieco przybliżyć temat. Jest to środowisko programistyczne dostarczane przez system Windows, które zostało opracowane specjalnie dla programowania w języku PowerShell. Windows PowerShell ISE to graficzne narzędzie, które oferuje rozbudowane funkcje edytora i środowiska wykonywania skryptów PowerShell. Ma ono jedną przewagę nad zwykłą linią komend Powershell w zakresie systemów pomocy – jest nią właśnie Intellisense, czyli automatyczne wykrywanie i wyświetlanie dostępnych komend i parametrów podczas pisania kodu.

Intellisense
Ryc. 20 Intellisense

Podsumowanie

System pomocy w Powershell to nieocenione narzędzie dla wszystkich, którzy chcą efektywnie korzystać z tego potężnego środowiska. Dzięki sprawnemu korzystaniu z dostępnych opcji, nie musimy uczyć się żadnych komand na pamięć. Dobra znajomość narzędzia pomocy wspiera nas nie tylko na początku, ale pozwala nauczyć się nowych rzeczy, nawet gdy jesteśmy już zaawansowani w pisaniu skryptów.

Zachęcam wszystkich do eksperymentowania z różnymi poleceniami, poznawania ich funkcji i zastosowań oraz wykorzystywania systemu pomocy jako niezawodnego przewodnika na ścieżce do automatyzacji.

5/5 ( głosy: 4)
Ocena:
5/5 ( głosy: 4)
Autor
Avatar
Mateusz Domański

IT Support Specialist. Swoją przygodę z IT rozpoczął w Sii od pierwszej linii wsparcia, pomagając użytkownikom z całego świata w ich codziennych problemach. Każdego dnia poszerza swoją wiedzę i zdobywa nowe umiejętności

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Może Cię również zainteresować

Pokaż więcej artykułów

Bądź na bieżąco

Zasubskrybuj naszego bloga i otrzymuj informacje o najnowszych wpisach.

Otrzymaj ofertę

Jeśli chcesz dowiedzieć się więcej na temat oferty Sii, skontaktuj się z nami.

Wyślij zapytanie Wyślij zapytanie

Natalia Competency Center Director

Get an offer

Dołącz do Sii

Znajdź idealną pracę – zapoznaj się z naszą ofertą rekrutacyjną i aplikuj.

Aplikuj Aplikuj

Paweł Process Owner

Join Sii

ZATWIERDŹ

This content is available only in one language version.
You will be redirected to home page.

Are you sure you want to leave this page?