Darmowy fragment publikacji:
Ed Wilson
Windows PowerShell® 3.0
Krok po kroku
Przekład: Marek Włodarz
APN Promise, Warszawa 2013
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
Windows PowerShell® 3.0 Krok po kroku
© 2013 APN PROMISE SA
Authorized Polish translation of the English edition Windows PowerShell® 3.0 Step by
Step, ISBN 978-0-735-66339-8
Copyright © 2013 by Ed Wilson
This translation is published and sold by permission of O’Reilly Media, Inc., which owns
or controls all rights to publish and sell the same.
APN PROMISE SA, biuro: ul. Kryniczna 2, 03-934 Warszawa
tel. +48 22 35 51 600, fax +48 22 35 51 699
e-mail: mspress@promise.pl
Wszystkie prawa zastrzeżone. Żadna część niniejszej książki nie może być powielana
ani rozpowszechniana w jakiejkolwiek formie i w jakikolwiek sposób (elektroniczny,
mechaniczny), włącznie z fotokopiowaniem, nagrywaniem na taśmy lub przy użyciu
innych systemów bez pisemnej zgody wydawcy.
Książka ta przedstawia poglądy i opinie autorów. Przykłady firm, produktów, osób
i wydarzeń opisane w niniejszej książce są fikcyjne i nie odnoszą się do żadnych
konkretnych firm, produktów, osób i wydarzeń, chyba że zostanie jednoznacznie
stwierdzone, że jest inaczej. Ewentualne podobieństwo do jakiejkolwiek rzeczywistej
firmy, organizacji, produktu, nazwy domeny, adresu poczty elektronicznej, logo, osoby,
miejsca lub zdarzenia jest przypadkowe i niezamierzone.
Nazwa Microsoft oraz znaki towarowe wymienione na stronie http://www.microsoft.com/
about/legal/en/us/IntellectualProperty/Trademarks/EN-US.aspx są zastrzeżonymi znakami
towarowymi grupy Microsoft. Wszystkie inne znaki towarowe są własnością ich
odnośnych właścicieli.
APN PROMISE SA dołożyła wszelkich starań, aby zapewnić najwyższą jakość tej
publikacji. Jednakże nikomu nie udziela się rękojmi ani gwarancji.
APN PROMISE SA nie jest w żadnym wypadku odpowiedzialna za jakiekolwiek szkody
będące następstwem korzystania z informacji zawartych w niniejszej publikacji, nawet
jeśli APN PROMISE została powiadomiona o możliwości wystąpienia szkód.
ISBN: 978-83-7541-119-5
Przekład: Marek Włodarz
Korekta: Ewa Swędrowska
Skład i łamanie: MAWart Marek Włodarz
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
Spis treści
Przedmowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
1 Przegląd cech Windows PowerShell 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Istota Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Korzystanie z poleceń cmdlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Instalowanie Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Wdrażanie Windows PowerShell w starszych systemach operacyjnych . . . . . . . . 4
Korzystanie z narzędzi wiersza poleceń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Problemy dotyczące zabezpieczeń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Kontrolowanie wykonywania poleceń cmdlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Potwierdzanie akcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Wstrzymywanie potwierdzania poleceń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Posługiwanie się Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Wywoływanie Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Konfigurowanie konsoli Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Przekazywanie opcji do poleceń cmdlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Korzystanie z opcji pomocy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Poznawanie poleceń: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Podsumowanie rozdziału 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2 Korzystanie z poleceń cmdlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Podstawy poleceń cmdlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Korzystanie z cmdlet Get-ChildItem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Uzyskiwanie listingu katalogu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Formatowanie listingu katalogu przy użyciu polecenia Format-List . . . . . . . . . . 26
Korzystanie z polecenia cmdlet Format-Wide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Formatowanie listingu katalogu przy użyciu Format-Table . . . . . . . . . . . . . . . . . . 28
Formatowanie danych wyjściowych przy użyciu Out-GridView . . . . . . . . . . . . . . . . . 30
Korzystanie z polecenia Get-Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Wyszukiwanie poleceń cmdlet za pomocą symboli wieloznacznych . . . . . . . . . 35
Korzystanie z polecenia Get-Member . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Korzystanie z polecenia Get-Member do badania właściwości i metod . . . . . . . 40
Korzystanie z polecenia New-Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Tworzenie i korzystanie z obiektu wshShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Korzystanie z polecenia Show-Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Jak nazewnictwo poleceń cmdlet pomaga w nauce . . . . . . . . . . . . . . . . . . . . . . . . . . 49
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
iii
iv
Spis treści
Grupowanie czasowników Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Dystrybucja czasowników Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Tworzenie profilu Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Wyszukiwanie wszystkich aliasów dla określonego obiektu . . . . . . . . . . . . . . . . . 54
Stosowanie poleceń cmdlet: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . . . . . . . 55
Podsumowanie rozdziału 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3 Dostawcy PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Istota dostawców PowerShell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Dostawca aliasów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Dostawca certyfikatów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Dostawca środowiska . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Dostawca systemu plików . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Dostawca funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Korzystanie z dostawcy rejestru do zarządzania zawartością rejestru
systemu Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Dwa dyski rejestru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Dostawca zmiennych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Poznawanie dostawców PowerShell: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . 98
Podsumowanie rozdziału 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4 Korzystanie z funkcji zdalnych i zadań PowerShell . . . . . . . . . . . . . . . . . 103
Funkcje zdalne Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Klasyczna praca zdalna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
WinRM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Korzystanie z zadań Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Korzystanie z mechanizmów zdalnych Windows PowerShell: ćwiczenia
krok po kroku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Podsumowanie rozdziału 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5 Używanie skryptów PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Po co pisać skrypty Windows PowerShell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Podstawy skryptowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Jak uruchomić skrypt Windows PowerShell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Włączanie obsługi skryptów w Windows PowerShell . . . . . . . . . . . . . . . . . . . . . 132
Przechodzenie z wiersza poleceń do skryptu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Uruchamianie skryptów Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Zmienne i stałe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Stałe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Korzystanie z wyrażenia While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Budowanie wyrażenia While w PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Praktyczny przykład wykorzystania wyrażenia While . . . . . . . . . . . . . . . . . . . . . . 148
Używanie specjalnych funkcji Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . 149
Korzystanie z wyrażenia Do...While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
Spis treści
v
Stosowanie operatora zakresu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Działania na tablicach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Rzutowanie znaków na wartości ASCII i odwrotnie . . . . . . . . . . . . . . . . . . . . . . . 151
Korzystanie z wyrażenia Do...Until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Porównanie konstrukcji Do...Until w PowerShell i w VBScript . . . . . . . . . . . . . . . 152
Stosowanie wyrażenia Do w Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . 153
Wyrażenie For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Wyrażenie For w PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Korzystanie z wyrażenia Foreach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Przedterminowe opuszczanie wyrażenia Foreach . . . . . . . . . . . . . . . . . . . . . . . . . 158
Wyrażenie If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Ocenianie wielu warunków . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Wyrażenie Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Korzystanie z wyrażenia Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Kontrolowanie dopasowywania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Tworzenie wielu folderów: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . . . . . . . . 167
Podsumowanie rozdziału 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
6 Praca z funkcjami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Czym są funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Wykorzystanie funkcji w celu ułatwienia ponownego użycia kodu . . . . . . . . . . . . 179
Korzystanie z techniki dot-sourcing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Korzystanie z funkcji dołączonych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Stosowanie dwóch parametrów wejściowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Stosowanie ograniczeń typów w funkcjach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Używanie więcej niż dwóch parametrów wejściowych . . . . . . . . . . . . . . . . . . . . . . . 191
Dołączanie pomocy do funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Korzystanie z obiektu here-string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Wykorzystanie funkcji do kapsułkowania logiki biznesowej . . . . . . . . . . . . . . . . . . 196
Wykorzystanie funkcji w celu ułatwienia modyfikowania kodu . . . . . . . . . . . . . . . 198
Istota filtrów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Tworzenie funkcji: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Podsumowanie rozdziału 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
7 Tworzenie zaawansowanych funkcji i modułów . . . . . . . . . . . . . . . . . . . . 213
Atrybut [cmdletbinding] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Łatwe komunikaty szczegółowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Automatyczne sprawdzanie parametrów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Dodawanie obsługi parametru -whatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Obsługa przełącznika -confirm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Specyfikowanie domyślnego zbioru parametrów . . . . . . . . . . . . . . . . . . . . . . . . . 220
Atrybut parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Właściwość mandatory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
vi
Spis treści
Właściwość position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Właściwość ParameterSetName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Właściwość ValueFromPipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Właściwość HelpMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Moduły . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Lokalizowanie i ładowanie modułów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Wyświetlanie dostępnych modułów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Ładowanie modułów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Instalowanie modułów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Tworzenie folderu Modules użytkownika. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Tworzenie dysku modułów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Sprawdzanie zależności modułów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Używanie modułu z udziału sieciowego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Tworzenie modułu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Tworzenie zaawansowanej funkcji: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . 250
Podsumowanie rozdziału 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
8 Korzystanie z Windows PowerShell ISE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Uruchamianie Windows PowerShell ISE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Poruszanie się po narzędziu Windows PowerShell ISE . . . . . . . . . . . . . . . . . . . . . 256
Korzystanie z panelu skryptu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Dopełnianie tabulatorem i IntelliSense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Korzystanie ze wstawek kodu w Windows PowerShell ISE . . . . . . . . . . . . . . . . . . . . 262
Używanie wstawek Windows PowerShell ISE do tworzenia kodu . . . . . . . . . . . 262
Tworzenie nowych wstawek Windows PowerShell ISE . . . . . . . . . . . . . . . . . . . . . 264
Usuwanie wstawek zdefiniowanych przez użytkownika . . . . . . . . . . . . . . . . . . . 265
Korzystanie z przystawki Commands: ćwiczenia krok po kroku . . . . . . . . . . . . . . . 266
Podsumowanie rozdziału 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
9 Stosowanie profili Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Sześć profili PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Istota różnych profili Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Badanie zmiennej $profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Ustalanie, czy konkretny profil istnieje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Tworzenie nowego profilu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Uwarunkowania projektowe profili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Korzystanie z jednego lub więcej profili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Korzystanie z profilu All Users, All Hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Korzystanie z własnego pliku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Grupowanie zbliżonej funkcjonalności w modułach . . . . . . . . . . . . . . . . . . . . . . . . . 282
Gdzie umieścić moduł profilu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Tworzenie profilu: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Podsumowanie rozdziału 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
Spis treści
vii
10 Korzystanie z WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Istota modelu WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Posługiwanie się obiektami i przestrzeniami nazw . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Wyliczanie dostawców WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Korzystanie z klas WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Odpytywanie WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Uzyskiwanie informacji o usługach: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . 303
Podsumowanie rozdziału 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
11 Odpytywanie WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Alternatywne metody łączenia się z WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Selektywne odczytywanie danych ze wszystkich instancji . . . . . . . . . . . . . . . . . . 320
Wybieranie wielu właściwości . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Wybieranie konkretnych instancji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Stosowanie operatorów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Gdzie jest where? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Skracanie składni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Praca z oprogramowaniem: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . . . . . . . 333
Podsumowanie rozdziału 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
12 Zdalne kwerendy WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Używanie WMI wobec systemów zdalnych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Dostarczanie alternatywnych poświadczeń dla połączenia zdalnego . . . . . . . . 343
Wykorzystanie mechanizmu zdalnego Windows PowerShell
do wywoływania WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Wykorzystanie CIM do odpytywania klas WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Praca ze zdalnymi rezultatami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Redukowanie rozmiaru danych za pomocą argumentów Windows
PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Uruchamianie zadań WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Korzystanie z mechanizmów zdalnych Windows PowerShell WMI:
ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Podsumowanie rozdziału 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
13 Wywoływanie metod w klasach WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Wykorzystywanie poleceń cmdlet WMI do wykonywania metod instancji . . . . . . 359
Bezpośrednie stosowanie metody terminate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Korzystanie z polecenia cmdlet Invoke-WmiMethod . . . . . . . . . . . . . . . . . . . . . . 363
Korzystanie z akceleratora typu [wmi] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Wykorzystanie WMI do pracy z metodami statycznymi . . . . . . . . . . . . . . . . . . . . . . 365
Wykonywanie metod instancji: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . . . . 369
Podsumowanie rozdziału 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
viii
Spis treści
14 Korzystanie z poleceń CIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Eksplorowanie klas WMI przy użyciu poleceń CIM . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Korzystanie z argumentu -classname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Wyszukiwanie metod klas WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Filtrowanie klas przy użyciu kwalifikatora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Odczytywanie instancji klas WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Redukowanie liczby zwracanych właściwości i instancji . . . . . . . . . . . . . . . . . . . 378
Czyszczenie wyjścia polecenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Praca ze skojarzeniami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
Odczytywanie instancji klas WMI: ćwiczenia krok po kroku. . . . . . . . . . . . . . . . . . . 385
Podsumowanie rozdziału 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
15 Praca z Active Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Tworzenie obiektów w Active Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Tworzenie OU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Dostawcy ADSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Nazwy LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Tworzenie użytkowników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Czym jest kontrola konta użytkownika? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
Praca z użytkownikami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Tworzenie wielu jednostek organizacyjnych: ćwiczenia krok po kroku . . . . . . . . . 419
Podsumowanie rozdziału 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
16 Korzystanie z modułu AD DS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Istota modułu Active Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Instalowanie modułu Active Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Wprowadzenie do modułu Active Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Korzystanie z modułu Active Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Wyszukiwanie wzorców operacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Poznawanie struktury Active Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
Przemianowywanie lokacji Active Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Zarządzanie jednostkami organizacyjnymi, użytkownikami i grupami . . . . . . . 438
Tworzenie użytkownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Wyszukiwanie i odblokowywanie kont użytkowników Active Directory . . . . . 443
Selektywne wybieranie kont użytkowników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Wyszukiwanie nieużywanych kont użytkowników . . . . . . . . . . . . . . . . . . . . . . . . 446
Aktualizowanie obiektów Active Directory: ćwiczenia krok po kroku . . . . . . . . . . 449
Podsumowanie rozdziału 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
17 Wdrażanie AD DS w systemie Windows Server 2012 . . . . . . . . . . . . . . . 453
Wdrażanie nowego lasu przy użyciu modułu Active Directory . . . . . . . . . . . . . . . . 453
Dodawanie nowego kontrolera domeny do istniejącej domeny . . . . . . . . . . . . . . . 460
Dodawanie kontrolera domeny tylko do odczytu . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Instalowanie kontrolera domeny: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . . 464
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
Spis treści
ix
Podsumowanie rozdziału 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
18 Debugowanie skryptów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Debugowanie w Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Trzy rodzaje błędów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Korzystanie z polecenia cmdlet Set-PSDebug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Śledzenie skryptu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Krokowe wykonywanie skryptu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
Włączanie trybu ścisłego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
Korzystanie z polecenia Set-PSDebug -Strict . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
Korzystanie z polecenia Set-StrictMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Debugowanie skryptu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Ustawianie punktów wstrzymania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Ustawianie punktu wstrzymania według numeru wiersza . . . . . . . . . . . . . . . . . 491
Ustawianie punktu wstrzymania dla zmiennej . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Ustawianie punktu wstrzymania dla polecenia . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
Wyliczanie punktów wstrzymania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
Włączanie i wyłączanie punktów wstrzymania . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
Usuwanie punktów wstrzymania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
Debugowanie funkcji i skryptów: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . . 502
Podsumowanie rozdziału 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
19 Obsługa błędów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
Obsługa brakujących parametrów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
Tworzenie domyślnej wartości dla parametru . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
Ustawianie parametru jako wymaganego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
Ograniczanie wyboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
Korzystanie z PromptForChoice do ograniczania wyboru . . . . . . . . . . . . . . . . . . 511
Wykorzystanie Test-Connection do sprawdzania dostępności komputerów . . 512
Wykorzystanie operatora -contains do badania zawartości tablicy . . . . . . . . . 514
Wykorzystanie operatora -contains do testowania właściwości . . . . . . . . . . . . . 516
Obsługiwanie brakujących uprawnień . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
Próba i niepowodzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
Sprawdzenie uprawnień i wyjście . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
Obsługa niedostępnych dostawców WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
Niewłaściwe typy danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
Błędy przekroczenia zakresu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
Stosowanie funkcji sprawdzania zakresu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
Narzucanie ograniczeń na parametry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
Używanie konstrukcji Try...Catch...Finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Przechwytywanie wielu błędów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
Korzystanie z metody PromptForChoice do ograniczania wyboru:
ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
Podsumowanie rozdziału 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
x
Spis treści
20 Zarządzanie serwerem Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Poznawanie poleceń cmdlet Exchange 2010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Praca ze zdalnymi serwerami Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
Konfigurowanie ustawień odbiorców . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Tworzenie konta użytkownika i skrzynki pocztowej . . . . . . . . . . . . . . . . . . . . . . . 550
Raportowanie ustawień użytkowników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Zarządzanie ustawieniami magazynowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Badanie bazy danych skrzynek pocztowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Zarządzanie bazami danych skrzynek pocztowych . . . . . . . . . . . . . . . . . . . . . . . 557
Zarządzanie rejestrowaniem zdarzeń w Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
Zarządzanie inspekcją . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Analizowanie pliku inspekcji w formacie XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
Tworzenie kont użytkowników: ćwiczenia krok po kroku . . . . . . . . . . . . . . . . . . . . . 571
Podsumowanie rozdziału 20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
A Bazowe polecenia cmdlet Windows PowerShell . . . . . . . . . . . . . . . . . . . . 577
B Liczebność modułów Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . 587
C Nazewnictwo poleceń Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . 591
D Windows PowerShell FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
E Użyteczne klasy WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
F Podstawowe wskazówki dotyczące rozwiązywania problemów . . . . 629
G Ogólne wskazówki skryptowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
H Czasowniki PowerShell i ich polskie znaczenie . . . . . . . . . . . . . . . . . . . . . . 641
Indeks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
O autorze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
Przedmowa
Od zawsze zdawałem sobie sprawę, że automatyzacja codziennych czynności jest
krytyczną umiejętnością dla profesjonalisty IT. W niezwykłym stopniu zwięk-
sza zarówno produktywność, jak i jakość operacji; umiejętność ta poprawia zarówno
jakość fi rm, jak i karier osób, które ją opanują. Ulepszania automatyzacji działań IT
było moim czołowym priorytetem, gdy dołączyłem do fi rmy Microsoft w 1999 roku
jako architekt produktów i technologii zarządzania. Doprowadziło to do wynalezie-
nia Windows PowerShell, a następnie do mozolnego przekształcania go w centralny
element technik zarządzania. W tym czasie branża dokonała kilku znaczących prze-
sunięć. Zmiany te sprawiły, że zostanie ekspertem od automatyzacji stało się jeszcze
ważniejsze.
W trakcie projektowania pierwszej wersji PowerShell zespół wypracował bardzo
silny związek z Exchange. Wyobrażaliśmy sobie, że Exchange pomoże w akcepta-
cji PowerShell przez środowiska administratorów i profesjonalistów IT. Można sobie
wyobrazić nasze zaskoczenie (i zachwyt), gdy odkryliśmy, że najbardziej aktywną spo-
łecznością korzystającą z PowerShell byli klienci VMWare. Skontaktowałem się więc
z zespołem VMWare, aby dowiedzieć się, dlaczego nasz nowy shell został tak dobrze
przyjęty przez ich klientów. Wyjaśniono mi, że ich klientami byli przede wszystkim
profesjonaliści IT, którzy głównie zajmowali się utrzymywaniem posiadanych przez
ich fi rmy serwerów. Wraz z wdrożeniem wirtualizacji nagle mieli do obsługi 5-10
razy więcej serwerów, zatem znaleźli się w sytuacji „automatyzuj lub utoniesz”. Stali
w obliczu rozpalającego się pożaru, a PowerShell był wiadrem wody, które pojawiło
się w ostatniej chwili.
Przechodzenie do chmury jest kolejnym przesunięciem, które zwiększa ważność
automatyzacji. Cały wysiłek projektantów koncentruje się na bezpiecznym wyko-
nywaniu zmian poprzez modyfi kację ustawień ogólnych oraz automatyzację. Przy
korzystaniu z aplikacji w chmurze nie możemy polegać tylko na sprawnym pra-
cowniku z fi liżanką kawy i myszą – musimy zautomatyzować operacje za pomo-
cą skryptów i procedur. Gdy czytamy raporty z awarii największych chmur, często
widzimy, że prawdziwą przyczyną była ręczna konfi guracja. Gdy używamy automa-
tyzacji i wystąpi błąd, przeglądamy nasze skrypty i modyfi kujmy je, aby nie zdarzył
się ponownie. Przy automatyzacji prawdziwe jest powiedzenie Nietzsche’go: co nas
nie zabije, to nas wzmocni. Nie jest zaskoczeniem, że Azure obsługuje PowerShell
od jakiegoś czasu, ale byłem zachwycony widząc, że Amazon właśnie opublikował 587
poleceń cmdlet do zarządzania AWS.
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
xi
xii
Windows PowerShell 3.0 Krok po kroku
Nauka automatyzacji przy użyciu PowerShell jest więc sprawą krytyczną i nie
ma zbyt wielu ludzi lepiej przygotowanych do tego zadania, niż Ed Wilson. Ed Wil-
son jest mężem The Scripting Wife i człowiekiem odpowiedzialnym za popularny blog
The Scripting Guy. Nie będzie przesadą stwierdzenie, że Ed i jego żona Teresa to dwie
najbardziej aktywne osoby w środowisku PowerShell. Ed znany jest z praktycznego
podejścia „jak to zrobić” do PowerShell. Dzięki pracy z tak wielu klientami i ludź-
mi uczącymi się PowerShell Ed wie, jakie pytania będą chcieli zadać, jeszcze zanim
sami sobie je uświadomią. I szczęśliwie znalazł czas, aby przekuć to w nową książkę:
Windows PowerShell 3.0 Krok po kroku.
– Jeffrey Snover, Distinguished Engineer and Lead Architect, Microsoft Windows
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
Wprowadzenie
Windows PowerShell 3.0 jest podstawowym narzędziem zarządzania i automaty-
zacji, które wnosi prostotę wiersza polecenia do systemów operacyjnych następ-
nej generacji. Dołączony do Windows 8 i Windows Server 2012, a także dostępny dla
systemów Windows 7 i Windows Server 2008 R2, Windows PowerShell 3.0 oferuje
niespotykaną dotąd siłę i elastyczność dla każdego – od zaawansowanych użytkowni-
ków, po administratorów sieci przedsiębiorstw i projektantów.
Kto powinien przeczytać tę książkę
Książka ta ma na celu pomóc profesjonalistom IT szybko i efektywnie zacząć korzystać
z technik Windows PowerShell 3.0. Książka Windows PowerShell 3.0 Krok po kroku jest
szczególnie adresowana do następujących osób:
■
Konsultanci sieci Windows Każdy pragnący standaryzacji i automatyzacji pro-
cesów instalacyjnych oraz konfi guracji komponentów sieciowych .NET.
■ Administratorów sieci Windows Każdy pragnący automatyzować codzienne
zadania zarządzania w sieciach Windows.
■ Microsoft Certified Solutions Experts (MCSEs) oraz Microsoft Certified
Trainers (MCTs) Windows PowerShell jest kluczowym komponentem wielu
cykli szkoleniowych fi rmy Microsoft i egzaminów certyfi kacyjnych.
■ Ogólny personel techniczny Każdy potrzebujący gromadzić informacje i kon-
fi gurować ustawienia na komputerach Windows.
■ Użytkownicy zaawansowani Każdy chcący uzyskać maksymalną moc i konfi -
guralność swojego komputera Windows, czy to w domu, czy w niezarządzanym
środowisku pracy.
Założenia
Autor oczekuje, że Czytelnik zna system operacyjny Windows, toteż nie zamiesz-
cza wyjaśnień bazowych terminów sieciowych czy systemowych. Książka zakłada też,
że Czytelnik ma przynajmniej podstawowe przygotowanie w zakresie programowania
obiektowego i rozumie pojęcia i stosowalność takich technik, jak metody, właściwości
czy rzutowanie. Przydatna będzie też przynajmniej podstawowa znajomość platformy
.NET. Bardziej szczegółowe zagadnienia dotyczące programowania obiektowego, pro-
jektowania i skryptowania są wyjaśniane, gdy się pojawią.
xiii
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
xiv Windows PowerShell 3.0 Krok po kroku
Kto nie powinien czytać tej książki
Książka ta nie jest przewodnikiem referencyjnym po Windows PowerShell 3.0, ale ma
na celu wprowdzić Czytelnika w świat PowerShell i zachęcić go do dalszych ekspery-
mentów i poznawania środowiska na własną rękę. Oznacza to jednak, że szczególnie
pogłębione, ezoteryczne tematy nie zostały w niej omówione. Choć pojawiają się nie-
które zaawansowane zagadnienia, w ogólności zaczynamy od bardzo podstawowych
pojęć i zmierzamy w kierunku bardziej złożonych zagadnień.
Z drugiej strony, jeśli ktoś nigdy nie używał komputera i nie orientuje się w ele-
mentarnych pojęciach dotyczących systemów operacyjnych, sieci czy programowania,
ta książka zdecydowanie nie jest przeznaczona dla niego.
Konwencje użyte w książce
Książka prezentuje informacje stosując się do konwencji zaprojektowanych tak, aby
wskazówki był jak najbardziej czytelne i łatwe do naśladowania.
■ Każdy rozdział kończy się dwoma ćwiczeniami praktycznymi.
■ Każde ćwiczenie składa się z serii zadań przedstawionych jako numerowane kroki
(1, 2 i tak dalej), opisujące każde działanie, które trzeba wykonać, aby ukończyć
ćwiczenie.
■ Wyróżnione elementy z tytułami takimi jak „Uwaga” zawierają dodatkowe infor-
macje lub alternatywne metody osiągnięcia celu.
Tekst, który Czytelnik ma wpisać (poza blokami kodu) jest wyróżniony
wytłuszczeniem.
Znak plus (+) pomiędzy nazwami dwóch klawiszy oznacza, że klawisze te należy
nacisnąć równocześnie. Na przykład „Naciśnij Alt+Tab” oznacza, że należy przy-
trzymać klawisz Alt, gdy naciskamy klawisz Tab.
Elementy grafi cznego interfejsu użytkownika są wyróżnione czcionką bezszery-
fową. Pionowa kreska pomiędzy dwoma lub więcej elementami menu (np. File |
Close) oznacza, że należy wybrać pierwsze menu, a następnie kolejne i tak dalej.
Słowa kluczowe, nazwy poleceń cmdlet, właściwości lub klas są wyróżnione
czcionką bezszeryfową w kursywie, np. Get-Help.
Szczególnie istotne pojęcia, a także wartości zmiennych są wyróżnione kursywą.
■
■
■
■
■
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
Wprowadzenie
xv
Wymagania systemowe
Do wykonania ćwiczeń praktycznych zawartych w książce potrzebne będą następujące
elementy sprzętowe i programowe:
■ Komputer z jednym z następujących systemów operacyjnych: Windows 7,
Windows Server 2008 z dodatkiem Service Pack 2, Windows Server 2008 R2,
Windows 8 lub Windows Server 2012.
Zainstalowany pakiet Windows PowerShell 3.0 (niewymagane w przypadku syste-
mu Windows 8 lub Windows Server 2012).
Połączenie z Internetem do pobierania oprogramowania i przykładów.
■
■
■ Część ćwiczeń wymaga dostępu do komputera zdalnego. Może być to maszyna
wirtualna z dostępem sieciowym. Ćwiczenia z rozdziałów 15–17 wymagają dostę-
pu do domeny Active Directory (kontrolera domeny). Ćwiczenia z rozdziału 20
wymagają dostępu do serwera Exchange.
Przykłady kodu
Wszystkie rozdziały książki zawierają przykłady kodu, które można wprowadzać inter-
aktywnie, aby wypróbować nowe umiejętności i techniki. Część tych przykładów moż-
na pobrać z następującej strony:
http://aka.ms/PowerShellSBS_book
Podziękowania
Chciałbym podziękować za pomoc następującym osobom: mojemu agentowi Claudette
Moore, gdyż bez niej książka ta nigdy by nie powstała. Moim redaktorom Devonowi
Musgrave i Michaelowi Bolingerowi za przekształcenie tekstu w coś przypominającego
prawdziwy angielski, oraz recenzentowi Thomasowi Lee, którego uwagi i spostrzeżenia
pozwoliły stworzyć znacznie lepszą książkę. Na koniec wreszcie chcę podziękować
mojej żonie Teresie (inaczej Scripting Wife), która przeczytała każdą stronę i dodała
liczne sugestie, które będą bardzo przydatne początkującym skrypciarzom.
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
ROZDZIAŁ 1
Przegląd cech Windows
PowerShell 3.0
Po zapoznaniu się z tym rozdziałem Czytelnik będzie umiał:
■ Określić podstawowe zastosowania i możliwości Windows PowerShell
■
Zainstalować Windows PowerShell
■ Korzystać z podstawowych narzędzi wiersza polecenia wewnątrz Windows
PowerShell
■ Korzystać z systemu pomocy
■ Uruchamiać podstawowe polecenia cmdlet
■ Uzyskiwać pomoc na temat poleceń cmdlet
Opublikowanie wersji Windows PowerShell 3.0 stanowi znaczący postęp dla
administratorów sieci systemów Windows. Dzięki połączeniu siły dojrzałego
języka skryptowego z dostępem do narzędzi wiersza poleceń, interfejsów Windows
Management Instrumentation (WMI) czy wręcz VBScript, Windows PowerShell
zapewnia skuteczność i łatwość stosowania, której w platformie Windows brakowało
od zawsze. Jako część standardu Microsoft Common Engineering Criteria, Windows
PowerShell szybko staje się podstawowym rozwiązaniem zarządzania dla platformy
Windows. Profesjonaliści IT używający systemu Windows Server 2012 muszą sięgnąć
po Windows PowerShell – i to raczej prędzej, niż później.
Istota Windows PowerShell
Zapewne największą przeszkodą dla wielu administratorów sieci w przejściu do korzy-
stania z Windows PowerShell jest niezrozumienie, co to naprawdę jest. Pod wielo-
ma względami jest to zamiennik dla sędziwej powłoki CMD (command – polecenie).
I rzeczywiście, w systemie Windows Server 2012 w trybie Core możliwe jest zastą-
pienie powłoki CMD przez Windows PowerShell, tak że po uruchomieniu serwera
używa on PowerShell jako domyślnego interfejsu użytkownika. Jak można się prze-
konać, po uruchomieniu Windows PowerShell można używać w nim dobrze znanych
1
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
2
Rozdział 1: Przegląd cech Windows PowerShell 3.0
poleceń, na przykład cd do zmiany katalogu roboczego lub dir do wyświetlenia jego
zawartości – tak samo jak w oknie CMD.
Windows PowerShell
Copyright (C) 2012 Microsoft Corporation. All rights reserved.
PS C:\Users\administrator cd c:\
PS C:\ dir
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 3/22/2012 4:03 AM PerfLogs
d-r-- 3/22/2012 4:24 AM Program Files
d-r-- 3/23/2012 6:02 PM Users
d---- 3/23/2012 4:59 PM Windows
-a--- 3/22/2012 4:33 AM 24 autoexec.bat
-a--- 3/22/2012 4:33 AM 10 config.sys
PS C:\
Można również połączyć tradycyjne polecenia interpretera CMD z niektórymi nowszy-
mi narzędziami, takimi jak fsutil, co prezentuje kolejny przykład:
PS C:\ md c:\test
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 4/22/2012 5:01 PM test
PS C:\ fsutil file createnew C:\test\mynewfile.txt 1000
File C:\test\mynewfile.txt is created
PS C:\ cd c:\test
PS C:\test dir
Directory: C:\test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 4/22/2012 5:01 PM 1000 mynewfile.txt
PS C:\test
Przykłady te prezentują interaktywne wykorzystanie Windows PowerShell.
Interaktywność jest jedną z głównych funkcji WIndows PowerShell. Aby użyć
PowerShell interaktywnie, wystarczy otworzyć jego okno zachęty i zacząć wpisywać
polecenia – po jednym na raz, albo łącząc je ze sobą, podobnie jak w pliku wsado-
wym. Do tego tematu powrócę później, gdyż najpierw muszę przedstawić bardziej
podstawowe informacje.
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
Istota Windows PowerShell
3
Korzystanie z poleceń cmdlet
Oprócz aplikacji konsolowych systemu Windows i wbudowanych poleceń w środowi-
sku PowerShell dostępne są polecenia cmdlet (wymawiane jako „komandlet”), budujące
jego prawdziwą potęgę. Polecenia cmdlet mogą być tworzone przez każdego. Zespół
programistów Windows PowerShell w fi rmie Microsoft utworzył podstawowy zbiór
poleceń, ale oprócz tego powstały już setki poleceń utworzonych przez inne grupy
projektowe. Większość z tych poleceń jest dołączonych do systemów Windows 8
i Windows Server 2012, podczas gdy inne pakiety stanowią część bardziej wyspe-
cjalizowanych programów, takich jak Microsoft Exchange czy Microsoft SQL Server.
Polecenia cmdlet są plikami wykonywalnymi, które wykorzystują funkcjonalności
wbudowane w środowisko PowerShell i dzięki temu są tak łatwe do napisania. Nie
są to skrypty zawierające nieskompilowany kod – są zbudowane przy wykorzystaniu
usług specjalnej przestrzeni nazw .NET Framework. Windows PowerShell 3.0 w wersji
dla Windows 8 wyposażony jest w około 1000 poleceń cmdlet i w miarę dodawania
nowych funkcji lub ról dołączane są kolejne. Polecenia te mają na celu zapewnienie
administratorom sieci czy konsultantom dostępu do siły Windows PowerShell bez
konieczności tworzenia złożonych skryptów. Jedną z głównych przewag PowerShell
jest to, że wszystkie polecenia wykorzystują standardową konwencję nazewniczą
określaną terminem czasownik-rzeczownik (verb-noun), na przykład Get-Help („otrzy-
maj pomoc”), Get-EventLog lub Get-Process. Polecenia używające czasownika Get
(weź, pobierz) wyświetlają informacje o elemencie umieszczonym po prawej stro-
nie łącznika. Polecenia używające czasownika Set (ustal, określ) powodują ustawie-
nie odpowiednich cech elementu po prawej stronie łącznika. Na przykład polecenie
cmdlet Set-Service pozwala (między innymi) zmienić tryb uruchomieniowy usługi
(ang. service). Wszystkie polecenia używają jednego ze standardowych czasowników.
W celu wyświetlenia listy tych czasowników można użyć polecenia cmdlet Get-Verb.
W Windows PowerShell 3.0 występuje około stu zaakceptowanych czasowników.
Instalowanie Windows PowerShell
Windows PowerShell 3.0 jest dołączony do systemu operacyjnego Windows Server
2012 i oraz Windows 8. W witrynie Microsoft Download Center dostępny jest pakiet
Windows Management Framework 3.0, zawierający zaktualizowane wersje Windows
Remote Management (WinRM), WMI oraz Windows PowerShell 3.0 dla systemów
Windows 7, Windows Server 2008 R2 oraz Windows Server 2008. W systemach tych
wymagane jest zainstalowanie dodatku Service Pack 1 (co najmniej) oraz platformy
Microsoft .NET Framework 4.0. Nie jest dostępny pakiet dla systemu Windows Vista,
Windows Server 2003 i wcześniejszych wersji. Nie istnieje także pakiet dla systemów
Windows 8 ani Windows Server 2012, gdyż oprogramowanie jest zawarte w tych
systemach.
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
4
Rozdział 1: Przegląd cech Windows PowerShell 3.0
W tym samym systemie operacyjnym może być zainstalowana zarówno powłoka
Windows PowerShell 3.0, jak i wersja 2.0, ale wymaga to dostępności równocześnie
.NET Framework 3.5 oraz 4.0.
Aby uniknąć problemów i frustracji podczas instalacji, sensowne jest wyko-
rzystanie skryptu sprawdzającego system operacyjny, poziom zainstalowanych
dodatków Service Pack oraz platformy .NET. Poniższy przykład prezentuje skrypt
Get-PowerShellRequirements.ps1 sprawdzający te warunki wstępne:
Get-PowerShellRequirements.ps1
Param([string[]]$computer = @($env:computername, LocalHost ))
foreach ($c in $computer)
{
$o = Get-WmiObject win32_operatingsystem -cn $c
switch ($o.version)
{
{$o.version -gt 6.2} { $c is Windows 8 or greater ; break}
{$o.version -gt 6.1}
{
If($o.ServicePackMajorVersion -gt 0){$sp = $true}
If(Get-WmiObject Win32_Product -cn $c |
where { $_.name -match .NET Framework 4 }) {$net = $true }
If($sp -AND $net) { $c meets the requirements for PowerShell 3 ; break}
ElseIF (!$sp) { $c needs a service pack ; break}
ELSEIF (!$net) { $c needs a .NET Framework upgrade } ; break}
{$o.version -lt 6.1} { $c does not meet standards for PowerShell 3.0 ; break}
Default { Unable to tell if $c meets the standards for PowerShell 3.0 }
}
}
Wdrażanie Windows PowerShell
w starszych systemach operacyjnych
Po pobraniu pakietu instalacyjnego z witryny http://www.microsoft.com/downloads można
wdrożyć go na komputerach przedsiębiorstwa wykonując jedno z poniższych działań:
■ Utworzyć pakiet instalacyjny Windows Management Framework i ogłosić go dla
odpowiedniej jednostki organizacyjnej (OU) lub zbioru jednostek.
■ Utworzyć obiekt zasad grupy (GPO) instalacji oprogramowania w usługach AD
DS i połączyć go z odpowiednią jednostką organizacyjną.
■ Dołączyć pakiet jako zaaprobowany do serwera SUS (Software Update Services),
jeśli jest dostępny.
■ Umieścić pakiet w centralnym udziale plikowym lub witrynie, aby użytkownicy
mogli go zainstalować we własnym zakresie.
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
Korzystanie z narzędzi wiersza poleceń
5
Jeśli wdrożenie odbywa się na pojedynczym komputerze, a nie w całym przedsiębior-
stwie, najprostszą metodą wdrażania będzie pobranie pakietu i przejście przez kroki
kreatora instalacji.
UWAGA Aby móc zacząć używać narzędzi wiersza poleceń Windows PowerShell, należy
uruchomić powłokę, wybierając Start | Run | PowerShell. Pojawi się okno polecenia ze zna-
kiem zachęty PS , w którym można zacząć wpisywać polecenia.
Korzystanie z narzędzi wiersza poleceń
Jak wspomniałem wcześniej, z wnętrza Windows PowerShell można bezpośrednio
wywoływać narzędzia trybu wiersza poleceń. Przewagą wykorzystania PowerShell
jako środowiska dla tych narzędzi, w przeciwieństwie do korzystania z tradycyjne-
go interpretera CMD, są funkcje przekierowywania wyjścia i formatowania dostępne
w PowerShell. Dodatkowo, jeśli mamy już pliki wsadowe (.cmd lub .bat) wykorzystu-
jące istniejące narzędzia wiersza poleceń, można je łatwo zmodyfi kować, aby mogły
być uruchamiane w środowisku PowerShell. Poniższa procedura ilustruje dołączenie
wyników polecenia ipconfig do pliku tekstowego.
➜
Wywoływanie polecenia ipconfig
1. Uruchom powłokę Windows PowerShell, wybierając Start | Run | Windows
PowerShell. Okno poleceń PowerShell otworzy się domyślnie w głównym folderze
Documents zalogowanego użytkownika.
2. Wpisz polecenie ipconfi g /all:
PS C:\ ipconfig /all
3. Przekieruj wyniki plecenia do pliku tekstowego, jak poniżej:
PS C:\ ipconfig /all ipconfig.txt
4. Otwórz utworzony plik w Notatniku, aby przejrzeć zawartość:
PS C:\ notepad ipconfig.txt
Wpisywanie pojedynczych poleceń jest oczywiście użyteczne, ale zazwyczaj potrze-
bujemy więcej niż jednego, aby zrealizować założony cel – na przykład zgromadzić
informacje konfi guracyjne potrzebne do rozwiązania problemów z instalacją lub nie-
dostateczną wydajnością. I tu objawia się przewaga Windows PowerShell. W przeszło-
ści w takim przypadku trzeba było albo napisać plik wsadowy, albo wpisywać kolejne
polecenia ręcznie. Oto przykład prostego pliku wsadowego rejestrującego informacje
przydatne do rozwiązywania problemów z siecią:
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
6
Rozdział 1: Przegląd cech Windows PowerShell 3.0
TroubleShoot.bat
ipconfig /all c:\tshoot.txt
route print c:\tshoot.txt
hostname c:\tshoot.txt
net statistics workstation c:\tshoot.txt
Oczywiście przy ręcznym wpisywaniu poleceń musielibyśmy czekać na wykonanie
każdego polecenia przed wywołaniem kolejnego. W takiej sytuacji łatwo można „zagu-
bić się” we właściwej sekwencji lub wpisać kolejne polecenie przed zakończeniem
przetwarzania poprzedniego, co doprowadzi do bezużytecznych wyników. Windows
PowerShell eliminuje ten problem. Można teraz wpisać wiele poleceń w jednym wier-
szu, po czym odejść od komputera lub zająć się innymi zadaniami, podczas gdy system
generuje wyniki. Nie ma potrzeby tworzenia pliku wsadowego w tym celu.
WSKAZÓWKA Można wpisywać wiele poleceń w jednym wierszu Windows PowerShell, aby
zostały wykonane po kolei. Poszczególne polecenia należy rozdzielać średnikami.
Poniższy przykład prezentuje wywołanie wielu poleceń w jednym wierszu. Użyte pole-
cenia są zawarte w pliku RunningMultipleCommands.txt.
➜
Uruchamianie wielu poleceń
1. Otwórz okno poleceń Windows PowerShell, jeśli nie jest jeszcze uruchomione.
2. Wpisz polecenie ipconfi g /all, przesyłając wynik do pliku tekstowego Tshoot.txt
przy użyciu znaku przekierowania ( ):
ipconfig /all tshoot.txt
3. W tym samym wierszu wpisz średnik i dopisz polecenie route print. Wynik tego
polecenia dodaj do pliku Tshoot.txt, używając znaku przekierowania z dołącze-
niem ( ). Wiersz polecenia będzie wyglądał następująco:
ipconfig /all tshoot.txt; route print tshoot.txt
4. Nadal w tym samym wierszu wstaw kolejny średnik i dodaj polecenie hostname,
ponownie kierując wynik do pliku Tshoot.txt:
ipconfig /all tshoot.txt; route print tshoot.txt; hostname tshoot.txt
5. Dołącz kolejne polecenie net statistics workstation, oddzielając je od poprzed-
nich znakiem średnika i dołączając wyjście polecenia do pliku Tshoot.txt.
Ostateczna postać wiersza polecenia będzie wyglądać następująco:
ipconfig /all tshoot.txt; route print tshoot.txt; hostname tshoot.txt; net
statistics workstation tshoot.txt
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
Problemy dotyczące zabezpieczeń
7
Problemy dotyczące zabezpieczeń
Biorąc pod uwagę ogromną elastyczność i wszechstronność Windows PowerShell,
powstają nieuniknione obawy dotyczące zabezpieczeń systemowych. Jednak problemy
te zostały uwzględnione już na etapie projektowania powłoki PowerShell.
Po uruchomieniu Windows PowerShell domyślnie wybierany jest folder Documents
bieżącego użytkownika. Gwarantuje to, że znajdujemy się w katalogu, w którym dys-
ponujemy uprawnieniami do wykonywania szeregu działań. Jest to znacznie bezpiecz-
niejsze, niż zaczynanie od głównego katalogu dysku lub katalogu systemowego.
Aby zmienić katalog w konsoli PowerShell, nie możemy automatycznie przejść
na wyższy poziom. Konieczne jest jawne wpisanie miejsca docelowego w operacji zmia-
ny katalogu (choć można użyć polecenia cd .., aby przejść do katalogu nadrzędnego).
Wykonywanie skryptów jest domyślnie zablokowane i można nim łatwo zarządzać
poprzez zasady grupy. Możliwe jest również włączenie tej funkcjonalności dla okre-
ślonego użytkownika lub sesji.
Kontrolowanie wykonywania poleceń cmdlet
Każdemu chyba zdarzyło się otworzyć interpreter CMD, wpisać jakieś polecenie i nacis-
nąć Enter, aby zobaczyć, co ono robi. Jednak co by było, gdyby tym poleceniem było
format C:? Czy na pewno chcielibyśmy sformatować dysk C w naszym komputerze?
W tym podrozdziale pokażę niektóre argumenty, które pozwalają sterować sposobem
wykonywania poleceń cmdlet. Choć nie wszystkie polecenia obsługują te argumenty,
robi to większość poleceń dołączonych do Windows PowerShell. Argumenty, których
można użyć do sterowania wykonywaniem, to -whatif, -confirm oraz suspend. To ostat-
nie nie jest w istocie argumentem przekazywanym do polecenia cmdlet, ale działaniem,
które można podjąć po zgłoszeniu potwierdzenia, a zatem dodatkową metodą kontro-
lowania wykonywania poleceń.
UWAGA Aby użyć argumentu -whatif, należy wpisać całe polecenie cmdlet i dopisać
po nim -whatif na końcu listy argumentów. Opcja ta jest dostępna tylko dla poleceń zmie-
niających stan systemu. Z tego względu nie można (ani nie ma potrzeby) stosowania argu-
mentu -whatif dla poleceń informacyjnych, takich jak Get-Process.
Polecenia cmdlet zmieniające stan systemu (na przykład Set-Service) wspierają tryb
prototypowy, który jest włączany poprzez użycie argumentu -whatif. To, czy dane pole-
cenie obsługuje ten argument, jest zależne od programisty tworzącego cmdlet. Zespół
projektowy Windows PowerShell zaleca implementację argumentu -whatif we wszyst-
kich poleceniach, które mogą dokonywać zmian. Poniższy przykład prezentuje wyko-
rzystanie argumentu -whatif. Polecenia użyte w tej procedurze zawarte są w pliku
UsingWhatif.txt.
##7#52#aSUZPUk1BVC1WaXJ0dWFsbw==
8
Rozdział 1: Przegląd cech Windows PowerShell 3.0
➜
Korzystanie z argumentu -whatif
1. Otwórz okno Windows PowerShell, o ile nie zostało uruchomione wcześniej.
2. Uruchom program Notatnik. W tym celu wpisz notepad i naciśnij Enter.
3. Zidentyfi kuj proces związany z uruchomioną sesją Notatnika, używając polecenia
cmdlet Get-Process. Wpisz dostateczną część nazwy procesu, aby ją zidentyfi ko-
wać, uzupełniając pozostałą część gwiazdką (*) – w ten sposób nie trzeba wpisy-
wać całej (niekiedy długiej) nazwy procesu:
Get-Process note*
4. Przejrzyj wynik polecenia, aby znaleźć identyfi kator procesu. Wynik polecenia
z mojego komputera jest przedstawiony poniżej. Trzeba pamiętać, że niemal
na pewno numer procesu na innym komputerze będzie się różnił od pokazanego:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
39 2 944 400 29 0.05 1056 notepad
5. Użyj argumentu -whatif, aby się przekonać, co by się stało po użyciu polecenia
Stop-Process wobec identyfi katora znalezionego w punkcie 4. Parametr -id pozwala
podać identyfi kator procesu w poleceniu. Polecenie to w moim przypadku wyglą-
da następująco:
Stop-Process -id 1056 -whatif
6. Przejrzyj wynik polecenia. Informuje ono, że jego „prawdziwe” wykonanie spo-
woduje zatrzymanie procesu notepad o identyfi katorze wskazanym w poleceniu:
What if: Performing operation Stop-Process on Target notepad (1056)
(What if: Wykonanie operacji Stop-Process wobec celu notepad (1056)
Potwierdzanie akcji
Jak wiemy już z poprzedniego podpunktu, możemy wykorzystać argument -whatif
do wykonania polecenia w trybie prototypowym. W ten sposób możemy dowiedzieć
się, co polecenie zrobi. Je
Pobierz darmowy fragment (pdf)