Artykuł pochodzi z wydania: Marzec 2020
PowerShell to obiektowe środowisko oparte na platformie .NET, które sprawdza się jako interakcyjna powłoka systemu lub interpreter skryptów. Duży zestaw komend oraz modularna budowa czynią z niego doskonałe narzędzie pracy.
Powłoka, która pierwotnie nosiła nazwę Monad, została zaprezentowana na konferencji PDC (Professional Developer Conference) w Los Angeles w październiku 2003 r. Następnie były jeszcze używane nazwy Microsoft Shell (MSH) i Microsoft Command Shell. Ostateczny termin PowerShell pojawił się w maju 2006 r. Wersja PowerShell 1.0 została zaprezentowana 11 listopada 2006 r. na konferencji TechEd Europe 2006.
Windows PowerShell to nowa generacja powłoki poleceń. Twórcy ciężko pracowali nad przeprojektowaniem poprzedniej wersji – cmd.exe – w celu stworzenia środowiska obiektowego ściśle zintegrowanego z Microsoft .NET Framework. PowerShell zrewolucjonizował systemy zarządzania i powłokę wiersza poleceń, która zwiększa wydajność pracy administratorów i zaawansowanych użytkowników.
Budowa poleceń
Podstawowymi poleceniami PowerShella są tzw. cmdlety. Są one zazwyczaj dwuczłonowe. Każda komenda zaczyna się od czasownika, połączonego znakiem myślnika („–”) z rzeczownikiem, a kolejne parametry oddziela się znakami spacji. Pierwszy składnik z reguły określa czynność, jaką należy wykonać na składniku drugim.
Aby wyświetlić listę wszystkich dostępnych w ramach powłoki cmdletów, wystarczy wykonać polecenie Get-Command. Dla każdego polecenia można uzyskać pomoc cmdletu Get-Help:
Get-Help cmdlet – przegląd poleceń;
Get-Help cmdlet – Examples – przykłady wykorzystania;
Get-Help cmdlet – Full – szczegółowa pomoc.
Parametry są zawsze poprzedzone znakiem myślnika. Argumenty określają wartość każdego parametru. Jeśli parametr ma więcej niż jeden argument (np. EntryType), rozdziela się je przecinkami.
Elastyczna składnia
PowerShell jest bardzo elastyczny w odniesieniu do pisowni parametrów. Oto przykłady:
- Get-Service -Name wuauserv -ComputerName Lublin (pełna wersja),
- Get-Service -N wuauserv -C Lublin (wersja skrócona).
W powyższym przykładzie nazwy parametrów zostały skrócone. Jest to możliwe, pod warunkiem że nie ma innych (opcjonalnych) parametrów, które rozpoczynają się odpowiednio od N i C.
W tym przykładzie została zamieniona kolejność: Get-Service -C Lublin -N wuauserv.
Tu natomiast została pominięta nazwa parametru: Get-Service wuauserv -C Lublin.
Pierwszy przedstawiony wariant to najlepsze rozwiązanie przy tworzeniu skryptów. Taka forma jest najbardziej czytelna i zrozumiała, co szczególnie przydaje się przy pisaniu i późniejszym analizowaniu kodu.
PowerShell daje możliwość tworzenia własnych aliasów. Aliasy to inna nazwa (najczęściej skrócona) istniejących cmdletów. Przykładowo Get-ChildItem może być używany zamiennie z gotowym aliasem dir. Znacznie upraszcza to korzystanie z wiersza poleceń i umożliwia dostosowanie składni do własnych preferencji. Aby zdefiniować własny alias, korzystamy z polecenia Set-Alias, np.: Set-Alias -Name gs -Value Get-Service. Nazwę nowego aliasu (gs) podajemy jako argument parametru -Name, natomiast polecenie, do którego alias się odnosi (Get-Service), wprowadzamy jako argument parametru -Value. Po wykonaniu powyższych poleceń zamiast pełnej nazwy Get-Service wystarczy użyć zdefiniowanego aliasu, czyli gs. Aby sprawdzić, jakie aliasy mamy zdefiniowane w systemie, wystarczy wprowadzić komendę: Get-Command -all | ? {$_.CommandType -eq „alias”}.
Klasy i obiekty
Starsze wersje wiersza poleceń (np. cmd. exe) operowały jedynie na zwykłym tekście i nie umożliwiały pracy obiektowej, natomiast w PowerShellu dane wyjściowe generowane są zawsze w postaci obiektów. Przykładowo komenda Get-Process generuje obiekt System. Diagnostics.Process, który można zapisać w zmiennej. Uzyskany wynik nie jest zwykłym tekstem, każdy element jest tutaj obiektem. Obiekty to struktury, które mogą posiadać dane (właściwości – properties), zdarzenia (events) i metody (methods), czyli funkcje służące do wykonywania na tych danych określonych zadań. Z reguły obiekty zawierają o wiele więcej funkcji niż tylko te wyświetlane domyślnie. Definicje struktury obiektów, ich właściwości, metod i zdarzeń zawierają klasy. Samo tworzenie obiektów można przyrównać do przygotowywania ciasta, gdzie obiektami są uformowane ciastka, a klasy – formą, w której one powstają.
Aby sprawdzić definicję klasy i struktury obiektów, możemy posłużyć się poleceniem Get-Member (pobierz element członkowski). Wystarczy przekierować do niego obiekt, którego definicję zamierzamy sprawdzić. Na wyjściu uzyskamy nazwy klas oraz, w zależności od klasy, właściwości (Properties, Alias-Properties, ScriptProperties), zdarzenia i metody obsługiwane przez dany obiekt. Przykład: Get-Service | Get-Member.
[…]
Grzegorz Gałęzowski
Autor zawodowo zajmuje się informatyką, ma tytuł PowerShell MVP. Publikuje w magazynach komputerowych i serwisach internetowych.