PowerShell to framework automatyzacji zadań i zarządzania konfiguracją opracowany przez Microsoft, składający się z powłoki wiersza poleceń oraz powiązanego języka skryptowego. Początkowo skierowany do administratorów systemów, PowerShell zapewnia potężny interfejs do automatyzacji zadań i zarządzania konfiguracjami systemu za pomocą skryptów i cmdletów (lekkich poleceń). Na przestrzeni lat PowerShell zyskał na możliwościach i znacznie się rozwinął, podkreślając swoją integrację z frameworkiem .NET i umożliwiając użycie międzyplatformowe dzięki PowerShell Core.
PowerShell został po raz pierwszy wprowadzony w 2006 roku jako "Monad", głównie w celu poprawy administracji systemem w Windows. Stworzył most między użytkownikami a procesami systemowymi, koncentrując się na skryptach w wierszu poleceń. Jego projekt był inspirowany powłokami Unix, z naciskiem na programowanie obiektowe dzięki możliwościom frameworka .NET.
Wraz z wydaniem Windows Management Framework (WMF) 3.0 w 2012 roku, PowerShell stał się bardziej solidny, wprowadzając funkcje takie jak przepływy pracy i moduły. Pojawienie się PowerShell Core (wersja 6) w 2016 roku oznaczało znaczący kamień milowy, ponieważ został zaprojektowany do działania na macOS i Linux, poszerzając swoje zasięg poza ekosystem Windows.
Obecnie PowerShell jest nadal rozwijany w modelu open-source, co pozwala na wkład programistów z całego świata. Najnowsze wersje wprowadziły zaawansowane funkcjonalności, czyniąc go istotnym nie tylko dla administracji systemem, ale także dla szerszych zadań skryptowych i automatyzacji na różnych platformach. Jego związek z .NET stał się głębszy, ustanawiając go jako potężne narzędzie skryptowe dla programistów w różnych środowiskach.
Polecenia PowerShell, znane jako cmdlety, stosują konwencję nazewnictwa czasownik-rzeczownik.
Get-Process
PowerShell obsługuje przekazywanie, umożliwiając wyjście jednego cmdletu jako wejście do innego.
Get-Process | Where-Object { $_.CPU -gt 100 }
Zmienne w PowerShell są poprzedzone znakiem $
i mogą przechowywać szeroki zakres typów danych.
$greeting = "Witaj, świecie!"
PowerShell natywnie obsługuje tablice i tabele haszowe dla łatwej manipulacji danymi.
$array = @(1, 2, 3)
$hash = @{"klucz" = "wartość"}
Możesz definiować wielokrotnego użytku funkcje w PowerShell.
function Greet {
param($name)
"Witaj, $name!"
}
Obsługa błędów w PowerShell może być zarządzana za pomocą bloków try/catch.
try {
Get-Process -Name "nieistniejący"
} catch {
Write-Host "Wystąpił błąd: $_"
}
Skrypty PowerShell są zapisywane z rozszerzeniem .ps1
i mogą być wykonywane bezpośrednio.
# myscript.ps1
Write-Host "Uruchamianie mojego skryptu PowerShell"
PowerShell traktuje dane jako obiekty, co ułatwia dostęp i manipulację właściwościami.
$process = Get-Process -Name "powershell"
$process.Id
PowerShell pozwala na pakowanie i dystrybucję funkcji jako modułów.
Import-Module MyModule
PowerShell obsługuje zdalne wykonywanie, umożliwiając uruchamianie poleceń na zdalnych maszynach.
Enter-PSSession -ComputerName Server01
PowerShell działa na środowisku uruchomieniowym .NET, co ułatwia wykonywanie skryptów PowerShell i cmdletów w bardzo wydajny sposób.
Kilka IDE i edytorów wspiera rozwój PowerShell, w tym:
Aby stworzyć skrypt PowerShell, programiści mogą pisać swój kod w dowolnym edytorze tekstu, zapisując go z rozszerzeniem .ps1
. Projekty mogą zawierać wiele skryptów i modułów, zorganizowanych w folderach.
PowerShell jest szeroko stosowany w różnych sektorach do:
PowerShell ma relacje z różnymi językami programowania:
Skrypty PowerShell mogą być tłumaczone na języki, które wspierają automatyzację i zadania skryptowe, takie jak Python lub Bash. Chociaż nie istnieją bezpośrednie narzędzia do tłumaczenia źródło-do-źródła, ręczna konwersja może polegać na przepisaniu cmdletów na równoważne polecenia lub funkcje w docelowym języku.
Istniejące narzędzia do tłumaczenia źródło-do-źródła obejmują: