Contents

Czym są skrypty Windows PowerShell?

Szybkie linki

⭐ Przegląd skryptów PowerShell

⭐ Szczegółowe instrukcje

⭐ Wyjaśnienie parametrów PowerShell

⭐ Tworzenie potoku

⭐ Zapisywanie potoku jako skryptu PS1 Potok jako skrypt PS1

⭐ PowerShell jest również dostępny w systemach Linux i macOS

Kluczowe wnioski

PowerShell to wszechstronny i potężny język skryptowy zaprojektowany w celu ułatwienia automatyzacji różnych procesów obliczeniowych, zapewniając użytkownikom skuteczny sposób usprawnienia przepływu pracy poprzez umożliwienie im wykonywania poleceń i wykonywania operacji w ujednoliconym środowisku.

Polecenia Powershell, znane jako cmdlets, posiadają pojedynczą funkcję. Polecenie “Get-Command” umożliwia przeglądanie tablicy dostępnych poleceń cmdlet.

PowerShell może być wykorzystywany w różnych systemach operacyjnych, w tym Windows, macOS i Linux.

PowerShell to wszechstronny język skryptowy zaprojektowany specjalnie do automatyzacji różnych zadań obliczeniowych z łatwością, wydajnością i niezawodnością w systemach opartych na Windows. Dowiedz się, jak wykorzystać jego możliwości, tworząc niestandardowe skrypty dostosowane do konkretnych wymagań.

Przegląd skryptów PowerShell

Aby rozpocząć tworzenie podstawowych skryptów PowerShell w systemie operacyjnym Windows, konieczne jest zrozumienie trzech podstawowych pojęć:

⭐ Cmdlets : polecenia jednofunkcyjne.

Parametry służą do określenia konkretnych szczegółów dotyczących wykonywania poleceń Cmdlet lub poleceń, w tym ich celu, czasu, lokalizacji i metodologii. Parametry te zapewniają niezbędne wskazówki do wykonywania zadań w kontrolowany i precyzyjny sposób.

Potok to potężna funkcja w PowerShell, która umożliwia przekazywanie danych wyjściowych jednego polecenia lub funkcji jako danych wejściowych do innego, tworząc strukturę podobną do łańcucha. Korzystając z tej funkcji, można łatwo tworzyć złożone zadania skryptowe, łącząc ze sobą wiele poleceń, umożliwiając wydajną automatyzację i usprawnione przepływy pracy.

Wykorzystując wszystkie trzy komponenty, możliwe jest tworzenie przyjaznych dla użytkownika skryptów, które usprawniają różne procesy poprzez automatyzację.

W tym przykładzie ilustrujemy integrację wielu poleceń cmdlet PowerShell w celu osiągnięcia określonego celu. Sekwencja tych poleceń jest określana jako “potok”, w którym każde pojedyncze polecenie przetwarza dane i przekazuje je do następnego, aż do osiągnięcia pożądanego rezultatu.Takie podejście umożliwia użytkownikom wykonywanie złożonych operacji z większą wydajnością poprzez usprawnienie przepływu pracy i ograniczenie ręcznej interwencji.

/pl/images/get-potato.jpg

Aby wykonać tę sekwencję operacji za pomocą PowerShell, można zastosować polecenie podobne do poniższego:

 Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
  | Place-Object Bowl 

Cmdlets in Detail

PowerShell jest wyposażony w zestaw wbudowanych poleceń, które umożliwiają użytkownikom manipulowanie obiektami systemowymi i wykonywanie wielu operacji. Te podstawowe polecenia w PowerShell są określane jako Cmdlets.

PowerShell wykorzystuje specyficzny typ poleceń znany jako cmdlets, które są kompaktowe i wykonują pojedynczą funkcję za pomocą rozszerzenia .dll. Te miniaturowe jednostki programowania mają tę zaletę, że są zwięźle skompilowane, co skutkuje szybkim wykonaniem w porównaniu do bardziej złożonych funkcji.

Korzystanie z PowerShell oferuje szeroką gamę poleceń, obejmujących wiele funkcji. Nie jest konieczne, aby stać się biegłym w każdym poleceniu; zaleca się raczej rozpoczęcie od zdobycia podstawowej wiedzy i stopniowe jej poszerzanie w trakcie pisania skryptów. Aby przejrzeć polecenia interfejsu wiersza poleceń (CLI) aktualnie zainstalowane w systemie, wykonaj następującą instrukcję:

 Get-Command 

Po zapoznaniu się z wynikami można zauważyć, że są one zgodne ze wzorem konstrukcji czasownik-rzeczownik. Taki układ ułatwia zrozumienie funkcji konkretnego polecenia Cmdlet.

Powershell zapewnia różne wbudowane polecenia cmdlet do wykonywania różnych zadań. Polecenie Get-Command zwraca tablicę wszystkich dostępnych poleceń w Powershell. Podobnie polecenie Get-Process pobiera informacje o uruchomionych procesach w systemie. Dodatkowo, cmdlet Copy-Item pozwala użytkownikom na przeniesienie jednego lub wielu plików z jednej lokalizacji do innego określonego folderu docelowego.

Narzędziom wiersza poleceń towarzyszy kompleksowa dokumentacja, która obejmuje ilustrujące przykłady, szczegółowe wytyczne dotyczące użytkowania i dogłębne wyjaśnienia dotyczące ich możliwości.

Aby uzyskać więcej informacji na temat konkretnego polecenia Cmdlet i jego użycia, wykonanie następującego polecenia dostarczy wyczerpujących szczegółów:

 Get-Help <name-of-cmdlet> 

Objaśnienie parametrów PowerShell

Polecenia PowerShell mogą być wykonywane z różnym stopniem szczegółowości poprzez użycie parametrów. Parametry te pozwalają na większą kontrolę nad wykonywaniem poleceń Cmdlet i funkcji poprzez określenie czynników, takich jak cel, czas, lokalizacja i metodologia.

Ilustracją tego jest uzyskanie listy aktualnie aktywnych procesów w systemie operacyjnym za pomocą polecenia “Get-Process”.

/pl/images/get-process-cmdlet.jpg

Aby uzyskać określony proces za pomocą parametrów wiersza poleceń, można użyć atrybutu “Name” w połączeniu z poleceniem cmdlet “Get-Process”. Na przykład, aby pobrać wszystkie instancje aplikacji Slack, użytkownik wprowadziłby następujące polecenie: mathematicaGet-Process -Name " Slack

 Get-Process -Name Slack 

Po wykonaniu polecenia zostanie wyświetlona lista procesów z etykietą “slack”.

/pl/images/get-process-with-parameter.jpg

Niektóre zmienne mają cechę znaną jako “pozycyjność”, w której ich oznaczenie jako obowiązkowe lub opcjonalne jest określane przez kontekst, a nie przez wyraźną etykietę. Na przykład, podczas wywoływania polecenia Get-Process -Name Slack , pominięcie tytułu parametru powoduje jego włączenie jako pozycyjnego, co pozwala na zrozumienie go w danym kontekście bez konieczności stosowania określonej etykiety. Podobnie, podczas wykonywania polecenia Get-Process Slack , brak specyfikacji parametru również czyni go pozycyjnym, umożliwiając jego zrozumienie w świetle otaczających okoliczności bez konieczności stosowania sformalizowanego identyfikatora.

Każdy Commandlet ma swój własny zestaw akceptowalnych parametrów wejściowych, które można wyświetlić za pomocą polecenia Get-Help i przechodząc do sekcji Syntax dla tego konkretnego Commandletu.

 Get-Help Get-Process 

Zostanie wyświetlony zestaw dostępnych metod wykonywania określonego polecenia, obejmujący różne parametry i opcje.

/pl/images/cmdlet-syntax-parameters.jpg

W tym przypadku cmdlet Get-Process może akceptować różne parametry wejściowe, w tym między innymi Name, Id, ComputerName, Module i FileVersionInfo. Parametry te reprezentują różne atrybuty, które można wykorzystać w połączeniu z poleceniem cmdlet Get-Process w celu pobrania informacji o procesach uruchomionych w systemie komputerowym.

Symbol

|

Nazwa

|

Znaczenie

-|-|-
|

Puste

|

Parametr nie akceptuje danych wejściowych

-

|

Myślnik

|

Wskazuje nazwę parametru

<>

|

Nawiasy kątowe

|

Miejsce na tekst

[]

|

Nawiasy

|

Parametr, który może zawierać wiele wartości, często określany jako zmienna lub pole, reprezentuje element, który może być zmieniany podczas wykonywania programu i może mieć wpływ na jego wynik lub zachowanie.

{}

|

Nawiasy

|

Parametr akceptuje zestaw wartości

Niektóre parametry określają oczekiwane typy danych wejściowych, w tym ciągi znaków, liczby całkowite, logiczne i daty. Aby to zilustrować, rozważmy następujący fragment kodu:

 Get-Process [[-Name] <string[]>] 

Parametr Name jest w stanie pomieścić wiele wartości łańcuchowych, podczas gdy wspomniane ograniczenie ogranicza go do akceptowania tylko jednej wartości.

 Get-Process -Id <int[]> 

Parametr “Id” jest przeznaczony do przyjmowania jednej lub więcej wartości całkowitych, które mogą być wykorzystywane do różnych celów w aplikacjach programistycznych.

W celu dalszego udoskonalenia wyszukiwania procesów i uzyskania bardziej precyzyjnego zestawu wyników, można wykorzystać parametr “ID” w poleceniu PowerShell “Get-Process”. Ten konkretny parametr wymaga wprowadzenia wartości całkowitej, zgodnie z jego składnią. Włączając ten parametr do polecenia, użytkownicy są w stanie wskazać dokładniejszy proces na liście dostępnych opcji.

 Get-Process -Id 3016 

Następnie można zaobserwować pojedynczą instancję w wyliczeniu:

/pl/images/using-id-parameter.jpg

Tworzenie potoku

PowerShell przetwarza informacje jako encje, które są zorganizowane za pomocą serii poleceń lub funkcji, które są połączone za pomocą symbolu potoku (|). Wybór odpowiednich poleceń i ułożenie ich w spójny sposób przy użyciu potoku odgrywa kluczową rolę w tworzeniu wydajnego skryptu.

Oto przykład, jak można utworzyć prosty skrypt, który sortuje i wyświetla 5 największych plików w danym katalogu na podstawie ich rozmiaru, przy użyciu Pythona:pythonimport osimport shutildef get_largest_files(directory):# Pobierz listę wszystkich plików w katalogufile_list = os.listdir(directory)# Posortuj listę według rozmiaru pliku (w bajtach)sorted_by_size = sorted(file_list, key=os.path.getsize, reverse=True)# Zwróć tylko pierwsze n elementów posortowanej listyreturn sorted_by_size[:5]# Przykładowe użycie:directory = ‘/path/to/your/folder/’top_

/pl/images/sort-largefiles-script.jpg

Można wykorzystać konfigurację potoku w PowerShell, która wykazuje określoną strukturę do wykonania tego zadania. Wspomniany potok składa się z różnych komponentów, które współpracują ze sobą w celu osiągnięcia pożądanego rezultatu.

 Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
 | Select-Object -First 5 | Format-Table Name, Length -AutoSize 

Zapisywanie potoku jako skryptu PS1

Aby zapewnić wydajność i łatwość dostępu, warto zachować potok operacyjny, konwertując go do pliku skryptu PowerShell (.ps1) do wykorzystania w przyszłości. Wyeliminuje to potrzebę powtarzalnego ręcznego wprowadzania danych za każdym razem, gdy potok jest używany.

Jedna z prostych metod generowania pliku skryptu PowerShell (PS1) polega na wklejeniu żądanego skryptu bezpośrednio do edytora tekstu, takiego jak Notatnik, a następnie zapisaniu go przy użyciu rozszerzenia pliku “.ps1”.

/pl/images/creating-script-with-notepad.jpg

Aby użyć skryptu PS1 w PowerShell, należy wykonać polecenie ./ScriptName.ps1 , po którym następuje dwukropek.

/pl/images/using-ps1-script.jpg

Aby rozwiązać wszelkie problemy z uprawnieniami, które mogą pojawić się podczas wykonywania skryptu, zaleca się wykonanie PowerShell z uprawnieniami administratora. Można to osiągnąć poprzez zainicjowanie podwyższonej sesji PowerShell, a następnie wykonanie skryptu w tym kontekście.

Gratulacje, jesteś teraz w stanie tworzyć skrypty PowerShell PS1.

## PowerShell jest również dostępny w systemach Linux i macOS

PowerShell stał się bardzo poszukiwanym językiem skryptowym dla początkujących ze względu na przyjazny dla użytkownika interfejs i szerokie możliwości. Wcześniej był on dostępny wyłącznie w ekosystemie Windows, jednak ostatnie aktualizacje umożliwiły dostępność PowerShell na różnych platformach, takich jak macOS i wiele dystrybucji Linuksa. To rozszerzenie jeszcze bardziej zwiększa wszechstronność PowerShell, umożliwiając użytkownikom płynne przenoszenie swoich umiejętności między różnymi systemami operacyjnymi.