Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00257 005247 12756746 na godz. na dobę w sumie
Windows PowerShell 3.0 Krok po kroku - ebook/pdf
Windows PowerShell 3.0 Krok po kroku - ebook/pdf
Autor: Liczba stron:
Wydawca: Promise Język publikacji: polski
ISBN: 978-83-7541-298-7 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych
Porównaj ceny (książka, ebook, audiobook).

Praktyczny przewodnik po technikach automatyzowania administrowania systemami Windows® przy użyciu Windows PowerShell 3.0
Poznaj podstawy interfejsu wiersza polecenia i języka skryptowego Windows PowerShell 3.0 – krok po kroku. Idealny dla osób dysponujących podstawowymi umiejętnościami programowania, podręcznik ten przedstawia praktyczne ćwiczenia i techniki, które pozwolą zautomatyzować zadania konserwacyjne i administracyjne.
Dowiedz się jak:
• Zarządzać lokalnymi i zdalnymi systemami przy użyciu wbudowanych poleceń cmdlet
• Pisać skrypty, aby obsłużyć powtarzalne operacje
• Równocześnie realizować wiele zadań
• Łączyć się z systemami zdalnymi i wywoływać na nich polecenia
• Ponownie wykorzystywać utworzony kod i upraszczać tworzenie skryptów
• Zarządzać użytkownikami, grupami i komputerami w Active Directory®
• Śledzić i poprawiac błędy w skryptach przy użyciu debugera
• Wykorzystać skrypty w administrowaniu Microsoft Exchange Server 2010
O autorze
Ed Wilson jest starszym konsultantem w firmie Microsoft oraz dobrze znanym ekspertem skryptowania, prowadzącym popularne warsztaty i ćwiczenia. Jest autorem wielu książek o skryptowaniu Windows oraz twórcą i jednym z głównych redaktorów blogu Hey Scripting Guys.

• Pliki przykładowych skryptów dostępne do pobrania ze strony http://go.microsoft.com/FWLink/?Linkid=275531

Znajdź podobne książki Ostatnio czytane w tej kategorii

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)

Gdzie kupić całą publikację:

Windows PowerShell 3.0 Krok po kroku
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: