Windows PowerShell

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Windows PowerShell
interpreter poleceń
Zrzut ekranu Windows PowerShell 1.0
Zrzut ekranu Windows PowerShell 1.0
Autor Microsoft
System operacyjny Windows XP lub nowszy
Pierwsze wydanie 14 listopada 2006
Aktualna wersja stabilna 4.0 / 17 października 2013
Licencja Zamknięte oprogramowanie
Strona internetowa

Windows PowerShell (poprzednio Microsoft Shell lub MSH, nazwa kodowa Monad) to interpreter poleceń opracowany przez firmę Microsoft. Jest znacznie rozbudowanym następcą dotychczasowych interpreterów COMMAND.COM i cmd.exe, stosowanych w systemach operacyjnych MS-DOS i Microsoft Windows. PowerShell został wydany w 2006 roku i jest dostępny dla Windows XP SP2, Windows Server 2003 i nowszych. Jest wbudowany w Microsoft Windows Server 2008 i Microsoft Windows Server 2012 jako cecha opcjonalna (nie instalowana automatycznie).

PowerShell jest zintegrowany z .NET Framework i dostarcza środowisko do wykonywania zadań administracyjnych wykonywanych poleceniami cmdlets.

Od 2008 roku, common criteria (lista warunków, które muszą zostać spełnione) dla wszystkich produktów serwerowych Microsoft zawiera zarządzanie przez PowerShell. Oznacza to, że przy pomocy interpretera poleceń wykonać można każde działanie administracyjne na każdym współczesnym produkcie. Dzięki temu znacząco ujednolica i upraszcza się skryptowe zarządzanie środowiskiem.

Charakterystyczną cechą PowerShell, odróżniającą go od innych interpreterów poleceń, jest obiektowa logika. Wynikiem każdego polecenia nie jest ciąg znaków na ekranie, ale obiekt określonego typu. W przypadku braku wskazania, co z danym obiektem należy zrobić, faktycznie część jego właściwości wyświetlana jest na ekranie. Możliwe jest jednak bardziej zaawansowane wykorzystanie metod i właściwości zwróconego obiektu. Przykładowo polecenie Get-ChildItem (lub jego alias dir albo ls) na pierwszy rzut oka zwraca listę plików i katalogów w bieżącej lokalizacji. Z otrzymanej przez Get-ChildItem | Get-Member listy, widać jednak, że można łatwo zastosować metodę Delete, bądź sięgnąć do właściwości LastAccessTime czy Attributes.

Warto również zwrócić uwagę, że praktycznie każda funkcja dostępna przez API systemu (czyli de facto każda operacja, którą w systemie Windows można zrobić) jest możliwa do wywołania z PowerShell. Oznacza to, że nie ma takiej opcji związanej z zarządzaniem systemem, której nie dałoby się wykonać poprzez skrypt PowerShell.

Cmdlets[edytuj | edytuj kod]

Poniższa tabela zawiera wybór z ponad 129 poleceń Cmdlets dostarczanych z PowerShell w porównaniu do odpowiadających im komend z konkurencyjnych interpreterów komend. Każde polecenie składa się z dwóch części: czasownikowej (get, set, clear itp.) oraz rzeczownikowej (location, host, process itp.). Dzięki temu nauczenie się dwóch stosunkowo niedługich list słów kluczowych pozwala na praktyczne użycie ponad stu dostępnych poleceń. Polecenia dotyczące zwykle plików i katalogów mają znacznie szersze działanie i dotyczą obiektów w dowolnej przestrzeni nazw. Przykładowo mogą dotyczyć równie dobrze plików jak i gałęzi w rejestrze.

Windows PowerShell
(Cmdlet)
Windows PowerShell
(Alias)
cmd.exe / COMMAND.COM
(MS-DOS, Windows, OS/2, etc.)
Bash
(Unix, BSD, GNU/Linux, etc.)
Opis
Set-Location sl, cd, chdir cd, chdir cd Zmienia aktualną lokalizację (katalog, gałąź rejestru, repozytorium certyfikatów)
Clear-Host cls, clear cls clear Czyści ekran
Copy-Item cpi, copy, cp copy cp Kopiuje obiekty (np. pliki) lub fragment struktury (np. drzewo katalogów)
Get-Help help, man help man Wyświetla pomoc do komend
Remove-Item ri, del, rmdir, rd, rm del, rmdir, rd rm, rmdir Usuwa obiekt (plik, katalog itp.)
Rename-Item rni, ren ren mv Zmienia nazwę obiektu (pliku, katalogu itp.)
Get-ChildItem gci, dir, ls dir ls Zwraca wszystkie obiekty w bieżącej lokalizacji. (Na przykład pliki w aktualnym katalogu)
Write-Output echo, write echo echo Wyświetla łańcuchy, zmienne itd na ekranie
Pop-Location popd popd popd Zamienia aktualną lokalizację na lokalizację ostatnio przesuniętą na stos
Push-Location pushd pushd pushd Przesuwa aktualną lokalizację na stos
Set-Variable sv, set set set Wyświetla wartość zmiennej/Tworzy zmienną
Get-Content gc, type, cat type cat Wyświetla zawartość obiektu (np. pliku)
Get-Process gps, ps tlist, tasklist ps Wypisuje aktualnie uruchomione procesy
Stop-Process spps, kill kill, taskkill kill Zatrzymuje uruchomiony proces
Tee-Object tee ? tee Tuneluje wejście do pliku lub zmiennej, przenosi wejście wzdłuż tunelu

Przykłady[edytuj | edytuj kod]

Jedne z najbardziej przydatnych:

  • Zatrzymuje wszystkie procesy, których nazwa zaczyna się na literę "c":
 PS> get-process c* | stop-process
  • Szuka procesu, który zużywa więcej niż 300 MB i zatrzymuje go (ang. kill):
 PS> get-process | where-object { $_.WS -gt 300MB } | stop-process
  • Listuje wszystkie uruchomione usługi:
 PS> get-service | where-object { $_.Status -eq "Running" } | format-table name, displayname
  • Znajduje i usuwa wszystkie pliki z rozszerzeniem XYZ folderu "C:\test" i jego podfolderów:
 PS> get-childitem C:\test\* -include *.xyz -recurse | remove-item
  • Listuje wszystkie zdefiniowane aliasy:
 PS> get-alias
  • Listuje wszystkie polecenia (cmdlety, aplikacje lub aliasy) zaczynające się ciągiem znaków "new":
 PS> get-command new*
  • Wyświetla pomoc dla polecenia get-command:
 PS> get-help get-command

Rozszerzenia plików[edytuj | edytuj kod]

  • PS1 – skrypty powłoki (ang. shell) Windows PowerShell.
Uwaga! Domyślne ustawienia PowerShell nie pozwalają na uruchamianie skryptów niepodpisanych cyfrowo. Ustawienie to można zmienić poleceniem Set-ExecutionPolicy (patrz: get-help about_signing).
  • PS1XML – typ i struktura danych Windows PowerShell.
  • PSC1 – plik konsoli Windows PowerShell.

Linki zewnętrzne[edytuj | edytuj kod]