Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje

Historycznie rzecz biorąc, narzędzia wiersza poleceń w systemach Unix są lepiej rozwinięte niż w Windows, ale wraz z pojawieniem się nowego rozwiązania sytuacja się zmieniła.

Windows PowerShell umożliwia administratorom systemu automatyzację większości rutynowych zadań. Dzięki niemu możesz zmieniać ustawienia, zatrzymywać i uruchamiać usługi, a także przeprowadzać konserwację większości zainstalowanych aplikacji. Błędem byłoby postrzeganie niebieskiego okna jako kolejnego interpretera poleceń. Takie podejście nie oddaje istoty innowacji proponowanych przez Microsoft. Tak naprawdę możliwości Windows PowerShell są znacznie szersze: w krótkiej serii artykułów postaramy się dowiedzieć, czym rozwiązanie Microsoftu różni się od narzędzi, z którymi jesteśmy bardziej zaznajomieni.

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje

Najważniejsze cechy 

Oczywiście Windows PowerShell to przede wszystkim powłoka skryptowa, pierwotnie zbudowana na platformie .NET Framework, a później na platformie .NET Core. W przeciwieństwie do powłok, które akceptują i zwracają dane tekstowe, Windows PowerShell współpracuje z klasami .NET, które mają właściwości i metody. PowerShell umożliwia uruchamianie typowych poleceń, a także zapewnia dostęp do obiektów COM, WMI i ADSI. Wykorzystuje różne magazyny, takie jak system plików lub rejestr systemu Windows, w celu uzyskania dostępu do których tzw. dostawcy. Warto zwrócić uwagę na możliwość osadzania komponentów wykonywalnych PowerShell w innych aplikacjach w celu realizacji różnych operacji, m.in. poprzez interfejs graficzny. Dzieje się tak również na odwrót: wiele aplikacji Windows zapewnia dostęp do swoich interfejsów zarządzania poprzez PowerShell. 

Windows PowerShell umożliwia:

  • Zmień ustawienia systemu operacyjnego;
  • Zarządzaj usługami i procesami;
  • Skonfiguruj role i komponenty serwera;
  • Zainstaluj oprogramowanie;
  • Zarządzaj zainstalowanym oprogramowaniem poprzez specjalne interfejsy;
  • Osadzaj komponenty wykonywalne w programach innych firm;
  • Twórz skrypty automatyzujące zadania administracyjne;
  • Pracuj z systemem plików, rejestrem systemu Windows, magazynem certyfikatów itp.

Shell i środowisko programistyczne

Istnieje Windows PowerShell w dwóch postaciach: oprócz emulatora konsoli z powłoką poleceń istnieje zintegrowane środowisko skryptowe (ISE). Aby uzyskać dostęp do interfejsu wiersza poleceń, wystarczy wybrać odpowiedni skrót z menu Windows lub uruchomić program powershell.exe z menu Uruchom. Na ekranie pojawi się niebieskie okno, zauważalnie różniące się możliwościami od przedpotopowego cmd.exe. Istnieje autouzupełnianie i inne funkcje znane użytkownikom powłok poleceń dla systemów Unix.

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje

Aby pracować z powłoką, musisz zapamiętać kilka skrótów klawiaturowych:

  • Strzałki w górę i w dół przewijają historię, aby powtórzyć wcześniej wpisane polecenia;
  • Strzałka w prawo na końcu wiersza powoduje ponowne wpisanie poprzedniego polecenia znak po znaku;
  • Ctrl+Home usuwa wpisany tekst od pozycji kursora do początku linii;
  • Ctrl+End usuwa tekst od kursora do końca linii.

F7 pokazuje okno z wpisanymi poleceniami i pozwala wybrać jedno z nich. Konsola współpracuje także z zaznaczaniem tekstu myszką, kopiowaniem i wklejaniem, pozycjonowaniem kursora, usuwaniem, backspace - wszystkim co lubimy.

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje
Windows PowerShell ISE to kompletne środowisko programistyczne z edytorem kodu z zakładkami i podświetloną składnią, narzędziem do tworzenia poleceń, wbudowanym debugerem i innymi przyjemnościami programistycznymi. Jeśli w edytorze środowiska programistycznego po nazwie polecenia napiszesz myślnik, na liście rozwijanej pojawią się wszystkie dostępne opcje ze wskazaniem typu. Możesz uruchomić PowerShell ISE albo za pomocą skrótu z menu systemowego, albo za pomocą pliku wykonywalnego powershell_ise.exe.

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje

Polecenia cmdlet 

W Windows PowerShell tzw. polecenia cmdlet. Są to wyspecjalizowane klasy .NET, które zapewniają różnorodne funkcje. Nazywają się Obiekt-Akcja (lub Czasownik-Rzeczownik, jeśli wolisz), a łącze oddzielone łącznikami przypomina orzeczenie i podmiot w zdaniach języka naturalnego. Na przykład Get-Help dosłownie oznacza „Uzyskaj pomoc” lub w kontekście programu PowerShell: „Pokaż pomoc”. W rzeczywistości jest to odpowiednik polecenia man w systemach Unix i podręczniki w PowerShell należy wywoływać w ten sposób, a nie poprzez wywoływanie poleceń cmdlet za pomocą klawisza --help lub /?. Nie zapomnij o dokumentacji PowerShell online: Microsoft ma to dość szczegółowo.

Oprócz Get polecenia cmdlet używają innych czasowników do oznaczania akcji (a nie tylko czasowników, ściśle rzecz biorąc). Na poniższej liście podajemy kilka przykładów:

Add - dodać;
Clear - jasne;
Enable - włączyć coś;
Disable - wyłączyć;
New - tworzyć;
Remove - usuwać;
Set - zapytać;
Start - uruchomić;
Stop - zatrzymywać się;
Export - eksport;
Import - import.

Istnieją polecenia cmdlet systemowe, użytkownika i opcjonalne: w wyniku wykonania wszystkie zwracają obiekt lub tablicę obiektów. Nie uwzględniają wielkości liter, tj. z punktu widzenia interpretera poleceń nie ma różnicy pomiędzy Get-Help i get-help. Znak „;” służy do separacji, ale jego umieszczenie jest obowiązkowe tylko w przypadku wykonania kilku poleceń cmdlet w tym samym wierszu. 

Polecenia cmdlet programu Windows PowerShell są pogrupowane w moduły (NetTCPIP, Hyper-V itp.) i dostępne jest polecenie cmdlet Get-Command umożliwiające wyszukiwanie według obiektu i akcji. Możesz wyświetlić pomoc do tego w następujący sposób:

Get-Help Get-Command

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje

Domyślnie polecenie wyświetla krótką pomoc, ale w razie potrzeby parametry (argumenty) są przekazywane do poleceń cmdlet. Za ich pomocą można np. uzyskać pomoc szczegółową (parametr -Detailed) lub pełną (parametr -Full), a także wyświetlić przykłady wyświetlania (parametr -Examples):

Get-Help Get-Command -Examples

Pomoc w programie Windows PowerShell jest aktualizowana za pomocą polecenia cmdlet Update-Help. Jeśli linia poleceń okaże się zbyt długa, argumenty polecenia cmdlet można przenieść do następnego, wpisując znak usługi „” i naciskając klawisz Enter – samo zakończenie pisania polecenia w jednej linii i kontynuowanie w innej nie zadziała.

Oto kilka przykładów typowych poleceń cmdlet: 

Get-Process - pokazać działające procesy w systemie;
Get-Service — pokaż usługi i ich status;
Get-Content - wyświetl zawartość pliku.

Dla często używanych poleceń cmdlet i narzędzi zewnętrznych Windows PowerShell ma krótkie synonimy - aliasy (z angielskiego. Alias). Na przykład dir jest aliasem dla Get-ChildItem. Na liście synonimów znajdują się także odpowiedniki poleceń z systemów uniksowych (ls, ps itp.), a polecenie cmdlet Get-Help wywoływane jest poleceniem help. Pełną listę synonimów można wyświetlić za pomocą polecenia cmdlet Get-Alias:

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje

Skrypty, funkcje, moduły i język PowerShell

Skrypty programu Windows PowerShell są przechowywane jako zwykłe pliki tekstowe z rozszerzeniem .ps1. Nie można ich uruchomić poprzez dwukrotne kliknięcie: należy kliknąć prawym przyciskiem myszy, aby wywołać menu kontekstowe i wybrać element „Uruchom w PowerShell”. Z konsoli będziesz musiał albo podać pełną ścieżkę do skryptu, albo przejść do odpowiedniego katalogu i wpisać nazwę pliku. Uruchamianie skryptów jest również ograniczone polityką systemową i aby sprawdzić bieżące ustawienia, możesz użyć polecenia cmdlet Get-ExecutionPolicy, które zwróci jedną z następujących wartości:

Restricted — uruchamianie skryptów jest wyłączone (domyślnie);
AllSigned - dozwolone jest uruchamianie wyłącznie skryptów podpisanych przez zaufanego programistę;
RemoteSigned - możliwość uruchamiania skryptów podpisanych i własnych;
Unrestricted - pozwolono na uruchamianie dowolnych skryptów.

Administrator ma dwie możliwości. Najbezpieczniej jest podpisywać skrypty, jednak jest to dość poważna czarodziejstwo – tym zajmiemy się w kolejnych artykułach. Przejdźmy teraz po najmniejszej linii oporu i zmieńmy politykę:

Set-ExecutionPolicy RemoteSigned

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje
Aby to zrobić, program PowerShell będzie musiał zostać uruchomiony jako administrator, chociaż możesz zmienić zasady dla bieżącego użytkownika za pomocą specjalnego ustawienia.

Skrypty pisane są w obiektowym języku programowania, którego polecenia nazywane są według tej samej zasady, co omówione wcześniej polecenia cmdlet: „Action-Object” („Verb-Noun”). Jego głównym celem jest automatyzacja zadań administracyjnych, ale jest to pełnoprawny język interpretowany, który ma wszystkie niezbędne konstrukcje: skok warunkowy, pętle, zmienne, tablice, obiekty, obsługę błędów itp. Do tworzenia skryptów nadaje się dowolny edytor tekstu, ale najlepiej jest uruchomić program Windows PowerShell ISE.

Możesz przekazać parametry do skryptu, ustawić je jako wymagane i ustawić wartości domyślne. Ponadto program Windows PowerShell umożliwia tworzenie i wywoływanie funkcji w taki sam sposób, jak polecenia cmdlet, przy użyciu konstrukcji Function i nawiasów klamrowych. Skrypt z funkcjami nazywany jest modułem i ma rozszerzenie .psm1. Moduły muszą być przechowywane w katalogach zdefiniowanych w zmiennych środowiskowych programu PowerShell. Możesz je wyświetlić za pomocą następującego polecenia:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Przenośniki

W ostatnim przykładzie użyliśmy konstrukcji znanej użytkownikom powłoki Uniksa. W Windows PowerShell pionowy pasek pozwala również przekazać dane wyjściowe jednego polecenia na wejście innego, ale istnieje znacząca różnica w implementacji potoku: nie mówimy już o zestawie znaków lub jakimś rodzaju tekst. Wbudowane polecenia cmdlet lub funkcje zdefiniowane przez użytkownika zwracają obiekty lub tablice obiektów, a także mogą je odbierać jako dane wejściowe. Podobnie jak powłoka Bourne'a i jej wielu następców, PowerShell ułatwia złożone zadania za pomocą potoku.

Najprostszy przykład potoku wygląda następująco:

Get-Service | Sort-Object -property Status

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje
Najpierw wykonywane jest polecenie cmdlet Get-Service, a następnie wszystkie odebrane przez nie usługi są przekazywane do polecenia cmdlet Sort-Object w celu sortowania według właściwości Status. To, do jakiego argumentu zostanie przekazany wynik poprzedniej sekcji potoku, zależy od jego typu – zwykle jest to obiekt wejściowy. Zagadnienie to zostanie omówione szerzej w artykule poświęconym językowi programowania PowerShell. 

Jeśli chcesz, możesz kontynuować łańcuch i przekazać wynik operacji Sort-Object do innego polecenia cmdlet (zostaną one wykonane od lewej do prawej). Nawiasem mówiąc, użytkownicy systemu Windows mają również dostęp do konstrukcji paginacji znanej wszystkim Unixoidom: 

Get-Service | Sort-Object -property Status | more

Uruchamianie zadań w tle 

Dość często konieczne jest uruchomienie określonego polecenia w tle, aby nie czekać na wynik jego wykonania w sesji powłoki. W tym przypadku program Windows PowerShell ma kilka poleceń cmdlet:

Start-Job - uruchomienie zadania w tle;
Stop-Job — zatrzymaj zadanie w tle;
Get-Job — przeglądaj listę zadań w tle;
Receive-Job — przeglądanie wyniku wykonania zadania w tle;
Remove-Job — usuwanie zadania w tle;
Wait-Job - przeniesienie zadania w tle z powrotem na konsolę.

Aby uruchomić zadanie w tle, używamy polecenia cmdlet Start-Job i określamy polecenie lub zestaw poleceń w nawiasach klamrowych:

Start-Job {Get-Service}

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje
Zadaniami w tle w Windows PowerShell można manipulować, znając ich nazwy. Najpierw nauczmy się, jak je wyświetlać:

Get-Job

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje
Teraz pokażmy wynik zadania Job1:

Receive-Job Job1 | more

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje
Wszystko jest całkiem proste.

Zdalne wykonanie polecenia

Windows PowerShell umożliwia wykonywanie poleceń i skryptów nie tylko na komputerze lokalnym, ale także na komputerze zdalnym, a nawet na całej grupie maszyn. Można to zrobić na kilka sposobów:

  • Wiele poleceń cmdlet ma parametr -ComputerName, ale w ten sposób nie sprawdzi się np. utworzenie przenośnika;
  • cmdlet Enter-PSSession umożliwia utworzenie interaktywnej sesji na zdalnym komputerze; 
  • Korzystanie z polecenia cmdlet Invoke-Command możesz uruchamiać polecenia lub skrypty na jednym lub większej liczbie komputerów zdalnych.

Wersje programu PowerShell

PowerShell bardzo się zmienił od czasu jego pierwszego wydania w 2006 roku. Narzędzie jest dostępne dla wielu systemów działających na różnych platformach sprzętowych (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux i OS X. Najnowsza wersja 6.2 wydana 10 stycznia 2018 r. Skrypty napisane dla wcześniejszych wersji prawdopodobnie będą działać w nowszych wersjach, ale przenoszenie wsteczne może być problematyczne, ponieważ na przestrzeni lat programu PowerShell wprowadził dużą liczbę nowych poleceń cmdlet. Wersję powłoki poleceń zainstalowaną na komputerze możesz sprawdzić, korzystając z właściwości PSVersion zmiennej wbudowanej $PSVersionTable:

$PSVersionTable.PSVersion

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje
Możesz także użyć polecenia cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje
To samo można zrobić z poleceniem cmdlet Get-Host. Tak naprawdę opcji jest wiele, ale aby z nich skorzystać, trzeba nauczyć się języka programowania PowerShell, co zrobimy w następny artykuł

Wyniki 

Microsoftowi udało się stworzyć naprawdę potężną powłokę z wygodnym zintegrowanym środowiskiem do tworzenia skryptów. Od narzędzi znanych nam w świecie Uniksa różni się głęboką integracją z systemami operacyjnymi z rodziny Windows, a także z oprogramowaniem dla nich i platformą .NET Core. Program PowerShell można nazwać powłoką obiektową, ponieważ polecenia cmdlet i funkcje zdefiniowane przez użytkownika zwracają obiekty lub tablice obiektów i mogą przyjmować je jako dane wejściowe. Uważamy, że wszyscy administratorzy serwerów w systemie Windows powinni posiadać to narzędzie: minął czas, kiedy mogli obejść się bez wiersza poleceń. Szczególnie potrzebna jest zaawansowana powłoka konsoli nasz tani VPS z systemem Windows Server Core, ale to zupełnie inna historia.

Co to jest Windows PowerShell i z czym jest spożywany? Część 1: Kluczowe funkcje

W ankiecie mogą brać udział tylko zarejestrowani użytkownicy. Zaloguj się, Proszę.

Jakie tematy powinny zostać poruszone w pierwszej kolejności w kolejnych artykułach z serii?

  • 53,2%Programowanie w PowerShell123

  • 42,4%Funkcje i moduły programu PowerShell98

  • 22,1%Jak podpisywać własne scenariusze?51

  • 12,1%Praca z repozytoriami poprzez dostawców (dostawców)28

  • 57,6%Automatyzacja administrowania komputerem za pomocą programu PowerShell133

  • 30,7%Zarządzanie oprogramowaniem i osadzanie plików wykonywalnych PowerShell w produktach innych firm71

Głosowało 231 użytkowników. 37 użytkowników wstrzymało się od głosu.

Źródło: www.habr.com

Dodaj komentarz