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.
Powershell pozwala na uruchamianie cmdlet – komend (wbudowanych lub dodanych przez doinstalowane oprogramowanie), których nazwy skłądają się z dwóch słów – formatu Czasownik-Rzecownik, dzięki czemy 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).
W sposób analogiczny do powłow z Linux, korzystając ze znaczek |, PS umożliwia łączenie cmdlet 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.
PS cmdlet | Aliasy | Opis |
---|---|---|
Set-Location | cd | zmienia katlog bieżacy |
Get-Help | man, help | wyświetla pomoc na zadany temat lub dla podanego cmdlet. |
Get-Command | wyświetla listę dostępnych cmdlet w PS. | |
Get-Process | ps | wypisuje na ekran listę uruchomionych procesów. |
Select-Object | select | |
Where-Object | where |
Wyświetlenie pomocy dla polecenia select-object.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
PS C:\Users\Administrator> get-help select NAME Select-Object SYNTAX Select-Object [[-Property] <Object[]>] [-InputObject ] [-ExcludeProperty <string[]>] [-ExpandProperty ] [-Uniqu e] [-Last ] [-First ] [-Skip ] [-Wait] [] Select-Object [[-Property] <Object[]>] [-InputObject ] [-ExcludeProperty <string[]>] [-ExpandProperty ] [-Uniqu e] [-SkipLast ] [] Select-Object [-InputObject ] [-Unique] [-Wait] [-Index <int[]>] [] ALIASES select REMARKS Get-Help cannot find the Help files for this cmdlet on this computer. It is displaying only partial help. -- To download and install Help files for the module that includes this cmdlet, use Update-Help. -- To view the Help topic for this cmdlet online, type: "Get-Help Select-Object -Online" or go to http://go.microsoft.com/fwlink/?LinkID=113387. PS C:\Users\Administrator> |
Uzyskanie pomocy na stronie internetowej:
1 2 |
PS C:\Users\Administrator> get-help select -Online PS C:\Users\Administrator> |
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):
1 2 3 4 |
PS C:\Users\Administrator> $test="Ala ma kota" PS C:\Users\Administrator> $test Ala ma kota PS C:\Users\Administrator> |
Wyświetlenie pierwszych 10 komend dostępnych w help:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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 PS C:\Users\Administrator> |
Wyświetlenie wszystkich procesów wykorzystujących więcej niż 800MB pamięci operacyjnej:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
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 659 97 77604 102300 20,48 18816 1 Evernote 2663 117 95380 132420 361,77 6252 1 explorer 1729 377 1458104 1199772 9 720,64 11988 1 firefox 417 26 316432 122332 10,09 4168 1 javaw 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 418 70 480912 255524 288,14 7260 1 slack 397 47 189648 142260 432,42 7396 1 slack 329 26 230036 94792 44,38 9184 1 slack 390 38 86784 83776 30,94 9340 1 slack 399 44 135164 148040 67,52 10344 1 slack 394 44 150784 119948 98,03 10364 1 slack 443 54 114520 102008 86,38 2640 1 Spotify 2036 163 728440 513268 8 527,61 7244 1 thunderbird 798 45 35088 85592 3,66 2236 1 WINWORD PS C:\Users\Administrator> |
Wyświetlenie wszystkich komend rozpoczynających się od słowa Wait:
1 2 3 4 5 6 7 8 9 10 11 12 |
PS C:\Users\Administrator> Get-Command Wai* 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 PS C:\Users\Administrator> |
Wyświetlenie wszystkich procesów, które wykorzystywały procesor przez więcej niż 400 sekund:
1 2 3 4 5 6 7 8 9 10 11 12 |
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 PS C:\Users\Administrator> |