Przekład: Marek Włodarz
APN Promise, Warszawa 2013
Ed Wilson
Windows PowerShell® 3.0 Krok po kroku
iii
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
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
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
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
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
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
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
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