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.
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.
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.
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.
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-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.
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ą.
Get-Help
Get-Help wyświetla dokumenty pomocy dla wybranego polecenia. Choć brzmi to niepozornie, jest najbardziej rozbudowaną opcją pomocy.
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.
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.
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 <>.
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ść.
Spójrzmy teraz na przykład składni innego polecenia:
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.
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.
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.

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.
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.

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.
Zostaw komentarz