Obecnie na rynku dostępnych jest sporo rozwiązań, których zadaniem jest sprawienie by ciężkie życie administratora stało się odrobinę lepsze. Chociaż większość tych rozwiązań potrafi doskonale wywiązać się ze swojej roli, to z doświadczenia wiem, że im prościej, tym lepiej. W dzisiejszym artykule chciałbym przedstawić narzędzie, o którym słyszało wielu, ale korzysta zaledwie garstka. Dlaczego tak jest? Trudno powiedzieć, gdyż każdy administrator sam wybiera i kompletuje swój warsztat.
Wprowadzenie
Dawno dawno temu, gdzieś w odległej galaktyce… No dobra trochę mnie poniosło, w każdym razie wszystko zaczęło się w 2002 roku gdzieś w okolicach Redmond w USA. Firma Microsoft rozpoczęła prace nad nowym sposobem zarządzania wierszem poleceń. Zakres prac obejmował również opracowanie całkowicie nowej powłoki o nazwie Monad. Następnie opublikowano tzw. białą księgę, w której zawarto główną koncepcję oraz pomysły stojące za tym projektem.
Monad miał być czymś nowym, projektem, który wypełniłby lukę między programowaniem, automatyzacją, a zarządzaniem. Miał umożliwić zautomatyzowanie dużej liczby zadań osobom, którym z programowaniem niekoniecznie po drodze. Po niemal dwóch dekadach projekt przeszedł drastyczne zmiany. Doczekał się nowej nazwy – PowerShell, stał się integralnym elementem każdego systemu operacyjnego Windows. A dzięki udostępnieniu kodu źródłowego stworzono nową międzyplatformową wersję obejmującą nie tylko systemy produkowane przez Microsoft. Obecnie okazuję się, że głównie to wielbiciele pingwina chętniej przesiadają się na konsolę PowerShell.
Czym jest PowerShell?
Choć sam PowerShell ma olbrzymie spektrum zastosowań i może być zorientowanym obiektowo skryptowym językiem programowania, narzędziem do automatyzacji, zamiennikiem klasycznego wiersza poleceń czy pełnić wiele innych funkcji w zależności od konkretnej sytuacji. To ważne, abyś zapamiętał, że jest to przede wszystkim interpreter poleceń, który został opracowany przez firmę Microsoft. Składa się z dwóch podstawowych elementów powłoka wiersza poleceń (shell), która jest ściśle zintegrowana z platformą programistyczną .NET Framework. Dzięki zastosowaniu takiej architektury składnia PowerShell jest bardzo zbliżona do składki języka C#, w którym to pierwotnie został zaprojektowany. Dodatkową zaletą takiej budowy jest ułatwienie pracy z różnymi technologiami jak Component Object Model (COM), Windows Management Instrumentation (WMI) czy Extensible Markup Language (XML).
Ciekawą opcją jest kompilacja kodu C# oraz możliwość wykonywania kodu PowerShell jako kodu zarządzającego przez platformę .NET. Co więcej, dzięki posiadaniu API, czyli własnego interfejsu programistycznego można tworzyć polecenia oraz rozszerzenia dla wybranych aplikacji. Zbierając to wszystko w całość, otrzymujemy jedno dynamiczne i potężne narzędzie, które domyślnie zainstalowane jest w systemie Windows, zarówno z tym klienckim jak i serwerowym.
Konsola PowerShell jest wszędzie
Zmiana podejścia firmy Microsoft do zarządzania systemem operacyjnym Windows oraz wcielenie Windows PowerShell do programu Common Engineering Criteria (CEC) sprawiła, że każdy produkt serwerowy musi posiadać interfejs do zarządzania przez konsolę PowerShell. Zatem nieważne czy jesteś administratorem serwera SQL, Exchange czy chociażby WSUS. Każdy z tych serwerów może być zarządzany za pomocą PowerShella. Oczywiście każdy posiada swoje własne polecenia i moduły, jednakże sam rdzeń pozostaje niezmienny. Co więcej, obecne wiele zaawansowanych zadań nie uda się wykonać bez wykorzystania PowerShella, natomiast znaczna większość staje się zdecydowanie prostsza.
Czasami można spotkać się ze stwierdzeniem, że PowerShell to taki Bash dla Windowsa i myślę, że jest w tym sporo prawdy choć ze względu na zastosowanie logiki obiektowej dodałbym osobiście, że trochę bardziej doładowany Bash.
Podsumowanie
Reasumując PowerShell stanowi dojrzałe środowisko skryptowe, które może być interpreterem poleceń jak i znakomitą platformą do automatyzacji zadań. Jest doskonałym narzędziem dla inżynierów systemów, programistów, DevOps-ów oraz administratorów baz danych. Znajomość tej technologii stanowi jedno z podstawowych wymagań w ofertach pracy. Dlatego też warto poświęcić czas na naukę tej technologii.
Źródła
https://devblogs.microsoft.com/powershell/monad-manifesto-the-origin-of-windows-powershell/
https://devblogs.microsoft.com/powershell/the-next-release-of-powershell-powershell-7/
https://blogs.msmvps.com/marcoshaw/2009/04/17/powershell-terminology-common-engineering-criteria/
https://docs.microsoft.com/en-us/powershell/dsc/resources/authoringresourcemof?view=dsc-1.1