Na początek przygody z programowaniem doskonałym wyborem może okazać się PowerShell. Szczególnie jeżeli wcześniej nie kodowałeś, a pracujesz głównie w środowisku Windows (choć system Windows nie jest niezbędny). Co prawda PowerShell nie jest typowym językiem programowania, gdyż uznawany jest za język skryptowy. Mimo wszystko olbrzymie spektrum zastosowań oraz łatwa i szybka nauka sprawia, że PowerShell jest jednym z najlepszych punktów wejścia w świat kodowania. W zależności od tego czym się zajmujesz, PowerShell pomoże Ci monitorować, konfigurować i automatyzować Twoje działania. Mówiąc krótko – cokolwiek robisz możesz to robić prościej i szybciej. Co więcej w większości przypadków nie musisz nawet myśleć jak programista.


Nauka PowerShell tu i teraz


Konsola PowerShell jest domyślnym składnikiem każdego systemu Windows. Nie musisz zatem pobierać czy instalować żadnego dodatkowego środowiska programistycznego (oczywiśćie możesz to zrobić, wybierając np. Virtual Studio Code). Wszystko masz już zainstalowane i gotowe do pracy.
Nauka większości języków programowania rozpoczyna się od wyświetlenia na ekranie standardowego „Hello World”, co w większości przypadków nie stanowi problemu i napawa wielkim optymizmem. Jednak w późniejszych etapach obejmujących działania na serwisach, procesach czy konkretnych aplikacjach okazuję się, że to już nie jest takie fajnie, a niedawny optymizm gdzieś wyparował.
Z PowerShellem jest zupełnie inaczej. Dzięki wykorzystaniu specjalnych poleceń zwanych cmdletami (czytaj komandletami), które są wstępnie zdefiniowanymi zestawami poleceń platformy .NET, praca to czysta przyjemność. Dla porównania zobacz dwa cmdlety. Pierwszy wyświetla tekst Write-Host Hello World!, a drugi wszystkie serwisy na komputerze Get-Service.


Listing 1 Wyświetlenie tekstu “Hello World” za pomocą cmdletu Write-Host
 


PS C:\Admin> Write-Host "Hello World"
Hello World

Listing 2 Wyświetlenie listy serwisów za pomocą cmdletu Get-Service


 Status   Name               DisplayName
------   ----               -----------
Stopped  AarSvc_14784c      Agent Activation Runtime_14784c
Stopped  AJRouter           Usługa routera AllJoyn
Stopped  ALG                Usługa bramy warstwy aplikacji
Running  ApHidMonitorSer... AlpsAlpine HID Monitor Service
Running  AppIDSvc           Tożsamość aplikacji
Running  Appinfo            Informacje o aplikacji
Running  AppMgmt            Zarządzanie aplikacjami
Stopped  AppReadiness       Przygotowywanie aplikacji
Stopped  AppVClient         Microsoft App-V Client
Running  AppXSvc            Usługa wdrażania pakietu AppX (AppX...
Stopped  AssignedAccessM... Usługa AssignedAccessManager
Running  AudioEndpointBu... Konstruktor punktów końcowych audio...
Running  Audiosrv           Windows Audio
Stopped  autotimesvc        Czas komórkowy
Stopped  AxInstSV           Instalator kontrolek ActiveX (AxIns...
Stopped  BcastDVRUserSer... Usługa użytkownika DVR z gry i tran...

 

Jak widzisz, różnica między złożonością poleceń jest kosmetyczna, a rezultaty zgoła inne. W tym wszystkim najlepszy jest fakt, że PowerShell posiada cały szereg gotowych poleceń, które potrafią wykonać praktycznie dowolną pracę, a komponując jednowierszowe cmdlety w szybki sposób przejdziesz do tworzenia własnych zaawansowanych skryptów.
 

Łatwość nauki


Można było zauważyć, że w PowerShellu cmdlety występują w notacji „czasownik-rzeczownik”, która jest bardzo przystępna i łatwa do zapamiętania. Przykładowo jeżeli chcesz zidentyfikować konkretny proces wystarczy, że posłużysz się poleceniem Get-Process i nazwą danego procesu. 


Listing 3 Wyświetlenie procesu CalculatorApp za pomocą cmdletu Get-Process
 


PS C:\Admin> Get-Process CalculatorApp


Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    581      45    30388      80072       0,27   2800   2 CalculatorA

 

 

Jeżeli teraz chcesz zamknąć ten proces Get zamieniasz na Stop i temat załatwiony.


Listing 4 Działanie cmdletu Get-Process

PS C:\Admin> Stop-Process -Name CalculatorApp

 

Jednym z kluczy do opanowania podstaw konsoli PowerShell jest znajomość czasowników, których w domyślnej instalacji jest prawie 100 (istnieje możliwość tworzenia własnych).

 

Listing 5 Zliczenie czasowników występujących w PowerShellu

PS C:\Admin> (Get-Verb).count
98

 

W celu łatwiejszego przyswojenia czasowników projektanci PowerShela podzielili je na siedem grup w oparciu o typowe zadania, które spełniają. Przykładowo znajdziemy tu czasowniki cmdletów odpowiedzialnych za diagnostykę, komunikację czy bezpieczeństwo. 

 

Listing 6 Wyświetlenie grup czasowników występujących w PowerShellu


PS C:\Admin> Get-Verb | Select-Object group -Unique

Group
-----
Common
Data
Lifecycle
Diagnostic
Communications
Security
Other

J

eżeli teraz nieco bardziej zagłębimy się w jakąś grupę i przyjrzymy występującym tam czasownikom to można zauważyć dwie rzeczy.

 

Listing 7 Wyświetlenie czasowników z grupy “common”


PS C:\Admin> Get-Verb | Where-Object group -Match 'common' | Format-Wide verb -AutoSize


Add      Clear    Close    Copy     Enter    Exit     Find     Format   
Get      Hide     Join     Lock     Move     New      Open     Optimize 
Pop      Push     Redo     Remove   Rename   Reset    Resize   Search    
Select   Set      Show     Skip     Split    Step     Switch   Undo     Unlock   Watch

Po pierwsze są to podstawowe czasowniki z języka angielskiego. Założę się, że każdy się z nimi zetknął. Po drugie ewidentnie występują pewne pary np. Add/Remove, Enter/Exit czy Get/Set. Oczywiście nie każdy czasownik ma swojego partnera, ale i tak jest to już znaczne ułatwienie nauki.

 

PowerShell pozwala szybko ruszyć z miejsca

 

Jak już wspomniałem, struktura poleceń PowerShell opiera się na koncepcji „czasownik-rzeczownik”, dzięki czemu ​​nawet bardziej złożone skrypty stają się łatwiejsze do napisania, wykorzystania czy przeczytania. Kolejnym ciekawym zjawiskiem jest potok. Dzięki, któremu łącząc pojedyncze cmdlety w jeden ciąg można osiągnąć niesamowite rezultaty. Przykładem niech będzie kombinacja poleceń z poprzedniego przykładu. Jednak tym razem będzie zapisana nieco inaczej.

Listing 8 Zatrzymanie procesu CalculatorApp
 


PS C:\Admin> Get-Process CalculatorApp | Stop-Process

 

Mimo iż na pierwszy rzut oka wygląda nieco bardziej skomplikowanie to w dalszym ciągu całość zajmuje jeden wiersz. Pierwsza część (ta przed znakiem potoku | ) pobiera informacje o procesie CalculatorApp, następnie informacje te zostają przekazane bezpośrednio do cmdletu Stop-Process. Identycznie można postąpić zakładając, kasując czy modyfikując konta użytkowników, skrzynek pocztowych czy innych elementów systemu. Niezależnie czy będzie to pojedynczy obiekt czy 1000 jego wystąpień. Wszystko w jednym wierszu.

 

Potężny i wszechstronny Powershell

 

PowerShell posiada praktycznie nieograniczone możliwości. Chociaż standardowa konfiguracja zawiera około 700 cmdletów. To za sprawą PowerShell Gallery jego potęga po prostu nie ma sobie równych. Jakby tego było mało, dzięki oparciu na platformie .NET jesteś w stanie wywoływać metody w celu wykonywania konkretnych zadań np.: obliczeń matematycznych. Spójrz na poniższy przykład obliczenia pierwiastka kwadratowego czy wartości bezwzględnej.

Listing 9 Obliczenie pierwiastka drugiego stopnia
 


PS C:\Admin> [math]::sqrt(144)
12

 

Listing 10 Obliczenie wartości bezwzględnej liczby

 


PS C:\Admin> [math]::abs(-1000)
1000

Co więcej z poziomu konsoli PowerShell możesz uruchomić wszystkie programy ze standardowego wiersza poleceń: ping.exe, ipconfig.exe czy netstat.exe działają doskonale.

 

Solidne podstawy

 

Na początku nauki programowania zwykle się o tym nie myśli. Ale wraz z postępami nieuchronnie zbliża się czas, gdy zaczniesz zauważać pewne ograniczenia danego narzędzia. Niektóre specjalistyczne rozwiązania będą wymagały wykorzystania innego podejścia i innych metod. Jednym z rozwiązań jest nauka nowego języka programowania i niezależnie od tego czy kolejny wybór padnie na Bash, Perl czy Python znajomość PowerShella da Ci solidne fundamenty i znacznie przyśpieszy proces nauki.


PowerShell zapewni Ci pracę


Z roku na rok rynek pracy dla administratorów systemów i inżynierów DevOps stale się powiększa, a tworzenie skryptów czy automatyzacja infrastruktury to kluczowy zestaw umiejętności. Dlatego też dodanie PowerShella do swojego CV z pewnością zwiększy jego atrakcyjność. A nawet jeżeli nie szukasz pracy to oskryptowanie powtarzalnych zadań czy zdalne zarządzanie komputerami sprawi, że w pełni zapanujesz nad swoim czasem i staniesz się bardziej wydajnym pracownikiem. A dla twojego szefa to będzie to informacja, że już czas na podwyżkę.
Jeżeli jesteś zainteresowany to koniecznie zajrzyj do naszego szkolenia, które jest przygotowane specjalnie dla Ciebie.