This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
PowerShell (PS) to powłoka interpretująca polecenia stworzona w 2006 roku jako następca cmd.exe (wcześniej z DOS command.com). Jednym z celów postawionych przez Microsoft dla wszystkich produktów serwerowych było umożliwienie przeprowadzania wszelkich zadań administracyjnych z wykorzystaniem właśnie PowerShell.
Cmdlet-y i obiekty
PowerShell pozwala na uruchamianie cmdlet-ów (z ang. command-let), tzn. komend (wbudowanych lub dodanych przez doinstalowane oprogramowanie), których nazwy składają się z dwóch słów – formatu Czasownik-Rzeczownik, dzięki czemu w sposób intuicyjny możemy zapamiętać co dana komenda robi. Np. Get-Command
– listuje wszystkie dostępne komendy w PS. W odróżnienia od powłok ze świata Linux, PowerShell nie operuje na strumieniach danych, ale na obiektach. Każdy wykonany cmdlet zwraca obiekt. W przypadku braku zdefiniowanych działań na obiekcie, zostanie on wyświetlony na ekranie (niekoniecznie wszystkie jego atrybuty).
Podstawowe cmdlet-y
PS cmdlet | Aliasy | Opis |
---|---|---|
Get-Location |
pwd |
wyświetla katalog bieżący |
Set-Location |
cd |
zmienia katalog bieżący |
Get-ChildItem |
ls , dir |
wyświetla zawartość katalogu |
Get-Content |
gc , cat |
wyświetla zawartość pliku |
Copy-Item |
cp , copy |
kopiuje pliki lub katalogi |
Remove-Item |
rm , rmdir , del |
usuwa plik lub katalog |
Write-Output |
echo |
wyświetla tekst na konsolę |
Get-Process |
ps |
wypisuje na ekran listę uruchomionych procesów |
Get-Help |
man , help |
wyświetla pomoc na zadany temat lub dla podanego cmdlet |
Get-Command |
wyświetla listę dostępnych cmdlet w PS | |
Select-Object |
select |
wybiera obiekty lub właściwości obiektu |
Where-Object |
where |
wybiera obiekty z kolekcji na podstawie wartości ich właściwości |
Potoki
W sposób analogiczny do powłoki z Linux, korzystając ze znaku |
, PS umożliwia łączenie cmdlet-ów w potoki. W przypadku gdy komenda poprzedzająca ten znak zwróci na wyjściu więcej niż jeden obiekt, komenda występująca po tym znaku zostanie wykonana osobno dla każdego otrzymanego na wejściu obiektu.
Przykładowe wykorzystanie
Przykład 1
Wyświetlenie pomocy dla polecenia Set-Location
:
PS C:\Users\Administrator> Get-Help Set-Location
NAME
Set-Location
SYNOPSIS
Sets the current working location to a specified location.
(...)
lub
PS C:\Users\Administrator> Set-Location -?
NAME
Set-Location
SYNOPSIS
Sets the current working location to a specified location.
(...)
Przykład 2
Uzyskanie pomocy dla polecenia select
(alias dla Select-Object
) na stronie internetowej:
PS C:\Users\Administrator> Get-Help select -Online
Przykład 3
Utworzenie zmiennej i jej wyświetlenie (PS w przypadku gdy nie wie co zrobić z poleceniem lub zmienną wykonuje domyślną metodę konwertującą ToString
):
PS C:\Users\Administrator> $test="Ala ma kota"
PS C:\Users\Administrator> $test
Ala ma kota
Przykład 4
Wyświetlenie pierwszych 10 komend dostępnych w pomocy:
PS C:\Users\Administrator> get-help * | select -first 10
Name Category Module Synopsis
---- -------- ------ --------
foreach Alias ForEach-Object
% Alias ForEach-Object
where Alias Where-Object
? Alias Where-Object
ac Alias Add-Content
clc Alias Clear-Content
cli Alias Clear-Item
clp Alias Clear-ItemProperty
clv Alias Clear-Variable
compare Alias Compare-Object
Przykład 5
Wyświetlenie wszystkich procesów wykorzystujących więcej niż 800MB pamięci operacyjnej:
PS C:\Users\Administrator> Get-Process | Where-Object { $_.WS -gt 80000000 }
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
757 39 194524 181188 1320 0 ekrn
2663 117 95380 132420 361,77 6252 1 explorer
1729 377 1458104 1199772 9 720,64 11988 1 firefox
0 0 2100 772440 3916 0 Memory Compression
2313 84 131856 105320 729,16 9892 1 opera
884 66 69996 113268 2,31 2136 1 SearchUI
3589 90 79056 105952 18,39 5904 1 ShellExperienceHost
1063 65 82504 81168 253,95 7028 1 slack
394 44 150784 119948 98,03 10364 1 slack
798 45 35088 85592 3,66 2236 1 WINWORD
Przykład 6
Wyświetlenie wszystkich komend rozpoczynających się od słowa Wait:
PS C:\Users\Administrator> Get-Command Wait*
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Wait-Debugger 3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Wait-Event 3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Wait-Job 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Wait-Process 3.1.0.0 Microsoft.PowerShell.Management
Application waitfor.exe 10.0.14... C:\windows\system32\waitfor.exe
Przykład 7
Wyświetlenie wszystkich procesów, które wykorzystywały procesor przez więcej niż 400 sekund:
PS C:\Users\Administrator> Get-Process | Where-Object { $_.CPU -gt 400 }
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
1630 357 1333140 1190516 7 075,08 11988 1 firefox
729 44 96040 79788 1 004,16 3584 1 opera
2385 89 129476 131816 571,97 9892 1 opera
411 40 115936 56156 834,63 11668 1 opera
2063 165 704004 521828 3 318,75 7244 1 thunderbird
Ciekawostki
- Skrót klawiaturowy
Ctrl-L
czyszczący konsolę. - Klawisz
Tab
włącza autouzupełnianie poleceń i parametrów. - Cmdlet-y są rozszerzeniem klas
cmdlet
lubpscmdlet
z .Net, które przykrywają metodyBeginProcessing()
,ProcessRecord()
orazEndProcessing()
, wykonywanych odpowiednio przy uruchomieniu, przetwarzaniu kolejnych obiektów i zakończeniu działania polecenia.
Zadania do wykonania podczas zajęć
- Uruchom PowerShella.
- Wyświetl bieżący katalogu roboczy.
- Przejdź do katalogu
C:\
- Przejdź do katalogu domowego.
- Sprawdź jakiemu poleceniu jest przypisany alias polecenia
ls
. - Wyświetl zawartość bieżącego katalogu.
- Zapoznaj się z pomocą polecenia
Get-ChildItem
. - Wyświetl zawartość bieżącego katalogu, uwzględniając tylko pliki.
- Wyświetl zawartość bieżącego katalogu, uwzględniając tylko katalogi.
- Wyświetl zawartość bieżącego katalogu, uwzględniając tylko ukryte katalogu.
- Wyświetl wszystkie partycje, dyski i udziały sieciowe.
- Zmień katalog bieżący na dysk
J:
- Wyświetl zawartość katalogu bieżącego.
- Wyświetl w terminalu swój numer indeksu.
- Wyświetl w terminalu swój numer indeksu w kolorze czerwonym.
- Wyświetl napis hello, a po 5 sekundach napis world.
- Zapisz swój numer indeksu w pliku
student.txt
- Wyświetl zawartość pliku
student.txt
- Jednym poleceniem dodaj do pliku
student.txt
w kolejnych liniach swoje imię i nazwisko. - Wyświetl zawartość pliku
student.txt
- Otwórz plik
student.txt
w Notatniku (uruchom z poziomu PS). - Zamknij Notatnik i stwórz nowy plik
student.txt
, w którym końce linii będą oznaczone poprzez kombinację CRLF. - Wyświetl zawartość pliku
student.txt
- Otwórz plik student.txt w Notatniku (uruchom z poziomu PS).
- Zamknij Notatnik i sprawdź ile słów zawiera plik
student.txt
- Utwórz katalog
zajecia-ps
- Skopiuj plik
student.txt
do kataloguzajecia-ps
- Skopiuj katalog
zajecia-ps
wraz z jego zawartością do kataloguzajecia-ps-kopia
- Wyświetl zawartość katalogu
zajecia-ps-kopia
- Zmień nazwę katalogu
zajecia-ps-kopia
nado-usuniecia
- Usuń katalog
do-usuniecia
- Wyświetl listę wszystkich uruchomionych programów.
- Wyświetl listę wszystkich procesów w odwrotnym porządku alfabetycznym posortowaną po nazwach.
- Wyświetl listę wszystkich usług.
- Wyświetl listę wszystkich komend PS, które zawierają rzeczownik Service
- Zapisz listę wszystkich uruchomionych programów do pliku
procesy.txt
- Wyświetl pierwsze 10 linii pliku
procesy.txt
- Wyświetl ostatnie 10 linii pliku
procesy.txt
- Wyświetl zawartość pliku
procesy.txt
przy pomocy programumore
- Wyświetl listę procesów, które nazywają się svchost
- Wyświetl tylko te wiersze pliku
procesy.txt
, które zawierają napis svc - Zapisz w zmiennych
$imie
i$nazwisko
swoje imię i nazwisko. - Zapisz zawartość zmiennej $nazwisko w pliku
nazwisko.txt
- Sprawdź ile czasu zajmuje wykonanie cmdlet-u
Get-Process
- Zapisz historię poleceń w pliku
lab-ps.txt
Materiały dodatkowe
- PowerShell Documentation, Microsoft Docs - dokumentacja PowerShella.
- Getting Started with Microsoft PowerShell, Microsoft Virtual Academy - videocasty o podstawach PowerShella.
- Windows PowerShell: Scripting Crash Course, Don Jones - artykuł o pisaniu skryptów PS.
- Using Windows PowerShell for Daily Tasks, Microsoft TechNet Virtual Lab - wirtualne laboratorium dotyczące podstaw zarządzania infrastrukturą Windows.
- PowerShell, Wikiversity - obszerny kurs PowerShella.
Zadanie do wykonania w domu
Wykonaj Zadanie domowe nr 1 z drugi zajęć z Linuxa, a polecenia PS zapisz w pliku o rozszerzeniu .ps1
Jeżeli pracujesz na własnym komputerze, to pamiętaj aby włączyć uruchamianie skryptów PowerShella.