64

Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized
Page 2: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Tytuł oryginału: Windows PowerShell Best PracticesTłumaczenie: Łukasz PiwkoISBN: 978-83-283-0478-9

Authorized translation from the English language edition: WINDOWS POWERSHELL BEST PRACTICES; ISBN 0735666490; by Ed Wilson; published by Microsoft Press, a division of Microsoft Corporation, Inc.Copyright © 2013 by Ed Wilson.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc., or Microsoft Press.

Polish language edition published by HELION S.A., under license and with the permission of Pearson Education, Inc. Copyright © 2015.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/winpsp.zip

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/winpspMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Spis tre ci

Przedmowa .................................................................................. 15 Wprowadzenie ............................................................................. 17

Cz I Podstawowe wiadomo cio konsoli Windows PowerShell .........................21

Rozdzia 1. Przegl d mo liwo ci konsoli Windows PowerShell ..................... 23Czym jest konsola Windows PowerShell ..................................................................23Instalowanie konsoli Windows PowerShell ..............................................................25Wdra anie konsoli Windows PowerShell .................................................................26

Polecenia cmdlet ................................................................................................27U ywanie narz dzi wiersza polece .........................................................................28Kwestie bezpiecze stwa dotycz ce konsoli Windows PowerShell ............................29

Kontrolowanie wykonywania polece cmdlet Windows PowerShell ...................30Zatwierdzanie polece .......................................................................................30Zawieszanie potwierdzenia wykonania polece cmdlet ......................................31

Praca z konsol Windows PowerShell ......................................................................31W czanie konsoli Windows PowerShell ............................................................32Konfigurowanie konsoli Windows PowerShell ...................................................33

Przekazywanie opcji do polece cmdlet ...................................................................34Korzystanie z opcji pomocy ................................................................................35Zdobywanie informacji w pomocy .....................................................................38

Dodatkowe ród a informacji ...................................................................................43

Rozdzia 2. Polecenia CIM .............................................................................. 45Przegl danie klas us ugi WMI za pomoc polece CIM ............................................45

Sposób u ycia parametru classname ..................................................................45Znajdowanie metod klas WMI ...........................................................................47Filtrowanie klas wed ug kwalifikatora ................................................................48

Kup książkę Poleć książkę

Page 4: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

6 Windows PowerShell. Najlepsze praktyki

Wyszukiwanie egzemplarzy klas WMI .....................................................................49Zmniejszanie liczby zwróconych w asno ci i egzemplarzy ...................................50Usuwanie niepotrzebnych informacji ..................................................................51

Praca z klasami Association .....................................................................................52Dodatkowe ród a informacji ...................................................................................57

Cz II Planowanie skryptów ........................................59

Rozdzia 3. Modu Active Directory ................................................................ 61Podstawowe wiadomo ci o module Active Directory ...............................................61

Instalowanie modu u Active Directory ................................................................62Rozpoczynanie pracy z modu em Active Directory ..............................................63Zastosowanie modu u Active Directory ..............................................................63Wyszukiwanie posiadaczy roli FSMO ..................................................................65Dokumentowanie Active Directory .....................................................................70Zmienianie nazw lokalizacji us ugi Active Directory ............................................73Zarz dzanie u ytkownikami ...............................................................................74Tworzenie u ytkownika .....................................................................................77Znajdowanie kont u ytkowników i ich odblokowywanie ....................................78Znajdowanie wy czonych u ytkowników ..........................................................80Znajdowanie nieu ywanych kont u ytkowników ................................................81

Dodatkowe ród a informacji ...................................................................................85

Rozdzia 4. Znajdowanie mo liwo ci zastosowania skryptów ....................... 87Automatyzowanie rutynowych zada ......................................................................87Interfejs automatyzacji .............................................................................................88

Odczytywanie rejestru za pomoc metody RegRead ...........................................91Odczytywanie rejestru za pomoc WMI .............................................................91Odczytywanie rejestru za pomoc klas platformy .NET .......................................92Macierzyste techniki Windows PowerShell

do wykonywania niektórych zada .................................................................93Wymagania strukturalne .........................................................................................96Wymagania dotycz ce bezpiecze stwa ...................................................................96

Wykrywanie bie cego u ytkownika ..................................................................97Wykrywanie roli u ytkownika ..........................................................................107Wymagania dotycz ce wersji platformy .NET ...................................................111Wymagania dotycz ce systemu operacyjnego ..................................................113Wymagania dotycz ce aplikacji .......................................................................117Wymagania dotycz ce modu ów .....................................................................118

Dodatkowe ród a informacji .................................................................................119

Kup książkę Poleć książkę

Page 5: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

SPIS TRE CI 7

Rozdzia 5. Konfigurowanie rodowiska skryptowego ................................ 121Konfigurowanie profilu ..........................................................................................121

Tworzenie aliasów ...........................................................................................122Tworzenie funkcji .............................................................................................125Przes anianie istniej cych polece ....................................................................126Przekazywanie wielu parametrów ....................................................................129Tworzenie zmiennych ......................................................................................134Tworzenie dysków PowerShell .........................................................................141W czanie obs ugi skryptów ............................................................................146

Tworzenie profilu ..................................................................................................148Wybór odpowiedniego profilu .........................................................................148Tworzenie innych profili ...................................................................................150

U ywanie funkcji z innych skryptów .......................................................................152Tworzenie biblioteki funkcji .............................................................................153Do czanie pliku ..............................................................................................154

Dodatkowe ród a informacji .................................................................................156

Rozdzia 6. Unikanie pu apek podczas pisania skryptów ............................. 157Brak obs ugi polece .............................................................................................157Skomplikowane konstruktory .................................................................................159Kwestie dotycz ce zgodno ci wersji .......................................................................160

Sprawdzanie wersji systemu operacyjnego ......................................................165Brak obs ugi WMI ..................................................................................................167Praca z obiektami i przestrzeniami nazw ................................................................167Pobieranie listy dostawców WMI ...........................................................................172Praca z klasami WMI .............................................................................................173

Zmienianie ustawie ........................................................................................176Modyfikowanie warto ci przez rejestr ..............................................................178

Brak obs ugi platformy .NET ..................................................................................182U ywanie statycznych metod i w asno ci .........................................................182Zale no od wersji .........................................................................................185Brak obs ugi COM ............................................................................................185Brak obs ugi aplikacji zewn trznych .................................................................191

Dodatkowe ród a informacji .................................................................................195

Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów .......................... 197Ewaluacja potrzeby napisania skryptu ...................................................................197

Odczytywanie pliku tekstowego .......................................................................198Eksportowanie historii polece ........................................................................204Polecenia promieniste ......................................................................................205Wysy anie zapyta do Active Directory ............................................................208Po prostu u ywaj wiersza polece ...................................................................214

Kup książkę Poleć książkę

Page 6: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

8 Windows PowerShell. Najlepsze praktyki

Obliczanie korzy ci z u ycia skryptu .......................................................................217Powtarzalno .................................................................................................218Mo liwo opisania w dokumentacji ................................................................222Zdolno do adaptacji ......................................................................................223

Wspó praca nad skryptami ....................................................................................227Dodatkowe ród a informacji .................................................................................227

Cz III Projektowanie skryptów ..................................229

Rozdzia 8. Projektowanie skryptów ............................................................ 231Podstawowe wiadomo ci o funkcjach ...................................................................231Definiowanie funkcji w celu u atwienia wielokrotnego wykorzystania kodu ...........240

Definiowanie funkcji z dwoma parametrami ....................................................244Ograniczenia typu ............................................................................................249

Funkcje przyjmuj ce wi cej ni dwa parametry ......................................................252Definiowanie logiki biznesowej w funkcjach ..........................................................254Definiowanie funkcji w celu u atwienia modyfikacji skryptów ................................256Podstawowe wiadomo ci o filtrach .......................................................................263Dodatkowe ród a informacji .................................................................................268

Rozdzia 9. Projektowanie pomocy do skryptów ......................................... 271Dodawanie dokumentacji w komentarzach jednowierszowych ..............................271

Praca z folderami tymczasowymi .....................................................................277U ywanie wielowierszowych znaczników komentarzowychw Windows PowerShell 4.0 ...................................................................................279

Tworzenie komentarzy wielowierszowychza pomoc znaczników komentarzowych ......................................................279

Tworzenie jednowierszowych komentarzyprzy u yciu znaczników komentarzowych ......................................................280

U ywanie pomocy komentarzowej ........................................................................28113 zasad pisania efektywnych komentarzy ............................................................286

Aktualizuj dokumentacj razem ze skryptem ....................................................287Dodawaj komentarze podczas pisania kodu .....................................................288Pisz z my l o u ytkownikach z ró nych krajów ...............................................288Zamieszczaj informacje w nag ówku ................................................................290Podaj list warunków u ywania .......................................................................291Opisuj niedoskona o ci ....................................................................................292Nie dodawaj zb dnych informacji ....................................................................293Uzasadniaj powody napisania kodu .................................................................293Zastosowanie komentarzy jednowierszowych ..................................................294Unikaj komentarzy na ko cu wiersza ...............................................................295Opisuj struktury zagnie d one .........................................................................295

Kup książkę Poleć książkę

Page 7: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

SPIS TRE CI 9

U ywaj standardowego zestawu s ów kluczowych ..........................................296Opisuj wszelkie dziwne fragmenty kodu ..........................................................297

Dodatkowe ród a informacji .................................................................................300

Rozdzia 10. Projektowanie modu ów ........................................................... 301Podstawowe wiadomo ci o modu ach ...................................................................301Znajdowanie i adowanie modu ów .......................................................................302

Wy wietlanie listy dost pnych modu ów .........................................................302adowanie modu ów .......................................................................................305

Instalowanie modu ów ..........................................................................................308Tworzenie folderu na modu y ..........................................................................309Sposób u ycia zmiennej $modulePath .............................................................311Tworzenie dysku modu u .................................................................................313Sprawdzanie zale no ci modu ów ....................................................................314U ywanie modu ów pochodz cych z udzia ów .................................................318

Tworzenie modu u .................................................................................................319Dodatkowe ród a informacji .................................................................................325

Rozdzia 11. Obs uga wej cia i wyj cia .......................................................... 327Wybór najlepszej metody pobierania danych .........................................................328

Wczytywanie danych z wiersza polece ...........................................................328Sposób u ycia instrukcji Param ........................................................................335Pobieranie hase na wej ciu .............................................................................348Pobieranie a cuchów po czenia ....................................................................356

Monitowanie o informacje .....................................................................................357Wybór najlepszej metody zwracania danych ..........................................................358

Wysy anie informacji na ekran .........................................................................360Wysy anie wyników do pliku ...........................................................................366Wysy anie danych równocze nie na ekran i do pliku ........................................367Wysy anie wyników na adres e-mail ................................................................371Wysy anie wyników z funkcji ...........................................................................371

Dodatkowe ród a informacji .................................................................................377

Rozdzia 12. Obs uga b dów ......................................................................... 379Obs uga brakuj cych parametrów .........................................................................380

Przypisywanie parametrowi warto ci domy lnej ..............................................380Tworzenie parametrów obowi zkowych ..........................................................381

Ograniczanie mo liwo ci wyboru ...........................................................................382Ograniczanie liczby opcji za pomoc metody PromptForChoice ........................382Znajdowanie dost pnych komputerów za pomoc polecenia ping ...................384Sprawdzanie zawarto ci tablicy za pomoc operatora -contains .......................385Testowanie w asno ci za pomoc operatora -contains .....................................387

Kup książkę Poleć książkę

Page 8: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

10 Windows PowerShell. Najlepsze praktyki

Post powanie w przypadku braku uprawnie .......................................................389Podejmowanie nieudanych prób ......................................................................391Sprawdzanie, czy skrypt posiada potrzebne uprawnienia,

i eleganckie ko czenie pracy .........................................................................393Sposób u ycia instrukcji #Requires ..................................................................393

Post powanie w przypadku braku dostawców WMI ..............................................396Niepoprawne typy danych .....................................................................................403B dy zakresu ........................................................................................................408

Sposób u ycia funkcji sprawdzaj cej warto ci graniczne ..................................408Ograniczanie dopuszczalnych warto ci parametru ............................................409

Dodatkowe ród a informacji .................................................................................410

Rozdzia 13. Testowanie skryptów ................................................................. 411Techniki testowania podstawowej sk adni .............................................................411

Szukanie b dów .............................................................................................415Uruchamianie skryptu ......................................................................................417Dokumentowanie pracy ...................................................................................419

Testowanie wydajno ci skryptów ..........................................................................421Zapisywanie i przegl danie danych ..................................................................421U ycie potoku Windows PowerShell ................................................................423Szacowanie wydajno ci ró nych wersji skryptu ................................................426

Sposób u ycia parametrów standardowych ...........................................................434Sposób u ycia parametru debug ......................................................................434Sposób u ycia parametru Verbose ...................................................................436Sposób u ycia parametru whatif ......................................................................437

Tworzenie dzienników za pomoc funkcji Start-Transcript ......................................441Zaawansowane techniki testowania skryptów .......................................................443Dodatkowe ród a informacji .................................................................................445

Rozdzia 14. Dokumentowanie skryptów ....................................................... 447Pobieranie dokumentacji z pomocy ........................................................................447Pobieranie dokumentacji z komentarzy ..................................................................452Sposób u ycia parsera AST ....................................................................................455Dodatkowe ród a informacji .................................................................................457

Cz IV Wdra anie skryptu ...........................................459

Rozdzia 15. Ustawianie zasad wykonywania skryptów ................................ 461Wybór zasady wykonywania dla skryptu ...............................................................461

Przeznaczenie zasad wykonywania skryptów ...................................................462Ró ne zasady wykonywania skryptów .............................................................462Co to jest strefa internetowa ............................................................................463

Kup książkę Poleć książkę

Page 9: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

SPIS TRE CI 11

Wdra anie zasady wykonywania skryptu ...............................................................465Modyfikowanie rejestru ...................................................................................465U ycie polecenia Set-ExecutionPolicy ...............................................................466Wdra anie zasady wykonywania skryptów za pomoc zasady grupowej .........469

Podpisywanie kodu ...............................................................................................472Dodatkowe ród a informacji .................................................................................474

Rozdzia 16. Uruchamianie skryptów ............................................................. 475Skrypty logowania .................................................................................................475

Co uwzgl dni w skryptach logowania ............................................................476Metody wywo ywania skryptów logowania .....................................................480

Folder skryptów .....................................................................................................482Wdra anie lokalne ...........................................................................................482Lokalne wdra anie pakietu MSI .......................................................................482

Samodzielne skrypty ..............................................................................................483Diagnostyka .....................................................................................................483Raportowanie i kontrolowanie .........................................................................483

Skrypty pomocy technicznej ...................................................................................484Unikaj edytowania ...........................................................................................484Dostarcz dobrej jako ci pomoc .........................................................................484

Dodatkowe ród a informacji .................................................................................487

Rozdzia 17. Kontrola wersji skryptów ........................................................... 489Dlaczego warto stosowa kontrol wersji ..............................................................489

Unikanie wprowadzania b dów ......................................................................490Precyzyjne usuwanie usterek ...........................................................................491ledzenie zmian ...............................................................................................491

Lista skryptów .................................................................................................491Zachowanie zgodno ci z innymi skryptami .......................................................491Wewn trzny numer wersji w komentarzach .....................................................493

Programy do kontroli wersji ...................................................................................496Dodatkowe ród a informacji .................................................................................497

Rozdzia 18. Rejestrowanie wyników ............................................................ 499Zapisywanie danych w pliku tekstowym ................................................................499

Projektowanie metody rejestrowania wyników skryptu ....................................500Miejsce przechowywania tekstu .......................................................................509Przechowywanie dzienników w lokalizacjach sieciowych .................................513

Zapisywanie danych w dzienniku zdarze .............................................................517Sposób u ycia dziennika aplikacji .....................................................................519Tworzenie w asnego dziennika zdarze ...........................................................519

Zapisywanie danych w rejestrze ............................................................................520Dodatkowe ród a informacji .................................................................................522

Kup książkę Poleć książkę

Page 10: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

12 Windows PowerShell. Najlepsze praktyki

Rozdzia 19. Rozwi zywanie problemów ze skryptami ................................. 523Podstawy debugowania w Windows PowerShell ...................................................523

B dy sk adniowe .............................................................................................524B dy wykonawcze ..........................................................................................524B dy logiczne .................................................................................................527

Sposób u ycia polecenia Set-PSDebug ...................................................................530ledzenie wykonywania skryptu ......................................................................531

Wykonywanie skryptu krok po kroku ...............................................................535W czanie trybu cis ego ..................................................................................542

Debugowanie skryptów .........................................................................................545Ustawianie punktów wstrzymania ...................................................................547Reagowanie na punkty wstrzymania ................................................................555Wy wietlanie listy punktów wstrzymania ........................................................556W czanie i wy czanie punktów wstrzymania .................................................558Usuwanie punktów wstrzymania .....................................................................559

Dodatkowe ród a informacji .................................................................................561

Rozdzia 20. Praca w rodowisku Windows PowerShell ISE .......................... 563Uruchamianie rodowiska Windows PowerShell ISE ..............................................563

Zawarto okna Windows PowerShell ISE ........................................................563Praca w okienku skryptu ..................................................................................565Rozwijanie nazw za pomoc klawisza Tab i funkcja IntelliSense .......................567

Sposób u ycia fragmentów kodu w rodowisku Windows PowerShell ISE .............569Tworzenie skryptów przy u yciu gotowych fragmentów kodu ..........................569Tworzenie nowych gotowych fragmentów kodu w Windows PowerShell ISE .....569Usuwanie fragmentów kodu zdefiniowanych przez u ytkownika .....................570

Dodatkowe ród a informacji .................................................................................571

Rozdzia 21. Narz dzia do pracy zdalnej i zadania Windows PowerShell ..... 573Narz dzia do pracy zdalnej Windows PowerShell ..................................................573

Klasyczne sposoby pracy zdalnej ......................................................................573Zdalne zarz dzanie systemem Windows ..........................................................583

Zadania Windows PowerShell ...............................................................................590Dodatkowe ród a informacji .................................................................................596

Rozdzia 22. Przep ywy pracy w Windows PowerShell .................................. 597Do czego s u przep ywy pracy w Windows PowerShell .......................................597

Wymagania przep ywów pracy ........................................................................598Prosty przep yw pracy ......................................................................................598

Równoleg e wykonywanie polece ........................................................................599Aktywno ci przep ywów pracy ...............................................................................602

Polecenia Windows PowerShell jako aktywno ci ..............................................602Niedozwolone polecenia rdzenne ....................................................................604

Kup książkę Poleć książkę

Page 11: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

SPIS TRE CI 13

Nieautomatyczne aktywno ci z polece ...........................................................604Aktywno ci równoleg e ....................................................................................605

Ustalanie punktów kontrolnych dla przep ywów pracy w Windows PowerShell .....606Czym s punkty kontrolne ................................................................................606Tworzenie punktów kontrolnych ......................................................................606Dodawanie punktów kontrolnych ....................................................................607

Dodawanie aktywno ci sekwencyjnej do przep ywu pracy .....................................609Dodatkowe ród a informacji .................................................................................611

Rozdzia 23. Us uga konfiguracji danego stanu programu PowerShell ...... 613Podstawowe informacje o Us udze konfiguracji

danego stanu programu PowerShell ...................................................................613Proces DSC ......................................................................................................614Parametry konfiguracji .....................................................................................617Ustawianie zale no ci ......................................................................................618Dane konfiguracji .............................................................................................619

Kontrolowanie dryfu konfiguracji ...........................................................................623Dodatkowe ród a informacji .................................................................................625

O autorze ................................................................................... 627

Skorowidz .................................................................................. 629

Kup książkę Poleć książkę

Page 12: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

14 Windows PowerShell. Najlepsze praktyki

Kup książkę Poleć książkę

Page 13: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Rozdzia 7

ledzenie mo liwo cizastosowania skryptów

Ocenianie, czy skrypt jest potrzebny

Obliczanie korzy ci z zastosowania skryptu

Wspó praca nad skryptami

Dodatkowe ród a informacji

Nale y ledzi mo liwo ci zastosowania skryptów, aby mie pewno , e najbardziej korzystneskrypty zostan napisane najszybciej. Taki spis mo liwych do oskryptowania przypadków mo eefektywnie s u y do zarz dzania skryptami w przedsi biorstwie. Kluczem jest w a ciwepos ugiwanie si tym zbiorem informacji.

Ewaluacja potrzeby napisania skryptuNie wszystko w konsoli Windows PowerShell 4.0, podobnie jak w Windows PowerShell 3.0, musiby oskryptowane. Programi ci j zyków Microsoft VBScrip i Perl cz sto maj odczucie, e w danejsytuacji powinni napisa skrypt. Ale wiele czynno ci mo na wykona w wierszu polece bezu ywania jakiegokolwiek skryptu.

Jedn z wielkich zalet konsoli Windows PowerShell jest mo liwo u ywania instrukcjij zykowych bezpo rednio w wierszu polece . Instrukcja for umo liwia tworzenie p tli, do obs ugiktórych w innych j zykach konieczne by oby napisanie skryptu. Aby u atwi prac w wierszupolece , twórcy konsoli Windows PowerShell umo liwili dzielenie polece na kilka wierszy.Po zako czeniu wpisywania mo na po raz drugi nacisn klawisz Enter, aby je wykona .Poni ej znajduje si polecenie wysy aj ce polecenie ping do wszystkich adresów IP z przedzia uod 192.168.2.1 do 192.168.2.10:

PS C:\> for($i = 1 ; $i -le 10 ; $i++)>> { Test-Connection -Destination 192.168.2.$i -Count 1 -ErrorAction Silentlycontinue|>> Format-Table –property Address, statusCode, ResponseTime -AutoSize }>>

Kup książkę Poleć książkę

Page 14: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

198 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

Address statusCode ResponseTime------- ---------- ------------192.168.2.1 0 1Address statusCode ResponseTime------- ---------- ------------192.168.2.3 0 2Address statusCode ResponseTime------- ---------- ------------192.168.2.5 0 0Address statusCode ResponseTime------- ---------- ------------192.168.2.10 0 10

Je li zastosuje si par sztuczek sk adni Windows PowerShell, np. aliasy, cz ciowe parametryi argumenty pozycyjne, powy sze polecenie mo na znacznie skróci . Poni ej znajduje si w a nietaka skrócona wersja:

1..10 | % {Test-Connection 10.1.1.$_ -cou 1 -ea 0 | ft Address, StatusCode, ResponseTime -au}

Odczytywanie pliku tekstowegoNajprostszy skrypt Windows PowerShell jest zbiorem polece PowerShell zapisanych w plikuo okre lonym rozszerzeniu. Je li kto nie chce pisa skryptu, mo e zapisa zbiór polece w plikutekstowym, jak pokazano na rysunku 7.1.

RYSUNEK 7.1. Plik zawieraj cy zbiór polece Windows PowerShell

Przy u yciu konsoli Windows PowerShell mo na odczyta plik commands.txt i wykonaznajduj ce si w nim polecenia za pomoc polecenia Get-Content, które s u y w a nie do pobieraniapolece z plików tekstowych. Domy lnym parametrem polecenia Get-Content jest path. Podczaspracy w wierszu polece nie trzeba go podawa . cie ka mo e by lokalna lub nawet UNC (ang.Universal Naming Convention), pod warunkiem e ma si odpowiednie uprawnienia do odczytupliku tekstowego. Najlepszym sposobem u ycia tej techniki jest przekazanie wyników do poleceniaInvoke-Expression. Ka de polecenie przekazywane przez potok do tego polecenia zostaje przeznie wykonane, jak pokazano poni ej:

Get-Content -Path C:\fso\Commands.txt | Invoke-Expression

Wynik tego polecenia pokazano na rysunku 7.2.

Kup książkę Poleć książkę

Page 15: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Ewaluacja potrzeby napisania skryptu 199

RYSUNEK 7.2. Polecenia Windows PowerShell bez problemu przetwarzaj zawarto plików tekstowychi wykonuj znajduj ce si w nich polecenia

Podczas korzystania z funkcji pracy zdalnej konsoli Windows PowerShell do pracy z niezaufandomen atwo si pomyli przy u ywaniu takich polece jak Get-Content. Parametr -path odnosisi do cie ki lokalnej dla komputera docelowego, a nie tego, z którego wykonuje si polecenie.W poni szym przyk adzie cie ka c:\fso\commands.txt wskazuje plik tekstowy o nazwie commands.txtznajduj cy si w folderze fso na dysku C komputera o nazwie Sydney w domenieWoodbridgebank.com. Je li plik ten nie zostanie tam znaleziony, wyst pi b d.

PS C:\> invoke-command -ComputerName sydney.woodbridgebank.com [email protected] -ScriptBlock {get-content -Path C:\fso\Commands.txt| Invoke-Expression}Invoke-Command : Cannot find path 'C:\fso\Commands.txt' because it does not exist.Atline:1 char:15+ invoke-command <<<< -ComputerName sydney.woodbridgebank.com [email protected] -ScriptBlock {get-content -PathC:\fso\Commands.txt | Invoke-Expression} + CategoryInfo : ObjectNotFound: (C:\fso\Commands.txt:String) [Get-Content], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

Pewnie zastanawiasz si , czy mo esz wskaza plik commands.txt na komputerze, z któregowykonywane jest polecenie, za pomoc cie ki UNC. Jako e zdalna domena jest niezaufana,nie ma adnego kontekstu zabezpiecze , który pozwoli by zdalnemu poleceniu uzyska dost pdo systemu plików komputera lokalnego. Polecenie znajduj ce si w parametrze ScriptBlockzostanie wykonane w kontek cie komputera docelowego, którym w tym przypadku jestSydney.Woodbridgebank.com.

Komputer lokalny, z którego wykonywane jest polecenie, nazywa si Windows8.NWTraders.com. Jako e te dwie domeny nie maj zaufanych relacji, nie mo na poda danychpo wiadczaj cych, które umo liwi yby wykonanie polecenia. Wynik próby wykonania poleceniaprzedstawiono poni ej:

Kup książkę Poleć książkę

Page 16: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

200 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

PS C:\> invoke-command -ComputerName sydney.woodbridgebank.com [email protected] -ScriptBlock {get-content -Path '\\Windows 8\fso\Commands.txt'| Invoke-Expression}Invoke-Command : Cannot find path '\\Windows 8\fso\Commands.txt' because it does not exist.At line:1 char:15+ invoke-command <<<< -ComputerName sydney.woodbridgebank.com [email protected] -ScriptBlock {get-content -Path '\\Windows 8\fso\Commands.txt'| Invoke-Expression} + CategoryInfo : ObjectNotFound: (\\Windows 8\fso\Commands.txt:String) [Get-Content],ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

Myl ce mo e by to, e polecenie Get-Content w pojedynk dzia a bardzo dobrze. Na komputerzeo nazwie client1 zawieraj cym folder o nazwie bin, w którym znajduje si plik tekstowy o nazwiecommands.txt, polecenie to zostanie wykonane, pod warunkiem e umie cimy je w pojedynczymcudzys owie, jak pokazano poni ej:

PS C:\> Get-Content -Path '\\client1\bin\Commands.txt'Get-Service -Name bits -ComputerName Windows 8Get-Process -Name explorer -ComputerName berlinGet-EventLog -LogName application -Newest 1 -ComputerName berlin,Windows 8Invoke-Command -ComputerName Berlin { Get-Date }Get-Date

Ale tego nale a o si spodziewa , poniewa zalogowany u ytkownik ma uprawnienia dost pudo u ytego folderu, wi c mo e te wczyta za pomoc polecenia Get-Content cie k UNC do plikucommands.txt.

Mo na zmapowa dysk na zdalnej domenie i skopiowa plik z lokalnego komputera doodpowiedniego folderu na serwerze zdalnym. Oczywi cie konieczne b dzie otwarcie dodatkowychportów w zaporze systemu Windows, co mo e, ale nie musi by wykonalne, w zale no ciod konfiguracji sieci. Je li zdecydujesz si na takie rozwi zanie, mo esz dokona zmiankonfiguracyjnych za pomoc konsoli Windows PowerShell, jak pokazano poni ej:

PS C:\> Invoke-Command -ComputerName Sydney.WoodBridgeBank.Com [email protected] -ScriptBlock { netsh advfirewall firewall set rule group="Fileand Printer Sharing" new enable=Yes }

Updated 28 rule(s).Ok.

Po wprowadzeniu wyj tku do zapory mo na zmapowa dysk przy u yciu graficznegointerfejsu u ytkownika, polecenia Net Use z poziomu konsoli Windows PowerShell lub dowolninn metod . Po zmapowaniu dysku mo na skopiowa plik commands.txt na serwer za pomocpolecenia Copy-Item, jak pokazano poni ej:

Copy-Item -Path C:\fso\Commands.txt -Destination z:

UWAGAPodczas kopiowania obiektów na zmapowany dysk za pomoc polecenia Copy-Item nale ymie na uwadze struktur tego zmapowanego dysku. Cz sto mapuje si dyski w celu umo li-wienia u ywania ich na zdalnym komputerze. Zdalny udzia prawie zawsze jest udzia em folderu,a nie ca ego dysku. Jako e nasz dysk zdalny jest punktem mapowania jednego folderu, miejscedocelowe ulega zmianie. W poni szym poleceniu dysk Z jest udzia em folderu Fso na serwerzezdalnym. Parametr -destination kieruje do korzenia zmapowanego dysku, a nie do folderuZ:\fso.

Kup książkę Poleć książkę

Page 17: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Ewaluacja potrzeby napisania skryptu 201

Teraz mo na u y pliku commands.txt bezpo rednio w poleceniu Windows PowerShell,jak pokazano poni ej:

PS C:\> invoke-command -ComputerName Sydney.WoodbridgeBank.com [email protected] -ScriptBlock { Get-Content -Path C:\fso\Commands.txt |Invoke-Expression }

Jednym z rozwi za dylematu mapowania dysków jest u ycie pulpitu zdalnego, któryumo liwia dost p do zasobów lokalnych, je li chcemy mie je dost pne w swojej sesji. Wybieraj cpulpit zdalny, klikaj c przycisk Options i wybieraj c kart Local resources, mo emy wybra po czeniadrukarki, dost p do schowka oraz udost pni lokalne dyski w sesji RDP (ang. Remote Desktop Protocol).Ustawienia pulpitu zdalnego mo na otworzy , klikaj c kolejno Start/Wszystkie programy/Akcesoria/Pod czanie pulpitu zdalnego. Je li pulpit zdalny nie zosta jeszcze skonfigurowany, system wy wietliinformacj o braku dost pu widoczn na rysunku 7.3.

RYSUNEK 7.3. Odmowa dost pu podczas próby po czenia si z pulpitem zdalnym

Aby w czy zdalny pulpit w systemach Microsoft Windows 2012 i Windows 2012 R2, nale yw mened erze serwera w w le Serwer lokalny wybra opcj Pulpit zdalny. W systemach Windows 8i Windows 8.1 nale y w Panelu sterowania otworzy aplet System, klikn odno nik Ustawienia zdalne.Pojawi si okno dialogowe W a ciwo ci systemu z otwart kart Zdalny, jak wida na rysunku 7.4.

RYSUNEK 7.4. Pulpit zdalny musi by w czony

Kup książkę Poleć książkę

Page 18: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

202 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

W dolnej cz ci okna znajduj si trzy opcje dotycz ce pulpitu zdalnego. Domy lnie po czeniez pulpitem zdalnym jest zabronione. Najbezpieczniejszym rozwi zaniem jest zaznaczenie opcjiZezwalaj na po czenia tylko z komputerów, na których Pulpit zdalny jest uruchomiony z uwierzytelnianiemna poziomie sieci (zalecane). Dodatkowo mo na okre li , którzy u ytkownicy mog nawi zywapo czenie. Domy lnie uprawnienia takie maj wszyscy cz onkowie grupy administratorów domeny.

Po w czeniu pulpitu zdalnego automatycznie zostanie utworzony wyj tek umo liwiaj cyprzep yw ruchu RDP przez zapor systemu Windows. Warto dok adnie sprawdzi , czy na pewnowyj tek zosta utworzony. Na rysunku 7.5 wida wyj tek zapory w systemie Windows 8.1.

RYSUNEK 7.5. Pulpit zdalny musi mie wyj tek w zaporze systemu Windows

Zapiski praktykaBrian WilhitePremier Field Engineer (PFE), Microsoft Corporation

W ramach swoich codziennych obowi zków administratora systemów pracuj cego w dodu ej firmie cz sto musz rozwi zywa problemy wymagaj ce u ycia konsoli WindowsPowerShell. Najcz ciej korzystam z Instrumentacji zarz dzania Windows (WMI), która jestmoj ulubion technologi w systemach Windows. Konsola PowerShell u atwia prac z WMIna niespotykan wcze niej skal . Jedn z najlepszych rzeczy, jakie mo na robi za pomocnarz dzi WMI i Windows PowerShell, jest tworzenie procesów na zdalnych komputerach.To bardzo przydatna mo liwo dla ka dego, kto musi instalowa , aktualizowa lubodinstalowywa programy na komputerach z systemem Windows w swoim rodowisku,w którym nie ma programów do zarz dzania typu System Center Configuration Manager.

Kup książkę Poleć książkę

Page 19: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Ewaluacja potrzeby napisania skryptu 203

Ostatnio na naszych serwerach kto przez pomy k zainstalowa pewien program. Aby go szybkousun , postanowi em za pomoc WMI zdalnie utworzy proces MSIExec.exe z ci giemdezinstalacji dla MSI. Ci g dezinstalacji (UninstallString) dla ka dego programu mo na znalew rejestrze, typowo w nast puj cej lokalizacji (<SID> to identyfikator SID u ytkownika,z którym zosta zainstalowany dany program, a <GUID produktu> to niepowtarzalnyidentyfikator interesuj cego nas produktu): HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Products\<GUID produktu>\InstallProperties.

W ten sposób mo na znale ci g dezinstalacji (UninstallString) wybranego programu, którychcemy usun z systemu. Usun em prawdziwy identyfikator GUID produktu, aby nieoczernia niewinnej firmy:MsiExec.exe /X{<GUID produktu>} /quiet

W tym przypadku wiem, bo to sprawdzi em, e prze cznik /quiet zadzia a dla produktu,który chc usun . Ale Ty mo esz mie inne do wiadczenia.

Do wykonania tego zadania u yjemy polecenia Invoke-WmiMethod. Ponadto u yjemy metodyCreate klasy Win32_Process w celu utworzenia procesu na zdalnym komputerze. Najlepiejmie w czone narz dzia do pracy zdalnej Windows PowerShell w swoim komputerze,ale je li nie s w czone, nie panikuj. Opisuj kilka technik realizacji tego zadania.

W pierwszej technice przyj em za o enie, e na docelowych komputerach zdalnych w czones narz dzia do pracy zdalnej Windows PowerShell. Zmienna $Computers zawiera zbiór nazwkomputerów, których u yjemy jako urz dze docelowych:Invoke-Command -ScriptBlock { Invoke-WmiMethod -Class Win32_Process ' -Name Create ' -ArgumentList 'MsiExec.exe /X{<Product GUID>} /quiet'} ' -ComputerName $Computers

Drug technik mo na zastosowa , gdy narz dzia do pracy zdalnej Windows PowerShell nakomputerach zdalnych nie s w czone:$Computers | ForEach-Object { Invoke-WmiMethod -Class Win32_Process ' -Name Create ' -ArgumentList 'MsiExec.exe /X{<Product GUID>} /quiet' ' -ComputerName $_}

Z w asnego do wiadczenia wiem, e w takich sytuacjach jak ta, gdy komputerów s setki lubnawet tysi ce, bardziej niezawodnym rozwi zaniem jest przekazanie nazw komputerówdo polecenia ForEach-Object zamiast przekazywania ca ej listy do parametru ComputerName.Oba przedstawione rozwi zania powinny zwróci obiekt zawieraj cy ReturnValue i ProcessId.Je li tworzenie procesu powiedzie si , ReturnValue b dzie mie warto 0. Zero wskazuje,

e proces zosta utworzony, ale nie mówi nic o tym, czy dezinstalacja si powiod a. Dlategonale y to jeszcze sprawdzi w dziennikach zdarze wszystkich systemów.

Kup książkę Poleć książkę

Page 20: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

204 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

Eksportowanie historii poleceWiele prac administracyjnych wykonywanych przy u yciu konsoli Windows PowerShell polegana wpisywaniu serii polece w konsoli. Niezale nie od tego, czy edytujemy rejestr, czy zatrzymujemyró ne procesy i us ugi, aby zapewni spójne rodowisko operacyjne, nale y skopiowa pracekonfiguracyjne na kilka ró nych serwerów. W przesz o ci trzeba by o do tego tworzy skrypty.Je li polecenia do zduplikowania s seri polece wpisywanych w konsoli, mo na obej si bezskryptu, eksportuj c histori polece do pliku .xml za pomoc polecenia Get-History, jak pokazanoponi ej:

Get-History | Export-Clixml -Path C:\fso\history.xml

Wynikiem tego polecenia jest plik .xml zawieraj cy wszystkie polecenia, jakie wpisano w konsoli.Na rysunku 7.6 wida zawarto takiego przyk adowego pliku:

RYSUNEK 7.6. Plik .xml z histori polece

Polecenia z tego pliku mo na importowa za pomoc polecenia Import-Clixml. Jego wynikprzekazuje si do polecenia Add-History, aby polecenia zawarte w zaimportowanym pliku doda dohistorii konsoli. Nale y u y prze cznika -passthru, aby polecenia przekaza zarówno do poleceniaAdd-History, jak i ForEach-Object. W poleceniu ForEach-Object mo na wykona ka de poleceniez historii za pomoc polecenia Invoke-History. Poni ej przedstawiono opisywany zestaw polecewraz z wynikiem jego wykonania:

PS C:\> Import-Clixml -Path C:\fso\history.xml | Add-History -Passthru |>> ForEach-Object { Invoke-History }>> if(!(test-path -path c:\fso4)) { new-item c:\fso4 -ItemType directory }

Directory: C:\

Kup książkę Poleć książkę

Page 21: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Ewaluacja potrzeby napisania skryptu 205

Mode LastWriteTime Length Name---- ------------- ------ ----d---- 1/9/2009 12:33 AM fso4Get-Command >> C:\fso4\commands.txtnotepad C:\fso4\commands.txt

Technik t mo na te zastosowa zdalnie, pos uguj c si poleceniem Invoke-Command.Pami taj, e cie ka path jest wzgl dna w odniesieniu do komputera b d cego celem, a niekomputera wykonuj cego polecenie. Je li o tym zapomnisz, wyst pi b d, jak wida na rysunku 7.7.

RYSUNEK 7.7. B d spowodowany u yciem lokalnych cie ek do plików

Je li najpierw skopiujesz plik na komputer docelowy i dostosujesz swój wiersz polece , totechnika polegaj ca na zaimportowaniu i wykonaniu historii sprawdzi si wy mienicie. Zaletkonsoli Windows PowerShell jest to, e z poleceniem Copy-Item mo na u ywa cie ek UNC.W a nie to sprawia, e technika ta jest godna uwagi, poniewa umo liwia atwe przenoszenieplików na zdalny komputer, jak wida poni ej:

PS C:\> Copy-Item C:\fso\history.xml \\berlin\c$\fsoPS C:\> Import-Clixml -Path C:\fso\history.xml | Add-History -Passthru | ForEach -Object {Invoke-History } if(!(test-path -path c:\fso4)) { new-item c:\fso4 -ItemType directory }

Directory: C:\

Mode LastWriteTime Length Name---- ------------- ------ ----d---- 1/9/2009 12:40 AM fso4Get-Command >> C:\fso4\commands.txtnotepad C:\fso4\commands.txt

Polecenia promienistePolecenia promieniste (ang. fan-out command) to takie, które uruchamia si z centralnego komputerana pewnej liczbie zdalnych komputerów. Jednym ze sposobów ich wykonywania jest u yciepolecenia Invoke-Command, jak pokazano poni ej:

PS C:\> Invoke-Command -Computer berlin,Windows 8 -Script '>> {"$env:computername $(get-date)" }>>WINDOWS 8 01/09/2009 08:31:42BERLIN 01/09/2009 08:31:47

Kup książkę Poleć książkę

Page 22: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

206 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

W sposób promienisty mo na wykona wiele polece , przekazuj c im tablic nazwkomputerów jako parametr -computername. Wad tej metody jest to, e zwrócone wyniki sprawie bezu yteczne. Najlepiej wyt umaczy to na konkretnym przyk adzie. Poni ej u yto poleceniaGet-Service do pobrania informacji o konfiguracji us ug z dwóch komputerów. Pierwszy z nichnazywa si Windows 8, a drugi Berlin. Jak wida , wyniki polecenia dla tych dwóch komputeróws pomieszane i nie ma kolumny informuj cej, do którego komputera odnosi si dana informacja.W zwi zku z tym wynik ten jest przydatny tylko w tym wzgl dzie, e pozwala szybko przejrzeus ugi na dwóch komputerach i znale ró nice w ich konfiguracji. Poni ej znajduje si omawianepolecenie i cz zwróconego przez nie wyniku:

PS C:\> Get-Service -ComputerName Windows 8, BerlinStatus Name DisplayName------ ---- -----------Running 1-vmsrvc Virtual Machine Additions Services ...Running 1-vmsrvc Virtual Machine Additions Services ...Running AeLookupSvc Application ExperienceStopped AeLookupSvc Application ExperienceStopped ALG Application Layer Gateway ServiceStopped ALG Application Layer Gateway ServiceStopped Appinfo Application InformationStopped Appinfo Application InformationStopped AppMgmt Application ManagementStopped AppMgmt Application ManagementStopped AudioEndpointBu... Windows Audio Endpoint BuilderStopped AudioEndpointBu... Windows Audio Endpoint BuilderStopped Audiosrv Windows AudioStopped Audiosrv Windows AudioRunning BFE Base Filtering EngineRunning BFE Base Filtering EngineRunning BITS Background Intelligent Transfer Ser...Stopped BITS Background Intelligent Transfer Ser...Stopped Browser Computer BrowserRunning Browser Computer Browser>>> reszta wyników opuszczona >>>

Jak wida w powy szych danych, na jednym komputerze us uga AeLookupSvc jest uruchomiona,a na drugim zatrzymana. Aby dowiedzie si , na którym dzia a, a na którym nie, wystarczy u ypolecenia Get-Service.

PS C:\> Get-Service -Name AeLookupSvc -computer Windows 8Status Name DisplayName------ ---- -----------Stopped AeLookupSvc Application Experience

PS C:\> Get-Service -Name AeLookupSvc -computer BerlinStatus Name DisplayName------ ---- -----------Running AeLookupSvc Application Experience

Mo esz pomy le , e pierwsze wyst pienie nazwy us ugi nale y do komputera, który jestpierwszy na li cie. Ale jak wida , us uga AeLookupSvc jest uruchomiona na komputerze Berlin,a zatrzymana na komputerze Windows 8. W wyniku jest w a nie taka kolejno , ale w poleceniupromienistym najpierw wymieniony jest komputer Windows 8. Teraz pewnie pomy lisz, enajpierw wy wietlane s wyniki dla pierwszego komputera, a potem dla drugiego. Ale zanim

Kup książkę Poleć książkę

Page 23: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Ewaluacja potrzeby napisania skryptu 207

dojdziesz do wniosku, e tak musi by , sprawd jeszcze jak inn us ug . W wyniku poleceniaus uga BITS najpierw jest oznaczona jako uruchomiona, a potem jako zatrzymana. Sprawd my,jaki jest jej stan na poszczególnych komputerach:

PS C:\> Get-Service -Name Bits -computer berlinStatus Name DisplayName------ ---- -----------Stopped BITS Background Intelligent Transfer Ser...

PS C:\> Get-Service -Name Bits -computer Windows 8Status Name DisplayName------ ---- -----------Running BITS Background Intelligent Transfer Ser...

Jak wida , us uga BITS jest zatrzymana na komputerze Berlin i uruchomiona na komputerzeWindows 8. Wniosek z tego taki, e u ywaj c polecenia Get-Service w sposób promienisty przezdostarczenie mu tablicy nazw komputerów za pomoc parametru -computername, mo na uzyskaprzydatne informacje. Chocia je li chcemy dowiedzie si , jaki jest status konkretnych us ug nakonkretnym komputerze, to dane te nie b d ju tak pomocne. Najlepiej wynik tego poleceniaprzekaza do polecenia Format-Table i wybra w asno machineName. Warto w asno cidisplayName jest taka sama jak w kolumnie Nazwa w konsoli MMC. Omawiane polecenie i czjego wyniku pokazano poni ej:

PS C:\> Get-Service -ComputerName berlin,Windows 8 |format-table name, status, machinename, displayName -AutoSize

Name Status MachineName DisplayName---- ------ ----------- -----------1-vmsrvc Running Windows 8 Virtual Machine Additions...1-vmsrvc Running berlin Virtual Machine Additions...AeLookupSvc Running berlin Application ExperienceAeLookupSvc Stopped Windows 8 Application ExperienceALG Stopped berlin Application Layer Gateway...ALG Stopped Windows 8 Application Layer Gateway...Appinfo Stopped berlin Application InformationAppinfo Stopped Windows 8 Application InformationAppMgmt Stopped Windows 8 Application ManagementAppMgmt Stopped berlin Application ManagementAudioEndpointBuilder Stopped berlin Windows Audio Endpoint Bu...AudioEndpointBuilder Stopped Windows 8 Windows Audio Endpoint Bu...Audiosrv Stopped berlin Windows AudioAudiosrv Stopped Windows 8 Windows AudioBFE Running Windows 8 Base Filtering EngineBFE Running berlin Base Filtering EngineBITS Stopped berlin Background Intelligent Tr...BITS Running Windows 8 Background Intelligent Tr...Browser Running Windows 8 Computer BrowserBrowser Stopped berlin Computer Browser

Jako e warto w asno ci displayName cz sto jest d uga, wi c i cz sto nie mie ci si w kolumnieo szeroko ci 80 znaków. Je li wymienisz j na pocz tku kolejki wybranych w asno ci w poleceniuFormat-Table, kilka kolumn mo e nie zosta wy wietlonych, jak pokazano poni ej:

PS C:\> Get-Service -ComputerName berlin,Windows 8 | format-table name, displayname, status,machinename -AutoSize

WARNING: 2 columns do not fit into the display and were removed.

Kup książkę Poleć książkę

Page 24: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

208 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

Name DisplayName---- -----------1-vmsrvc Virtual Machine Additions Services Application1-vmsrvc Virtual Machine Additions Services ApplicationAeLookupSvc Application ExperienceAeLookupSvc Application Experience

Jak wida , w kodzie tym w ogóle nie by o sensu wybiera w asno ci machineName, bo i tak niejest widoczna. Rozwi zaniem tego problemu mo e by umieszczanie potencjalnie d ugiej w asno cina ko cu listy argumentów polecenia. Dzi ki temu konsola Windows PowerShell skróci wartotej w asno ci, zamiast zape nia ca y ekran danymi, które i tak pewnie uda oby si odgadn ,dysponuj c tylko ich cz ci .

Innym rozwi zaniem jest pozbycie si parametru -autosize polecenia Format-Table i u yciezamiast niego parametru Wrap. Parametr ten sprawia, e d ugie warto ci s zawijane, a nie obcinane.W zale no ci od tego, czego potrzebujesz, mo e to by przydatne lub irytuj ce. Poni ej znajdujesi przyk ad danych zwróconych dzi ki u yciu parametru -Wrap:

PS C:\> Get-Service -ComputerName berlin,Windows 8 | format-table name, displayname, status,machinename -Wrap

Name DisplayName Status MachineName---- ----------- ------ -----------1-vmsrvc Virtual Machine Add Running Windows 8 itions Services App lication1-vmsrvc Virtual Machine Add Running berlin itions Services App licationAeLookupSvc Application Experie Running berlin nceAeLookupSvc Application Experie Stopped Windows 8 nce

UWAGAMo e my lisz, e najlepszym rozwi zaniem jest u ycie zarówno parametru -autosize, jak i -Wrap.Pozwoli to zmaksymalizowa wykorzystanie przestrzeni ekranowej na prezentacj zwróconychdanych (dzi ki parametrowi -autosize) i zawija zbyt d ugie wiersze (dzi ki parametrowi -Wrap).Tak si nie da, ale je li to zrobisz, program nie zwróci adnego b du. Konsola Windows Po-werShell priorytetowo traktuje parametr -autosize i je li jest u yty, ignoruje parametr -Wrap.Kolejno ich wpisania nie ma przy tym znaczenia.

Wysy anie zapyta do Active DirectoryWi kszo administratorów sieci my li, e aby wys a zapytanie do Active Directory przy u yciukonsoli Windows PowerShell 1.0, trzeba napisa skrypt. Cz ciowo przekonanie to jest pozosta o cipo dniach wietno ci j zyka VBScript i odzwierciedla konieczno u ywania technologii ADO(ang. ActiveX Data Object) do wywo ywania zapyta LDAP (ang. Lightweight Directory AccessProtocol) do Active Directory. Wprawdzie mo na u ywa klasySystem.DirectoryServices.DirectorySearcher w wierszu polece Windows PowerShell, ale niejest to zbyt wygodne. Istniej co prawda zewn trzne polecenia cmdlet i dostawcy umo liwiaj cywykonywanie zapyta do Active Directory z wiersza polece , ale wielu administratorów sieci ma

Kup książkę Poleć książkę

Page 25: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Ewaluacja potrzeby napisania skryptu 209

s uszne opory przed instalowaniem na serwerach produkcyjnych oprogramowaniaspo eczno ciowego bez wsparcia. Istnieje jeszcze drugie rozwi zanie w wierszu polece , polegaj cena u yciu narz dzia DSQeury.exe, ale ma o komu przychodzi ono do g owy. Ale w konsoli WindowsPowerShell 2.0 i jej nowszych wersjach sytuacja radykalnie si zmieni a. Za pomoc technikopisanych w tym podrozdziale informatyk mo e korzysta z dobrych rozwi za do wykonywaniazapyta do Active Directory w wierszu polece .

Zastosowanie akceleratora [ADSISearcher]Je li kto chce wysy a zapytania do Active Directory z poziomu wiersza polece konsoli WindowsPowerShell, to ma kilka mo liwo ci do wyboru. Jedn z nich jest u ycie akceleratora typu[ADSISearcher], który jest skrótem nazwy klasy System.DirectoryServices.DirectorySearcher.Akcelerator ten, jak nietrudno si domy li , jedynie pomaga zmniejszy ilo wpisywanego tekstu.Oczywi cie i tak nale y mu poda odpowiedni konstruktor, aby rzeczywi cie utworzy egzemplarzklasy. Je li nie u yjesz akceleratora [ADSISearcher], musisz u y polecenia New-Object, aby utworzyobiekt. Polecenie to mo esz wpisa w nawiasie, aby wymusi utworzenie obiektu, a nast pniemo esz wywo a metod FindAll z obiektu DirectorySearcher. Otrzymana kolekcja obiektówDirectoryEntry zostaje potokowo przekazana do polecenia Select-Object, w którym zwracanajest w asno path, jak pokazano poni ej:

PS C:\> (New-Object DirectoryServices.DirectorySearcher "ObjectClass=user").Find All() | Select path

Path----LDAP://CN=Administrator,CN=Users,DC=nwtraders,DC=comLDAP://CN=Guest,CN=Users,DC=nwtraders,DC=comLDAP://CN=BERLIN,OU=Domain Controllers,DC=nwtraders,DC=comLDAP://CN=krbtgt,CN=Users,DC=nwtraders,DC=comLDAP://CN=WINDOWS 8,CN=Computers,DC=nwtraders,DC=comLDAP://CN=Windows 8Admin,OU=Students,DC=nwtraders,DC=comList Truncated –

Aby u y akceleratora typu [ADSISearcher], nale y przekaza mu odpowiedni konstruktor,którym w wielu przypadkach jest filtr wed ug sk adni LDAP. Sk adnia filtrów wyszukiwaniaLDAP jest zdefiniowana w dokumencie RFC 2254 i jest reprezentowana przez a cuchy Unicode.Za pomoc filtrów wyszukiwania mo na definiowa efektywne kryteria wyszukiwania. W tabeli7.1 zamieszczono par przyk adów zastosowania tej sk adni.

TABELA 7.1. Przyk ady filtrów wyszukiwania LDAP

Filtr wyszukiwania Opis

ObjectClass=Computer Wszystkie obiekty komputerów

ObjectClass=OrganizationalUnit Wszystkie obiekty jednostek organizacyjnych

ObjectClass=User Wszystkie obiekty u ytkowników oraz wszystkieobiekty komputerów

ObjectCategory=User Wszystkie obiekty u ytkowników

(&(ObjectCategory=User)(ObjectClass=Person))

Wszystkie obiekty u ytkowników

Kup książkę Poleć książkę

Page 26: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

210 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

TABELA 7.1. Przyk ady filtrów wyszukiwania LDAP — ci g dalszy

Filtr wyszukiwania Opis

L=Berlin Wszystkie obiekty o lokalizacji Berlin

Name=*Berlin* Wszystkie obiekty o nazwach zawieraj cych s owo Berlin

(&(L=Berlin)(ObjectCategory=OrganizationalUnit))

Wszystkie jednostki organizacyjne o lokalizacji Berlin

(&(ObjectCategory=OrganizationalUnit)(Name=*Berlin*))

Wszystkie jednostki organizacyjne, których nazwazawiera s owo Berlin

(&(ObjectCategory=OrganizationalUnit)(Name=*Berlin*)(!L=Berlin))

Wszystkie jednostki organizacyjne o nazwiezawieraj cej s owo Berlin, ale nie o lokalizacji Berlin

(&(ObjectCategory=OrganizationalUnit)(Name=*Berlin*)(!L=*))

Wszystkie jednostki organizacyjne o nazwie zawieraj cejs owo Berlin, ale niemaj ce okre lonej lokalizacji

(&(ObjectCategory=OrganizationalUnit)(|(L=Berlin)(L=Charlotte)))

Wszystkie jednostki organizacyjne o lokalizacji Berlinlub Charlotte

Jak wida w przedstawionych przyk adach, filtr wyszukiwania mo na zdefiniowa na dwasposoby. Pierwsza metoda polega na prostym przypisaniu filtra. Sk ada si on z atrybutu, operatoraoraz warto ci, jak poni ej:

PS C:\> ([ADSISearcher]"Name=Charlotte").FindAll() | Select Path

Path----LDAP://OU=Charlotte,DC=nwtraders,DC=com

Druga metoda u ycia filtra wyszukiwania LDAP polega na czeniu kilku filtrów. Najpierwwpisuje si operator, potem filtr A, nast pnie filtr B. Mo na czy wiele filtrów i operatorów, jakwida w przyk adach przedstawionych w tabeli 7.1. Poni ej znajduje si przyk ad u ycia takiegofiltra z o onego:

PS C:\> ([ADSISearcher]"(|(Name=Charlotte)(Name=Atlanta))").FindAll() | Select Path

Path----LDAP://OU=Atlanta,DC=nwtraders,DC=comLDAP://OU=Charlotte,DC=nwtraders,DC=com

W tabeli 7.2 znajduje si zestawienie operatorów, których mo na u ywa zarówno w prostych,jak i z o onych filtrach.

W tabeli 7.3 znajduje si zestawienie znaków specjalnych. Je li który z nich musi wyst piw filtrze wyszukiwania w dos ownym znaczeniu, nale y go zast pi sekwencj specjaln .

Jak wida na rysunku 7.8, znaki specjalne mog by u ywane w nazwach jednostekorganizacyjnych w Active Directory.

Kup książkę Poleć książkę

Page 27: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Ewaluacja potrzeby napisania skryptu 211

TABELA 7.2. Logiczne operatory filtrów wyszukiwania LDAP

Operator Opis

= Równo

~= Równo w przybli eniu

<= Mniejszy ni lub równy w porz dku leksykograficznym

>= Wi kszy ni lub równy w porz dku leksykograficznym

& Koniunkcja

| Alternatywa logiczna

! Negacja logiczna

TABELA 7.3. Znaki specjalne filtrów wyszukiwania LDAP

Znak ASCII Zast pcza sekwencja specjalna

* \2a

( \28

) \29

\ \5c

NUL \00

/ \2f

RYSUNEK 7.8. Nazwy jednostek organizacyjnych w Active Directory

Na rysunku tym wida jednostk organizacyjn o nazwie *Atlanta. Aby pobra t konkretnjednostk , nale y u y znaku \2a, jak pokazano poni ej:

PS C:\> ([ADSISearcher]"name=\2aAtlanta").FindAll() | Select Path

Path----LDAP://OU=*Atlanta,DC=nwtraders,DC=com

Kup książkę Poleć książkę

Page 28: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

212 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

Aby pobra jednostk organizacyjn o nazwie (Berlin), nale y zgodnie z tabel 7.3 u ysekwencji specjalnych \28 i \29, jak pokazano poni ej:

PS C:\> ([ADSISearcher]"name=\28Berlin\29").FindAll() | Select Path

Path----LDAP://OU=(Berlin),DC=nwtraders,DC=com

Na rysunku 7.8 wida te jednostk organizacyjn o nazwie /Charlotte\. Sekwencja specjalnazast puj ca uko nik / to \2f, natomiast lewy uko nik ma sekwencj specjaln \5c. Aby wi cpobra jednostk organizacyjn o nazwie /Charlotte\ przy u yciu filtru wyszukiwania LDAPi akceleratora typu [ADSISearcher], nale y u y poni szego zapytania:

PS C:\> ([ADSISearcher]"name=\2fCharlotte\5c").FindAll() | Select Path

Path----LDAP://OU=\/Charlotte\\,DC=nwtraders,DC=com

Mora

Unikaj stosowania specjalnych znaków w nazwach jednostek organizacyjnych

Zasadniczo staram si nie u ywa znaków specjalnych w nazwach jednostek organizacyjnych,nazwach u ytkowników, nazwach grup, nazwach komputerów itd. Podejrzewam, e niewszystkie aplikacje potrafi je poprawnie zinterpretowa , i zawsze obawiam si , czy nazwazawieraj ca znak specjalny na pewno zadzia a. Ponadto nawet mimo mo liwo ci zast pieniaznaków specjalnych sekwencjami specjalnymi w wyszukiwaniu nigdy nie jest to intuicyjnei trzeba po wi ci du o czasu na znalezienie sposobu na zast pienie znaku sekwencjspecjaln . Je li doda si do tego fakt, e problemy zwykle wyst puj o godzinie 2 w nocyw niedziele (tak ju jest, e wszystkie problemy z sieci zdarzaj si o 2 w nocy w niedziele),gdy jest spore ryzyko, e zapomnisz u y sekwencji specjalnej, to jeste na najlepszej drodzedo katastrofy. To, e co mo na zrobi , nie znaczy, e jest to zalecane.

Znaki specjalne filtrów LDAP i odpowiadaj ce im sekwencje specjalne s wymienione w tabeli 7.3.Przy u yciu polecenia Invoke-Command mo na z atwo ci wykorzysta akcelerator [ADSISearcher]

do wysy ania zapyta do katalogu Active Directory niezaufanego lasu lub niezaufanej domeny.Wówczas nale y poda pe n nazw domeny komputera, poniewa gdy u ywana jest tylko nazwaNetBIOS serwera, istnieje ryzyko, e nazwy nie b d w pe ni rozwi zywane. Ponadto najlepiejjest przekaza dane po wiadczaj ce jako g ówn nazw u ytkownika (ang. User Principal Name— UPN). Po uruchomieniu polecenia zostaje wy wietlone okno dialogowe, w którym nale y wpisahas o. Polecenie to pokazano poni ej:

PS C:\> Invoke-Command -ComputerName Sydney.WoodBridgeBank.Com -Credential '[email protected] -ScriptBlock {([ADSISearcher]"L=Berlin").Findall()}PSComputerName : sydney.woodbridgebank.comRunspaceId : 112f974a-00aa-417c-8a13-9033a49354bdPSShowComputerName : TruePath : LDAP://OU=Berlin Bank,DC=woodbridgebank,DC=comProperties : {ou, dscorepropagationdata, whencreated, name...}

Kup książkę Poleć książkę

Page 29: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Ewaluacja potrzeby napisania skryptu 213

Pos ugiwanie si poleceniami Active DirectoryPolecenia Active Directory s dost pne od systemu Windows 2008 R2. Znajduj si w module,wi c najpierw nale y je za adowa za pomoc polecenia Import-Module. Oczywi cie mo napo prostu wybra ikon Active Directory Windows PowerShell, która powoduje uruchomieniekonsoli PowerShell z od razu za adowanymi poleceniami Active Directory. Bardzo dobrze, epolecenia Active Directory znajduj si w module, poniewa dzi ki temu za pomoc poleceniaImport-Module mo na je doda ze zdalnego komputera do sesji Windows PowerShell, w którejich brakuje. W tym celu nale y wykona nast puj ce czynno ci:

1. Ustanów zdaln sesj z serwerem z systemem Windows 2008 R2.

2. Zaimportuj polecenia Active Directory za pomoc polecenia Import-Module.

3. Wykonaj zapytanie Active Directory. 4. Zamknij po czenie ze zdaln sesj .

5. Usu zdaln sesj .

UWAGAU ywaj c polecenia Remove-PSSession z parametrem -id, nale y pami ta , e identyfikatorsesji nie zawsze jest znany. Identyfikator pierwszej sesji to 1, a drugiej 2. Konsola WindowsPowerShell prowadzi rejestr wszystkich sesji. Ale u ytkownik mo e nie wiedzie , który numersesji jest aktualny. Dlatego najlepiej jest pobra list wszystkich sesji PowerShell za pomocpolecenia Get-PSSession. Ponadto mam zwyczaj usuwa od czone sesje, których nie planuju ywa w najbli szej przysz o ci. W ten sposób zwalniam troch zasobów.

Poni ej przedstawiono przyk ad usuwania nieu ywanej sesji:

PS C:\> $ps = New-PSSession -ComputerName Sydney.WoodBridgeBank.Com [email protected] C:\> Enter-PSSession $ps[sydney.woodbridgebank.com]: PS C:\> Import-Module ActiveDirectory[sydney.woodbridgebank.com]: PS C:\> Get-ADOrganizationalUnit -Filter "L -eq 'Berlin'"Name : Berlin BankCountry : DEPostalCode :City : BerlinManagedBy :StreetAddress :State : BerlinObjectGUID : dde90f41-128c-4567-9822-00de5a4c96ccObjectClass : organizationalUnitDistinguishedName : OU=Berlin Bank,DC=woodbridgebank,DC=com[sydney.woodbridgebank.com]: PS C:\> Exit-PSSessionPS C:\> Get-PSSession

Id Name ComputerName State Configuration -- ---- ------------ ----- ------------- 1 Session1 sydney.woodb... Broken Microsoft.PowerShellPS C:\> Remove-PSSession -Id 1

Oprócz sk adni filtrów Active Directory, w których u ywa si operatorów Windows PowerShelli obs ugiwane s konwersje typów wzbogaconych, mo na te u ywa sk adni filtrów LDAP opisanejw poprzednim podrozdziale. Aby u y sk adni LDAP, nale y zamiast parametru -filter u yparametru -LDAPFilter oraz w cudzys owie poda filtr wyszukiwania LDAP, jak pokazano poni ej:

Kup książkę Poleć książkę

Page 30: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

214 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

PS C:\> Get-ADOrganizationalUnit -LDAPFilter '(L=Berlin)'Name : Berlin BankCountry : DEPostalCode :City : BerlinManagedBy :StreetAddress :State : BerlinObjectGUID : dde90f41-128c-4567-9822-00de5a4c96ccObjectClass : organizationalUnitDistinguishedName : OU=Berlin Bank,DC=woodbridgebank,DC=com

Po prostu u ywaj wiersza poleceWiele polece mo na wykona bezpo rednio w zwyk ym wierszu polece przy u yciu starychnarz dzi. Nie ma w tym nic z ego i polecenia te s te obs ugiwane przez konsol WindowsPowerShell. Wskazówk , e stare narz dzia wiersza polece s obs ugiwane przez WindowsPowerShell, powinno by to, e mo na je wyszukiwa za pomoc polecenia cmdlet Get-Command.Do wyszukiwania plików wykonywalnych za pomoc tego polecenia mo na u ywa symboliwieloznacznych, jak pokazano poni ej:

PS C:\> Get-Command ds*CommandType Name Definition----------- ---- ----------Application ds16gt.dll C:\Windows\system32\ds16gt.dllApplication ds32gt.dll C:\Windows\system32\ds32gt.dllApplication dsa.msc C:\Windows\system32\dsa.mscApplication dsacls.exe C:\Windows\system32\dsacls.exeApplication dsadd.exe C:\Windows\system32\dsadd.exeApplication dsadmin.dll C:\Windows\system32\dsadmin.dllApplication dsauth.dll C:\Windows\system32\dsauth.dllApplication dsdbutil.exe C:\Windows\system32\dsdbutil...Application dsdmo.dll C:\Windows\system32\dsdmo.dllApplication dsget.exe C:\Windows\system32\dsget.exeApplication dskquota.dll C:\Windows\system32\dskquota...Application dskquoui.dll C:\Windows\system32\dskquoui...Application dsmgmt.exe C:\Windows\system32\dsmgmt.exeApplication dsmod.exe C:\Windows\system32\dsmod.exeApplication dsmove.exe C:\Windows\system32\dsmove.exeApplication dsound.dll C:\Windows\system32\dsound.dllApplication dsprop.dll C:\Windows\system32\dsprop.dllApplication dsprov.dll C:\Windows\System32\Wbem\dsp...Application dsprov.mof C:\Windows\System32\Wbem\dsp...Application dsquery.dll C:\Windows\system32\dsquery.dllApplication dsquery.exe C:\Windows\system32\dsquery.exeApplication dsrm.exe C:\Windows\system32\dsrm.exeApplication dssec.dat C:\Windows\system32\dssec.datApplication dssec.dll C:\Windows\system32\dssec.dllApplication dssenh.dll C:\Windows\system32\dssenh.dllApplication dssite.msc C:\Windows\system32\dssite.mscApplication dsuiext.dll C:\Windows\system32\dsuiext.dllApplication dsuiwiz.dll C:\Windows\system32\dsuiwiz.dllApplication dswave.dll C:\Windows\system32\dswave.dll

Kup książkę Poleć książkę

Page 31: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Ewaluacja potrzeby napisania skryptu 215

Powy sze polecenie zwraca wszystkie poprawne polecenia Windows PowerShell, wliczaj cfunkcje, polecenia cmdlet oraz pliki wykonywalne. Je li chcesz znale tylko narz dzia wierszapolece , u yj parametru commandtype, jak pokazano poni ej:

PS C:\> Get-Command -Name ds* -CommandType application

CommandType Name Definition----------- ---- ----------Application ds16gt.dll C:\Windows\system32\ds16gt.dllApplication ds32gt.dll C:\Windows\system32\ds32gt.dllApplication dsa.msc C:\Windows\system32\dsa.mscApplication dsacls.exe C:\Windows\system32\dsacls.exeApplication dsadd.exe C:\Windows\system32\dsadd.exeApplication dsadmin.dll C:\Windows\system32\dsadmin.dllApplication dsauth.dll C:\Windows\system32\dsauth.dllApplication dsdbutil.exe C:\Windows\system32\dsdbutil...Application dsdmo.dll C:\Windows\system32\dsdmo.dllApplication dsget.exe C:\Windows\system32\dsget.exeApplication dskquota.dll C:\Windows\system32\dskquota...Application dskquoui.dll C:\Windows\system32\dskquoui...Application dsmgmt.exe C:\Windows\system32\dsmgmt.exeApplication dsmod.exe C:\Windows\system32\dsmod.exeApplication dsmove.exe C:\Windows\system32\dsmove.exeApplication dsound.dll C:\Windows\system32\dsound.dllApplication dsprop.dll C:\Windows\system32\dsprop.dllApplication dsprov.dll C:\Windows\System32\Wbem\dsp...Application dsprov.mof C:\Windows\System32\Wbem\dsp...Application dsquery.dll C:\Windows\system32\dsquery.dllApplication dsquery.exe C:\Windows\system32\dsquery.exeApplication dsrm.exe C:\Windows\system32\dsrm.exeApplication dssec.dat C:\Windows\system32\dssec.datApplication dssec.dll C:\Windows\system32\dssec.dllApplication dssenh.dll C:\Windows\system32\dssenh.dllApplication dssite.msc C:\Windows\system32\dssite.mscApplication dsuiext.dll C:\Windows\system32\dsuiext.dllApplication dsuiwiz.dll C:\Windows\system32\dsuiwiz.dllApplication dswave.dll C:\Windows\system32\dswave.dll

atwo obs ugi i elastyczno konsoli Windows PowerShell przyczyni y si do nawrotuzainteresowania programami wiersza polece . Przyk adem mo e by program DSQuery.exe,za pomoc którego u ytkownik mo e szybko wys a zapytanie do Active Directory. Bior c poduwag , e w systemie Windows Server 2008 R2 dodano akcelerator typu [ADSISearcher] i ró nepolecenia cmdlet do obs ugi Active Directory, mo esz si zastanawia , po co w ogóle kto mia byu ywa takich narz dzi jak DSQuery.exe. Poni ej znajduje si polecenie DSQuery.exe zwracaj celist jednostek organizacyjnych w domenie:

PS C:\> dsquery ou"OU=Domain Controllers,DC=nwtraders,DC=com""OU=Students,DC=nwtraders,DC=com""OU=ManagedComputers,DC=nwtraders,DC=com""OU=TestOU,DC=nwtraders,DC=com"

Poni ej znajduje si polecenie zwracaj ce list jednostek organizacyjnych w sk adni opartej nau yciu akceleratora [ADSISearcher]:

Kup książkę Poleć książkę

Page 32: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

216 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

PS C:\> ([ADSISearcher]"objectClass=OrganizationalUnit").findall() | select-Object -property path

Path----LDAP://OU=Domain Controllers,DC=nwtraders,DC=comLDAP://OU=Students,DC=nwtraders,DC=comLDAP://OU=ManagedComputers,DC=nwtraders,DC=comLDAP://OU=TestOU,DC=nwtraders,DC=com

Sk adnia oparta na poleceniu Get-ADOrganizationalUnit, dost pnym w module ActiveDirectory od systemu Windows Server 2008 R2, jest nieco prostsza. Podczas pracy w wierszupolece Windows PowerShell Active Directory nie zawsze trzeba podawa nazwy parametrów.Mo na te u ywa aliasów (np. Select zamiast Select-Object). Dzi ki aliasom polecenia skrótsze, ale trudniejsze do zmodyfikowania. Poni ej znajduje si przyk ad u ycia poleceniaGet-ADOrganizationalUnit:

PS C:\> Get-ADOrganizationalUnit -Filter "name -like '*'" | Select DistinguishedName

DistinguishedName-----------------OU=Domain Controllers,DC=woodbridgebank,DC=comOU=Test1,DC=woodbridgebank,DC=com

Je li d ysz do maksymalnego skrócenia sk adni, to najlepszym rozwi zaniem b dzie u ycieprogramu DSQuery.exe. Ale je li masz jeszcze inne wymagania, to lepsze mog by innerozwi zania. Program DSQuery.exe zwraca a cuch, podczas gdy akcelerator [ADSISearcher]zwraca obiekt DirectoryEntry. Z kolei polecenie Get-ADOrganizationalUnit zwraca obiektMicrosoft.ActiveDirectory.Management.ADOrganizationalUnit. Ka da metoda ma wady i zalety,wi c wybór jednej z nich zale y od konkretnych potrzeb.

UWAGAUwa am, e dobrym zwyczajem jest wpisywanie pe nych nazw parametrów nawet podczaspracy w wierszu polece w konsoli Windows PowerShell. Cho parametry cz sto mo nadefiniowa wed ug ich pozycji, to trzeba pami ta , który jest domy lny, oraz zna kolejnoparametrów, je li jest ich wi cej ni jeden. Cz sto dane informacje udaje mi si zdoby dopieropo paru próbach. Po zmianie domy lnego parametru na kilka parametrów modyfikuj cych,je li nie u ywa si nazw parametrów, sk adnia ulega zmianie, jak pokazano poni ej:PS C:\> Get-Command ds* applicationGet-Command : The command could not be retrieved because the ArgumentList parameter can bespecified only when retrieving a single cmdlet or script.At line:1 char:12+ Get-Command <<<< ds* application+ CategoryInfo : InvalidArgument: (ds16gt.dLL:ApplicationInfo)[Get-Command], PSArgumentException+ FullyQualifiedErrorId :CommandArgsOnlyForSingleCmdlet,Microsoft.PowerShell.Commands.GetCommandCommand

Oprócz kwestii zwi zanej z typem zwrotnym narz dzie DSQuery.exe jest obarczone jeszczepewnymi innymi problemami. Przede wszystkim po wi cono w nim mo liwo ci na rzecz prostoty,co oznacza, e w zapytaniach mo na u ywa tylko paru atrybutów. Aby na przyk ad znale

Kup książkę Poleć książkę

Page 33: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Obliczanie korzy ci z u ycia skryptu 217

wszystkie jednostki organizacyjne w Active Directory zawieraj ce nazw Berlin, mo na u yponi szego polecenia:

dsquery ou -name *berlin*

A eby znale wszystkie jednostki organizacyjne w Active Directory, których atrybutlokalizacji jest ustawiony na Berlin, nale y u y polece cmdlet Active Directory lub akceleratora[ADSISearcher]. Je li kto dobrze wie, jakie s mo liwo ci narz dzia DSQuery.exe, to nie ma nicz ego w tym, e go u ywa. Zwrócone przeze wyniki mo na nawet przekaza potokowo do innychnarz dzi, np. DSMove.exe. Program DSMove.exe przenosi obiekt do innej lokalizacji w Active Directory,program DSMode.exe s u y do zmieniania warto ci atrybutów, a DSrm.exe s u y do usuwaniaobiektów z Active Directory.

Obliczanie korzy ci z u ycia skryptuJe li podliczy si czas potrzebny na napisanie, przetestowanie i umieszczenie skryptu w systemiekontroli wersji, mo e si okaza , e ca y proces jest do czasoch onny. Dlatego te informatycypowinni oszacowa potencjalne korzy ci z napisania skryptu, zanim zaczn go pisa . Jak juwspomnia em w tym rozdziale, wiele tradycyjnych powodów do pisania skryptów WindowsPowerShell straci o ju wa no . Nie znaczy to, e nigdy nie trzeba pisa skryptów, tylko e wieleskomplikowanych zada mo na wykona przy u yciu prostych polece . Je li zastanawiasz si ,czy pisa skrypt, czy nie, w tym podrozdziale znajdziesz par wskazówek.

Zapiski praktykaJason A. Yoder, MCTPrezes firmy MCTExpert, Inc.

Cz sto polecam u ywanie konsoli Windows PowerShell informatykom, którzy s przyzwyczajenido tego, e traktuje si ich jako koszt, a nie warto ciowe aktywa firmy. Ale nie musi tak by .Odk d istnieje konsola Windows PowerShell, a jest ju czwarta wersja, trudno znalejakiekolwiek uzasadnienie dla r cznego wykonywania jakichkolwiek czynno ci administracyjnychna serwerach firmy Microsoft. W istocie konsola ta umo liwia informatykom pokazanie,

e s cennymi pracownikami, i udowodnienie, e warto inwestowa w ich prac .

Wyobra sobie tak sytuacj : za ka dym razem, gdy kto w firmie uruchamia napisany przezCiebie skrypt, program ten wysy a pewne wa ne informacje do znajduj cego si na centralnymserwerze pliku CSV. Zapisywane jest, który skrypt zosta uruchomiony, kto go uruchomi orazile czasu dzi ki temu zaoszcz dzono. Przy u yciu tych danych informatyk mo e udowodni , jakwiele uda o si zyska dzi ki niewielkiej inwestycji w napisanie paru skryptów. W niektórychprzypadkach mo na nawet wykaza , e zaoszcz dzenie wielu godzin dzi ki u yciu konsoliWindows PowerShell pozwoli o od o y konieczno zatrudnienia dodatkowych pracowników.

Kup książkę Poleć książkę

Page 34: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

218 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

Kiedy pomaga em pewnemu klientowi, który musia wyznaczy jednego pracownika dorobienia kopii zapasowej i czyszczenia dzienników zabezpiecze co trzy godziny ka dego dniana wielu zdalnych serwerach. Dzi ki po wi ceniu trzech godzin na napisanie i przetestowanieskryptu klient ten po wi ca na to samo zadanie mniej ni godzin rocznie — kiedy potrzebowa1095 godzin. Nie trzeba by geniuszem finansowym, aby dostrzec, jak du o mo na potencjalniezaoszcz dzi . Pami tam te pewnego u ytkownika, który co tydzie musia wykonywapewne zadanie zwi zane z u ywaniem Active Directory i Excela. Zajmowa o mu to dwiegodziny. Dzi ki u yciu konsoli Windows PowerShell zadanie jest wykonywane automatycznie,a osoba, o której pisz , ma gotowy produkt, gdy przychodzi do pracy w poniedzia ek —oszcz dza 104 godziny pracy.

Pytanie, jakie nale y sobie zada , nie brzmi: „Co mog zrobi przy u yciu konsoli WindowsPowerShell?”, tylko: „Co chc zrobi przy u yciu konsoli Windows PowerShell?”. Gdyodpowiesz sobie na to pytanie i wprowadzisz swoj wizj w ycie, nie zapomnij oszacowaefektów. Mo e staniesz si w firmie informatyczn gwiazd i nowym cennym pracownikiem.

PowtarzalnoJe li jakie zadanie trzeba powtórzy wiele razy, to jest to dobra okazja do napisania skryptu (chooczywi cie nie zawsze). Informatycy cz sto potrzebuj informacji o stanie ró nych us ug, którybez problemu mo na sprawdzi za pomoc polecenia Get-Service. Aby sprawdzi status wybranegoprocesu, nale y u y parametru Name, jak pokazano poni ej:

PS C:\> Get-Process -Name powershellHandles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName------- ------ ----- ----- ----- ------ -- ----------- 661 9 42616 46024 202 3.61 880 powershell

Je li trzeba odczyta najnowszy wpis w dzienniku aplikacji, nale y u y dwóch parametrów,jak pokazano poni ej:

PS C:\> Get-WinEvent -LogName application -MaxEvents 1TimeCreated ProviderName Id Message----------- ------------ -- -------1/26/2009 10:47:... VSS 8193 Volume Shadow Co...

W tych przypadkach pisanie skryptu nie ma sensu, poniewa sk adnia polece jest prosta,atwa w u yciu i bez trudu mo na j sobie przypomnie , je li si zapomni. Wystarczy w razie

potrzeby u y polecenia Get-Help.Je li jak czynno wykonuje si rutynowo na grupie komputerów, to warto zastanowi si nad

napisaniem skryptu. Za ó my, e musimy sprawdza poziom fragmentacji na kilku komputerach.Pewnie uda si znale sposób na uruchomienie polecenia bezpo rednio z konsoli WindowsPowerShell, ale nast pnym razem, gdy b dzie trzeba to zrobi , znowu sp dzisz kilkadziesi tminut na przypominaniu sobie sk adni. W takim przypadku lepiej napisa skrypt, np. o nazwieDefragAnalysisReport.ps1, co powinno zaj nie wi cej ni godzin . W skrypcie tym mo na u yklasy WMI Win32_Volume, wywo a metod DerfagAnalysis dla ka dego dysku komputera i zapisawyniki w pliku tekstowym.

Kup książkę Poleć książkę

Page 35: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Obliczanie korzy ci z u ycia skryptu 219

W skrypcie DefragAnalysisReport.ps1 najpierw nale y utworzy tablic nazw komputerówi przypisa j do zmiennej $arycomputer. Mo na to zrobi zarówno przez wpisanie warto cibezpo rednio w kodzie, jak w tym przyk adzie, lub odczytanie warto ci z pliku tekstowegoza pomoc polecenia Get-Content. Nast pnie nale y przypisa warto cie ki wyj ciowejdo zapisania raportu. cie ka ta wskazuje folder istniej cy na komputerze, na którym zostanieuruchomiony skrypt. Folderu tego nie musi by na komputerze docelowym, poniewa wszystkieraporty b d przechowywane lokalnie. Poni ej znajduje si opisywana cz kodu:

$arycomputer = "Windows 8","Berlin"$FilePath = "C:\fso"

Teraz za pomoc instrukcji Foreach trzeba przejrze tablic nazw komputerów zapisanw zmiennej $arycomputer, jak pokazano poni ej:

Foreach($Computer in $aryComputer){

Do klasy WMI Win32_Volume mo na wysy a zapytania za pomoc polecenia Get-WmiObject.Klasa ta jest dost pna od systemu Windows 2003. Je li planowane jest uruchamianie skryptuw starszych systemach, dobrym zwyczajem jest dodanie mechanizmu obs ugi b dówwykrywaj cego wersj systemu operacyjnego i w razie potrzeby elegancko przechodz cegodo nast pnego komputera. Opis tej techniki znajduje si w rozdziale 6. Poni ej przedstawionoopisywane zapytanie:

Get-WmiObject -Class win32_volume -Filter "DriveType = 3" ' -ComputerName $computer |

Wyniki zapytania WMI s przekazywane do polecenia ForEach-Object. Technika polegaj cana przekazywaniu danych przez potok jest nieco bardziej efektywna ni zapisywanie wynikóww zmiennej i iterowanie po nich, poniewa przetwarzanie rozpoczyna si od razu po otrzymaniupierwszego obiektu. Pierwsz czynno ci w poleceniu ForEach-Object jest wydrukowanieza pomoc parametru -Begin wiadomo ci informuj cej o tym, który komputer jest aktualniesprawdzany, jak pokazano poni ej:

ForEach-Object '-Begin { "Sprawdzanie komputera $computer" } '

Rzeczywist analiz defragmentacji, która ma miejsce raz dla ka dego dysku, mo na wykonaw bloku Process. Metoda DefragAnalysis jest wywo ywana dla obiektu znajduj cego si aktualniew potoku. Zmienna $_ to zmienna automatyczna odnosz ca si do tego obiektu. MetodaDefragAnalysis zwraca zarówno raport o b dzie, jak i egzemplarz klasy WMI Win32_DefragAnalysis.Obie te informacje s zapisywane w zmiennej $rtn, jak pokazano poni ej:

-Process { "Sprawdzanie poziomu fragmentacji dysku $($_.name). Czekaj..." $RTN = $_.DefragAnalysis()

W celu utworzenia raportu o poziomie defragmentacji mo na u y przekierowania.Pojedynczy znak nawiasu trójk tnego skierowany w prawo (>) nadpisuje poprzednie raporty.Jako e istnieje du a szansa, e serwer b dzie zawiera wi cej ni jeden dysk, lepiej u y podwójnegonawiasu (>>). Inn mo liwo ci jest u ycie polecenia Out-File, którego zalet jest to, e pozwala

Kup książkę Poleć książkę

Page 36: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

220 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

okre li sposób kodowania pliku. Ponadto polecenie to jest bardziej czytelne ni strza kiprzekierowania. Dlatego z regu y u ywam polecenia Out-File. Poni ej znajduje si sekcjanag ówka raportu:

"Raport nt. defragmentacji dla komputera $computer" >> "$FilePath\Defrag$computer.txt""Raport dla dysku $($_.Name)" >> "$FilePath\Defrag$computer.txt""Data sporz dzenia raportu: $(Get-Date)" >> "$FilePath\Defrag$computer.txt" "--------------------------------" >> "$FilePath\Defrag$computer.txt"

Jedn z wielkich zalet konsoli Windows PowerShell jest sposób, w jaki automatycznie wy wietlaw asno ci i warto ci obiektów. Aby w j zyku VBScript wydrukowa warto ka dej w asno ci,trzeba napisa kilkana cie wierszy kodu. Jak wida tutaj, obiekt zarz dzania Win32_DefragAnalysis,który jest zapisany we w asno ci DefragAnalysis, zostaje przekazany do polecenia Format-Listw celu usuni cia w asno ci systemowych klasy WMI. Nazwy wszystkich w asno ci systemowychzaczynaj si od dwóch znaków podkre lenia (__), dzi ki czemu mo na je atwo wyeliminowaza pomoc wyra enia regularnego wyszukuj cego tylko w asno ci o nazwach zaczynaj cych siod liter, po których wyst puje dowolna liczba innych znaków. Otrzymana lista w asno ci z warto ciamizostaje przekazana do pliku znajduj cego si w lokalizacji okre lonej przez w asno $filepath,jak pokazano poni ej:

$RTN.DefragAnalysis | Format-List -Property [a-z]* >> "$FilePath\Defrag$computer.txt"} '

Na koniec za pomoc parametru End mo na wydrukowa informacj , e testowanie na danymkomputerze zosta o zako czone, jak pokazano poni ej:

-END { "Zako czono sprawdzanie komputera $computer" }} #end foreach computer

Poni ej znajduje si ca y skrypt DefragAnalysisReport.ps1.

DefragAnalysisReport.ps1$arycomputer = "Windows 8","Berlin"$FilePath = "C:\fso"Foreach($Computer in $aryComputer){ Get-WmiObject -Class win32_volume -Filter "DriveType = 3" ' -ComputerName $computer | ForEach-Object ' -Begin { "Sprawdzanie komputera $computer" } ' -Process { "Sprawdzanie poziomu defragmentacji dysku $($_.name). Czekaj..." $RTN = $_.DefragAnalysis() "Raport nt. defragmentacji dla komputera $computer" >> "$FilePath\Defrag$computer.txt" "Raport dla dysku $($_.Name)" >> "$FilePath\Defrag$computer.txt" "Data sporz dzenia raportu: $(Get-Date)" >> "$FilePath\Defrag$computer.txt" "--------------------------------" >> "$FilePath\Defrag$computer.txt" $RTN.DefragAnalysis | Format-List -Property [a-z]* >> "$FilePath\Defrag$computer.txt"} ' -END { "Completed testing $computer" }} #end foreach computer

Kup książkę Poleć książkę

Page 37: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Obliczanie korzy ci z u ycia skryptu 221

Wiedza tajemnaStefan Stranger, Senior Premier Field EngineerMicrosoft Corporation

Program System Center Operations Manager zacz odbiera pakiety zbiorcze aktualizacjiprzy u yciu us ugi Windows Update. Jako e nie wszystkie moje komputery demonstracyjnei testowe s po czone z internetem, potrzebowa em sposobu na odszukanie czy u ywanychprzez program Operations Manager do pobierania danych z tej us ugi.

Us uga Windows Update u ywa pliku .cab znajduj cego si pod adresem http://go.microsoft.com/fwlink/?LinkId=76054. Jest w nim plik Package.xml zawieraj cy cza, przy u yciu którychOperations Manager (i inne produkty) pobiera pliki aktualizacyjne.

Utworzy em skrypt pobieraj cy ten plik .cab, wypakowuj cy z niego potrzebne plikii wyszukuj cy w pliku .xml cza do plików aktualizacji, co pozwoli o mi na aktualizowaniemoich rodowisk testowych bez pod czania ich do internetu.

Agent aktualizacji pobiera te informacje z archiwum wsusscn2.cab udost pnianego do pobraniaprzez firm Microsoft pod sta ym adresem URL http://go.microsoft.com/fwlink/?linkid=76054. Plikten pobiera tak e program Microsoft Baseline Security Analyzer (MBSA), który przy jego u yciusprawdza, czy system ma zainstalowane wszystkie poprawki.

Archiwum zawiera plik katalogowy o nazwie package.xml, w którym firma Microsoft indeksujewszystkie poprawki dotycz ce bezpiecze stwa (wraz z zale no ciami) dla wszystkich swoichsystemów operacyjnych. W pliku tym znajduj si te adresy URL do plików do pobrania,za pomoc których mo na pobra wybrane poprawki bezpo rednio z serwerów Microsoftu.

Najpierw nale y za pomoc konsoli Windows PowerShell pobra plik wsusscn2.cab:# Pobiera plik .cab Windows Update, aby znale w nim cza do aktualizacji.

$download = "http://go.microsoft.com/fwlink/?LinkId=76054"

# Pobiera plik .cab.Start-BitsTransfer -Source "http://go.microsoft.com/fwlink/?LinkId=76054" -Destination"$env:temp\wsussnc2.cab"

Kolejn czynno ci jest wydobycie pliku package.xml z w a nie pobranego pliku wsusscn2.cab.U y em funkcji COM Expand-Cab:Function Expand-Cab ($SourceFile, $TargetFolder, $Item){

$ShellObject = new-object -com shell.application # Plik ZIP do rozpakowania: $zipfolder = $ShellObject.namespace($sourceFile) # miejsce przechowywania pliku ZIP $item = $zipfolder.parsename("$Item") # element w pliku ZIP $targetfolder = $ShellObject.namespace("$targetFolder") $targetfolder.copyhere($item)}

Kup książkę Poleć książkę

Page 38: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

222 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

Za pomoc tej funkcji mo na wypakowa zawarto pliku wsusscn2.cab do folderu tymczasowegou ytkownika:# Wypakowuje plik Package.cab z pliku WSUSsnc2.cabExpand-Cab -SourceFile "$env:temp\wsussnc2.cab" -TargetFolder "$env:temp" -Item "Package.cab"

Po rozpakowaniu pliku wsusscn2.cab mamy plik Package.cab, który te trzeba rozpakowa ,aby wydoby z niego plik Package.xml:# Wypakowuje plik Package.xml z pliku Package.cab.Expand-Cab -SourceFile "$env:temp\Package.cab" -TargetFolder "$env:temp" -Item "Package.xml"

Ostatni czynno ci jest odczytanie zawarto ci pliku Package.xml za pomoc konsoli WindowsPowerShell:[xml]$wsusupdate = get-content -path "$env:temp\package.xml"$urls = $wsusupdate.OfflineSyncPackage.FileLocations.FileLocation

Stosuj c filtrowanie przy u yciu nazw artyku ów Bazy wiedzy, mo na znale pliki pakietuzbiorczego aktualizacji dla ka dego takiego artyku u:$KBArticle = "KB2750631"$urls | ? {$_.Url -like "*$KBArticle*"} | ft -Property Url -wrap

Teraz pobieramy pliki .cab dla wybranego artyku u Bazy wiedzy za pomoc poleceniaStart-BitsTransfer.$urls | ? {$_.Url -like "*KB2750631*"} | select @{L="Source";E={$_.Url}},@{L="Destination";E={"$env:temp\"+(($_.Url) -split "/")[($_.Url -split "/").count -1]}} |Start-BitsTransfer

Mo liwo opisania w dokumentacjiSkrypt zapewnia, e pewne czynno ci zawsze b d wykonywane w ten sam sposób. Jest to bardzowa ne przy wykonywaniu skomplikowanych zada konfiguracyjnych oraz przy dokonywaniuprostych zmian w rejestrze. Skrypt dok adnie dokumentuje, co wydarzy o si podczas zmienianiakonfiguracji. Je li pó niej zostanie w niej znaleziony b d, mo na sprawdzi dokumentacjwykonanych przez skrypt polece i go odpowiednio zmodyfikowa , aby cofn wprowadzone zmiany.

W poni szym przyk adzie w ga zi rejestru HKEY_CURRENT_USER tworzony jest nowy kluczo nazwie Scripting oraz kolejny o nazwie Logon. Po utworzeniu tych kluczy zostaje utworzonaw asno o nazwie ScriptName i warto ci temp. Powsta e w ten sposób klucze rejestru widana rysunku 7.9, a kod u yty do ich utworzenia pokazano poni ej:

PS C:\> New-Item -Path HKCU:\Scripting\Logon -Force

Hive: HKEY_CURRENT_USER\Scripting

Name Property---- --------Logon

PS C:\> New-ItemProperty -Path HKCU:\Scripting\Logon -Name ScriptName -Value "Temp"

ScriptName : TempPSPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Scripting\LogonPSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\ScriptingPSChildName : LogonPSDrive : HKCUPSProvider : Microsoft.PowerShell.Core\Registry

Kup książkę Poleć książkę

Page 39: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Obliczanie korzy ci z u ycia skryptu 223

RYSUNEK 7.9. W asno ScriptName w kluczu rejestru Logon

Je li podczas tworzenia kluczy rejestru i ich warto ci wyst pi problem, nale y uruchomiEdytor rejestru lub wpisa w konsoli Windows PowerShell par polece . Skrypt z zasady atwiejsi modyfikuje, poniewa wida w ca o ci wykonywany kod. Polecenia, które wpisano wcze niejw konsoli Windows PowerShell, s pokazane w skrypcie CreateScriptingRegistryKey.ps1.

CreateScriptingRegistryKey.ps1New-Item -Path HKCU:\Scripting\Logon -Value "Temp" -ForceNew-ItemProperty -Path HKCU:\Scripting\Logon -Name ScriptName -Value "Temp"

Je li problem wyst pi z wcze niejszym poleceniem, to na podstawie pierwszego skryptubez problemu mo na utworzy nowy skrypt cofaj cy zmiany, jak wida w skrypcieDeleteScriptingRegistryKey.ps1. Drugi wiersz tego skryptu jest wy czony za pomoc komentarza,a w pierwszym zmieniono polecenie New-Item na Remove-Item. Parametr -force zmienionona Recurse, a parametr value w poleceniu Remove-Item jest niepotrzebny. Zawartozmodyfikowanego skryptu DeleteScriptingRegistryKey.ps1 pokazano poni ej:

DeleteScriptingRegistryKey.ps1Remove-Item -Path HKCU:\Scripting -Recurse#New-ItemProperty -Path HKCU:\Scripting\Logon -Name ScriptName -Value "Temp"

Zdolno do adaptacjiW zale no ci od struktury skryptu mo na go wykorzysta do wykonywania ró nych innych zada .Je li skrypt ma budow modu ow oraz u yto w nim funkcji i argumentów wiersza polece , tomo e by u ywany do wykonywania rozmaitych czynno ci. Funkcje mo na zaimportowa przezdo czenie skryptu do innego skryptu. Sam skrypt mo na te przekszta ci w modu , który pó niejmo na zaimportowa do sesji za pomoc polecenia Import-Module.

Kup książkę Poleć książkę

Page 40: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

224 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

Przyk adem skryptu o budowie modu owej jest skrypt SaveWmiInformationAsDocument.ps1.Jego najwa niejsze sk adniki s funkcjami, które mo na atwo wykorzysta w innych skryptach.

Wielokrotne wykorzystanie kodu

Mo liwo przystosowywania funkcji z jednego skryptu do u ycia w innych skryptach cz stouzasadnia koszt finansowy i czas, jaki nale y w o y w napisanie tego skryptu. Niemniejjednak mo liwo wielokrotnego wykorzystania kodu nie powinna by podstawowym celemprogramisty. Pisanie skryptów o modu owej budowie trwa znacznie d u ej ni zwyk ych.Ponadto inwestowanie czasu w mo liwo ponownego u ycia kodu w bli ej nieokre lonejprzysz o ci nie zawsze jest dobrym rozwi zaniem. Oczywi cie budowanie kodu modu owegojest bardzo dobrym podej ciem do programowania, które pozwala uzyska czytelny i atwyw modyfikacji kod. Warto d y do tych celów projektowych, ale sam potencja ponownegou ycia kodu w przysz o ci nie powinien by ostatecznym argumentem za.

Pierwsza funkcja w skrypcie SaveWmiInformationAsDocument.ps1 nazywa si CreateWordDoc.Tworzy ona egzemplarz klasy Word.Application, który zapisuje w zmiennej skryptowej $word.Nast pnie funkcja ta sprawia, e aplikacja Microsoft Office Word staje si widoczna, i dodajedokument do kolekcji dokumentów, jak pokazano poni ej:

Function CreateWordDoc(){ $script:word = New-Object -ComObject word.application $word.visible = $true $Script:doc = $word.documents.add()} #end CreateWordDoc

Kolejna funkcja nazywa si CreateSelection i przyjmuje a cuch, który powinien zosta u ytyjako nag ówek dokumentu Office Word. Do utworzenia zaznaczenia w programie Word potrzebnyjest egzemplarz klasy Word.Application. Jako e zmienna $word nale y do zakresu skryptowego,jest dost pna tak e w funkcji CreateSelection. Obiekt selection zostaje utworzony przezwys anie zapytania do w asno ci selection. Do wpisania nag ówka do dokumentu Wordu yto metody TypeText. Nast pnie tworzony jest pusty akapit i funkcja ko czy dzia anie.

Function CreateSelection($Heading){ $script:selection = $word.selection $selection.typeText($Heading) $selection.TypeParagraph()} #end CreateSelection

Funkcja GetWmiData odpytuje klas WMI, wynik przekszta ca na a cuch i zapisuje informacjew dokumencie Word jako zaznaczenie:

Function GetWmiData($WmiClass){ Get-WmiObject -class $wmiClass | Out-String | ForEach-Object {$selection.typeText($_)}} #end GetWmiData

Kup książkę Poleć książkę

Page 41: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Obliczanie korzy ci z u ycia skryptu 225

Podczas pobierania informacji WMI nale y utworzy cie k do pliku za pomoc funkcjiCreateFilePath, aby mo na by o gdzie zapisa dokument Word. Funkcja ta pobiera nazw klasyWMI przez zmienn $WmiClass. Nast pnie za pomoc metody substring z klasy System.Stringusuwa sze pierwszych znaków z nazwy klasy WMI. Te sze znaków to przedrostek Win32_obecny w nazwach prawie wszystkich klas WMI. Aby by dok adniejszym, powinno si sprawdzijeszcze inne wzorce nazw klas WMI i odpowiednio dostosowa polecenie substring do znalezionejnazwy klasy. Nast pnie polecenie Join-Path buduje cie k do pliku, która zostaje u yta przyzapisywaniu dokumentacji WMI. Poni ej znajduje si kod ród owy tej funkcji:

Function CreateFilePath($wmiClass){ $script:filename = $wmiClass.substring(6) $script:path = Join-Path -Path $folder -childpath $filename} #end CreateFilePath

Nast pnie trzeba zapisa dokument Word. W tym celu najpierw nale y utworzy egzemplarzwyliczenia Microsoft.Offie.Interop.Word.WdSaveFormat poprzez dokonanie rzutowaniareprezentacji a cuchowej tego wyliczenia jako typu. Musi to by typ referencyjny, dlatego dodano[ref]. Metoda saveas z obiektu Word.Document wymaga, aby zarówno cie ka, jak i format zapisuby y typami referencyjnymi. Po zapisaniu dokumentu obiekt Word.Application mo na usunz pami ci za pomoc metody quit. Poni ej znajduje si kompletny kod ród owy funkcjiSaveWordData:

Function SaveWordData($path){ [ref]$SaveFormat = "microsoft.office.interop.word.WdSaveFormat" -as [type] $doc.saveas([ref]$path, [ref]$saveFormat::wdFormatDocument) $word.quit()} #end SaveWordData

Punkt pocz tkowy skryptu tworzy par zmiennych i wywo uje odpowiednie funkcje,jak pokazano poni ej:

$folder = "C:\fso"$wmiClass = "Win32_Bios"$heading = "$wmiClass information:"CreateWordDocCreateSelection($Heading)GetWmiData($wmiClass)CreateFilePath($wmiClass)SaveWordData($path)

Poni ej znajduje si kompletny kod ród owy opisywanego skryptu SaveWmiInformation--AsDocument.ps1:

SaveWmiInformationAsDocument.ps1Function CreateWordDoc(){ $script:word = New-Object -ComObject word.application $word.visible = $true $Script:doc = $word.documents.add()} #end CreateWordDocFunction CreateSelection($Heading)

Kup książkę Poleć książkę

Page 42: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

226 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

{ $script:selection = $word.selection $selection.typeText($Heading) $selection.TypeParagraph()} #end CreateSelection

Function GetWmiData($WmiClass){ Get-WmiObject -class $wmiClass | Out-String | ForEach-Object {$selection.typeText($_)}} #end GetWmiData

Function CreateFilePath($wmiClass){ $script:filename = $wmiClass.substring(6) $script:path = Join-Path -Path $folder -childpath $filename} #end CreateFilePath

Function SaveWordData($path){ [ref]$SaveFormat = "microsoft.office.interop.word.WdSaveFormat" -as [type] $doc.saveas([ref]$path, [ref]$saveFormat::wdFormatDocument) $word.quit()} #end SaveWordData

# *** punkt pocz tkowy ***$folder = "C:\fso"$wmiClass = "Win32_Bios"$heading = "$wmiClass information:"CreateWordDocCreateSelection($Heading)GetWmiData($wmiClass)CreateFilePath($wmiClass)SaveWordData($path)

Wiedza tajemna

Rejestrowanie pomys ów na skryptyChris Bellée, Premier Field EngineerMicrosoft Corporation, Australia

Klienci cz sto prosz mnie o przyk adowe skrypty. Cz sto podsuwaj dobre pomys y, wi cpisz skrypty, które zachowuj do u ycia kiedy indziej. U ywam do tego Notatnika, któryjest atwy w obs udze i szybki. Pliki tekstowe odczytuj programy wszelkiego typu, wi c niemusz si martwi , czy mam zainstalowany odpowiedni program z pakietu Microsoft Office.Podczas pisania skryptów cz sto odkrywam nowe techniki i technologie. Wówczas od razupisz przyk adowy skrypt z ich u yciem, aby mie jaki przyk ad na przysz o . Nie jest toformalna technika, ale jej zalet jest prostota.

Kup książkę Poleć książkę

Page 43: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Wspó praca nad skryptami 227

Doskona ym pomys em jest utworzenie bazy danych skryptów, np. w programie MicrosoftOffice Access. Skrypty mo na podzieli na kategorie tematyczne wed ug dowolnegokryterium, a nast pnie mo na sporz dza raporty wskazuj ce, w jakich dziedzinach brakujejeszcze okre lonych rodzajów skryptów. Pó niej wystarczy tylko przejrze raport i uzupe nibraki. Baza danych mo e s u y nie tylko do przechowywania, ale równie do wyszukiwaniaskryptów. Bardzo ciekawym pomys em jest utworzenie konstruktora skryptów bazuj cegona ogólnych procedurach zapisanych w bazie danych. Oczywi cie jest to przede wszystkimmetoda tworzenia nowych skryptów na podstawie zapisanych pomys ów, a nie wyszukiwaniakolejnych okazji do napisania skryptu. Konstruktor skryptów mo e by rozszerzeniemprzeno nego centrum skryptowego dost pnego z Microsoft Script Center.

Gdy zabieram si do napisania nowego skryptu, z regu y u ywam klas platformy Microsoft.NET, je li s dost pne, zamiast funkcji VBScript czy nawet klas WMI, poniewa lepiej znamplatform .NET i uwa am, e jest to najlepsze rozwi zanie. Platforma .NET jest technologimacierzyst dla konsoli Windows PowerShell i o wiele atwiej jest wywo a interfejsy APIWin32 w Windows PowerShell 2.0. U ywam tych API, gdy nie mam dost pu do jakiej klasyw bibliotece .NET, np. do tworzenia udzia ów sieciowych i ustawiania ich uprawnie .

Wspó praca nad skryptamiPodczas gdy pisanie skryptów mo e by przyjemne i chyba rzeczywi cie wielu administratorówsieci czerpie z tego przyjemno , bywa te czasoch onne. Dlatego proces tworzenia skryptówpowinien by tak zaplanowany, aby korzy ci z niego mia a ca a organizacja. Nale y pami ta ,

e istnieje ró nica mi dzy nauk pisania skryptów a pisaniem skryptów. To prawda, eadministratorzy sieci cz sto ucz si poprzez pisanie skryptów, ale mimo wszystko nale yrozdziela te dwie czynno ci. Nauka pisania skryptów to dzia alno szkoleniowa i nale y jtraktowa jako obci enie bud etu na szkolenia. Natomiast pisanie skryptów to dzia alnooperacyjna. Je li administrator sieci osiem godzin pisze skrypt sprawdzaj cy, ile jest wolnegomiejsca na dysku serwera, to znaczy, e nie umie pisa skryptów. W zwi zku z tym te osiemgodzin nale y zaliczy do obci e szkoleniowych, a nie produkcyjnych. Posiadanie przez firmkilkunastu ró nych skryptów sprawdzaj cych ilo wolnego miejsca na dysku komputera nie jestefektywnym ekonomicznie rozwi zaniem.

Je li pracownicy ró nych dzia ów pisz takie same skrypty, marnuje si czas oraz wysi eki trzeba pomy le o wdro eniu jakich narz dzi do wspó pracy. Przy ich u yciu pracownicy mogudost pnia swoje skrypty innym oraz zg asza zapotrzebowanie na konkretne skrypty. W tensposób oddziela si dzia alno szkoleniow od produkcyjnej, a wi c oszcz dza czas i wysi ek.

Dodatkowe ród a informacji Centrum skryptów portalu TechNet pod adresem http://www.microsoft.com/technet/scriptcenter

zawiera wiele przyk adowych skryptów z filtrami wyszukiwania LDAP.

Kup książkę Poleć książkę

Page 44: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

228 Rozdzia 7. ledzenie mo liwo ci zastosowania skryptów

W artykule http://support.microsoft.com/kb/947709 w Bazie wiedzy znajduj si informacjena temat sposobów u ycia polece kontekstu NetSh Advanced Firewall.

W portalu MSDN na stronie http://msdn.microsoft.com/en-us/library/aa746385(VS.85).aspxznajduje si dokumentacja sk adni filtrów wyszukiwania LDAP.

Wszystkie skrypty opisane w tym rozdziale s dost pne do pobrania w repozytoriumcentrum skryptów portalu TechNet pod adresem http://gallery.technet.microsoft.com/scriptcenter/PowerShell-40-Best-d9e16039.

Kup książkę Poleć książkę

Page 45: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

Skorowidz.NET, 92, 111.NET Framework, 88

Aabstrakcyjne drzewa sk adni, 451Active Directory, 444, 445, 481ADO, ActiveX Data Object, 88, 208adres IP, 256ADSI, Active Directory Services Interface, 88agent aktualizacji, 221akcelerator

[ADSISearcher], 209[WMICLASS] , 275, 403

aktualizowaniedokumentacji, 287pomocy, 35–37

aktywno cinieautomatyczne, 604przep ywów pracy, 602, 603równoleg e, 605sekwencyjne, 609

aktywnoCheckPoint-Workflow, 603, 609ForEach -Parallel, 603InlineScript, 604, 611Parallel, 603Sequence, 603Suspend-Workflow, 603

algorytm MD5, 27alias, 122

cat, 366ft, 51

aliasyparametru, 341sta e, 125

tylko do odczytu, 124nazw funkcji, 127typów danych, 249

AllUsersAllHosts, 148AllUsersCurrentHost, 148analiza

defragmentacji, 219sk adniowa skryptów, 451sk adniowa skryptu, 455

API, pplication programming interface, 88API C Windows, 433aplikacja, 117, Patrz tak e narz dzieaplikacje IIS, 96argumenty pozycyjne, 236AST, abstract syntax tree, 451atrybut

[ordered], 529mandatory, 337ValidateRange, 409

atrybutyparametrów, 339, 340weryfikacyjne, 346, 451

automatyzacja, 88, 90testów interfejsów, 434zada , 87

AWDS, Active Directory Web Service, 62

Bbaza danych skryptów, 227Bellée Chris, 226, 454bezpiecze stwo, 29, 72, 96bezpiecze stwo danych, 492blok

Catch, 392, 407Finally, 392Try, 392

Kup książkę Poleć książkę

Page 46: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

630 Windows PowerShell. Najlepsze praktyki

b d, 135, 147, 160, 170, 199, 205, 281, 330, 336,338, 391, 403, 407, 520, 582, 585, 620

b dylogiczne, 441, 527sk adniowe, 443, 524wykonawcze, 524zakresu, 408

brakdostawców WMI, 396uprawnie , 389znaku dolara, 342

Brasser Jaap, 341Brundage James, 151, 391, 417, 430, 432

CCanastreiro Luís, 112, 164Carlos Ruiz Lopez Juan, 234, 251Carter Marc, 317Cedeno Enrique, 440, 444certyfikat, 472chmura, 144Christopher Jim, 307CLR, Common Language Runtime, 112COM, Component Object Model, 88, 136, 185Costantini Peter, 299Craig Burley James, 261CurrentUserAllHosts, 148CurrentUserCurrentHost, 148czyszczenie zawarto ci pliku, 444

Ddane

dziennika, 516konfiguracji, 619wej ciowe parametru, 342WMI, 247XML, 431

DCOM, Distributed Component ObjectModel, 95

debuger aliasu, 552debugowanie, 483, 523, 554debugowanie skryptów, 515, 545, 558, 560definiowanie

funkcji, 240, 244komentarzy, 281logiki biznesowej, 254

defragmentacja, 219

Dekens Luc, 529diagnostyka, 546diagnostyka szczegó owa, 527dodawanie

aktywno ci sekwencyjnej, 609dokumentacji, 271komentarza, 275, 288punktów kontrolnych, 607

dokumentacja, 222, 271, 287Active Directory, 70, 73SDK, 185

dokumentowanieprzebiegu testowania, 419skryptów, 447

do czaniedwukropka, 409pliku, 154

dopisywanie danych, 504dostawca

CIMWin32, 396Group, 621MSIProv, 398User, 621WMI, 172, 396zasobów DSC, 614

dost p dofolderu, 103, 137konfiguracji sesji, 481obiektu, 338obiektu COM, 136punktów wstrzymania, 549

dryf konfiguracji, 623DSC, Desired State Configuration, 17, 613dysk

HKCR, 400, 401PowerShell, 141, 142sieciowy, 513

dziennik, 431, 441, 443, 502, 504aplikacji, 519ledzenia, 506

Windowsupdate.log, 516zdarze , 478, 518, 519

Eedytor skryptów, 490edytowanie, 484EFS, Encrypting File System, 349egzemplarz klasy, 454

Kup książkę Poleć książkę

Page 47: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

SKOROWIDZ 631

eksportowaniedanych, 445historii polece , 204po wiadcze , 354

ETS, Extended Type System, 143ewaluacja zmiennej, 405

FFarr Ian, 492, 508filtr, 263, 266filtr HasMessage, 266filtrowanie klas, 48filtry wyszukiwania LDAP, 209–213Finke Douglas, 240folder

%username%, 135Backups, 34Dokumenty, 29

folderyskryptów, 482tymczasowe, 277wyj ciowe, 511

fragmenty kodu, 569, 570funkcja, 231, 242, 427

AddOne, 264, 265Add-Registry, 531Add-RegistryValue, 533add-two, 543bletch, 262Check-AllowedValue, 408Check-Number, 343ConvertFrom-Cab, 188CreateFilePath, 225CreateSelection, 224DivideNum, 556Enable-PSRemoting, 583–585Expand-Cab, 221Format-NonIPOutput, 260Get-AllowedComputer, 386–388Get-Bios, 442Get-Change, 427, 428Get-Choice, 383Get-Comments, 279Get-ComputerInfo, 321, 322Get-CountryByIP, 510Get-Discount, 254Get-FileName, 453Get-Folder, 511Get-ieStartPage, 275, 276

Get-MemberOf, 103Get-MoreHelp, 126, 128Get-MyModule, 315–317Get-OsVersion, 114Get-TempFile, 428Get-TextStatistics, 235–239Get-Type, 152Get-ValidWmiClass, 403–405Get-Version, 165Get-Volume, 163, 164Get-WmiClass, 131–133Get-WmiClasses, 283, 284Get-WmiInformation, 405Get-WmiProvider, 398, 402IntelliSense, 567Kontrola konta u ytkownika, 96New-Cab, 186, 187New-DDF, 192New-LocalUser, 435New-ModulesDrive, 313New-TempFile, 514New-TestConnection, 344ParseAction, 154Remove-OutPutFile, 278Set-LocalGroup, 437Set-ScreenSaverTimeout, 178Start-Transcript, 441Test-ComputerPath, 384Test-IsAdmin, 108Test-IsAdministrator, 518Test-ModulePath, 309Test-Scripts, 427Write-Path, 238

funkcjedefiniowanie logiki biznesowej, 254przeno no , 244rozwijania nazw, 525samodzielno , 244spójno wyników, 243z innych skryptów, 152z wieloma parametrami, 244, 252

Gga

CLSID, 401Current_User, 522HKEY_Classes_Root, 400Hkey_Current_User, 520

Kup książkę Poleć książkę

Page 48: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

632 Windows PowerShell. Najlepsze praktyki

generowaniedokumentacji, 450pliku konfiguracyjnego, 481raportów, 503

gip, 24gotowe fragmenty kodu, 569Goude Niklas, 480GPO, 469grupa, 103, 104grupa zabezpiecze

dodawanie u ytkownika, 76nazwa, 75cie ka, 75

usuwanie u ytkownika, 76zakres, 75

Gusev Vasily, 558

Hhas o, 77, 348, 620, 621Helmick Jason, 24Hicks Jeffery, 450hierarchiczna przestrze nazw, 167Hill Keith, 304historia polece , 204Hofferle Jason, 87, 248Holmes Lee, 354Huffman Clint, 173

Iidentyfikacja wersji, 89identyfikator

GUID, 203klasy dostawcy, 401OID, 351ObjectGUID, 81RID, 71SID, 54, 81, 99, 103, 444

IIS, Internet Information Services, 96importowanie

pliku, 445po wiadcze , 354

indeksowanie zmiennej $args, 331informacje

diagnostyczne, 436, 526dotycz ce domeny, 71o b dach, 37, 125, 133, 147, 161, 517, 593o czasie logowania, 502

o dostawcy klasy, 396o karcie sieciowej, 595o komputerach, 602o odmowie dost pu, 97o post pie testów, 428o typie obiektu, 403o Us udze konfiguracji, 613o wersji platformy .NET, 112o wykonywaniu funkcji, 438w nag ówku, 290zb dne, 293

infrastruktura WMI, 167instalowanie

konsoli, 25modu ów, 308modu u Active Directory, 62

instrukcja#Requires, 97, 314, 393[cmdletbinding()], 434exit, 438Foreach, 174, 187if, 388, 397On Error Resume Next, 406Param, 335, 381, 409, 416Return, 261, 438Switch, 357Throw, 333Trap, 391, 407

instrumentacja, 515instrumentacja zarz dzania Windows, 167integralno , 492interfejs

API, 433automatyzacji, 88programistyczny, 88us ug Active Directory, 88

ISE, Integrated Scripting Environment, 317

Jjednostka organizacyjna, 74, 211j zyk VBScript, 40, 91, 393, 406Jones Don, 43, 483, 489, 545

Kkatalog LDAP, 167Kearney Sean, 40klamra, 126

Kup książkę Poleć książkę

Page 49: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

SKOROWIDZ 633

klasa__provider, 397, 398_Namespace, 168_provider, 172Enum, 110ErrorRecord, 251InvocationInfo, 180Io.Path, 513Microsoft.Win32.Registry, 92PromptForChoice, 358PSObject, 511PSParser, 456Security.Principal.WindowsBuiltInRole, 109Security.Principal.WindowsIdentity, 518SecurityIdentifier, 100System.Enum, 109, 179System.Environment, 113, 115System.Io.FileInfo, 311System.Io.Path, 412System.Management.Automation.LineBreak,

547System.Math, 182System.Random, 160System.String, 403System.TimeSpan, 424, 428System.Version, 113Win32_Bios, 50, 565Win32_ComputerSystem, 412Win32_Desktop, 176Win32_LogicalDisk, 245Win32_OperatorSystem, 165Win32_Process, 52Win32_Product, 398Win32_Service, 51Win32_UserAccount, 54Win32_Volume, 218WindowsIdentity, 98WMI Win32_NetworkAdapterConfiguration,

256Word.Application, 224

klasyabstrakcyjne, 49Association, 52CIM, 45dynamiczne, 173pospolite, 173rdzenne, 173WMI, 45, 47, 49, 173

klauzula WHERE, 118

klawisz Tab, 567Klindt Todd, 119klucz $scriptRoot, 520klucze rejestru, 222

ForScripting, 520, 617kod ADSI, 65kolejno wykonywania aktywno ci, 610kolekcja, 174komentarze, 275, 452

efektywne, 286jednowierszowe, 271, 280, 294na ko cu wiersza, 295opisywanie struktur, 295wielowierszowe, 279

komentarzowy blok nag ówkowy, 449komunikacja, 299konfiguracje DSC, 623konfigurowanie, 616, 619

konsoli, 33profilu, 121przycisków, 139rodowiska skryptowego, 121

w z a, 625danego stanu programu, 613

konkatenacja, 278, 405konsola

MMC, 207PWA, 43Windows PowerShell, 21, 23Windows PowerShell ISE, 94

konstrukcjaBegin-Process-End, 338Try-Catch, 407Try-Catch-Finally, 334, 391

konstruktor, 159, 182konsumenci WMI, 167kontener users, 77konto

komputera, 74u ytkownika, 78

kontroladryfu konfiguracji, 623konta u ytkownika, 96, 389wersji, 490, 496wersji skryptów, 489wykonywania polece , 30

konwencje nazewnicze, 151konwersja a cucha, 403, 405krokowe wykonywanie skryptu, 541

Kup książkę Poleć książkę

Page 50: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

634 Windows PowerShell. Najlepsze praktyki

kwalifikatorabstract, 49association, 48deprecated, 48dynamic, 49singleton, 48supportsupdate, 48

LLDAP, 167, 208liczba

b dów, 413opcji, 382polece , 24, 158w asno ci i egzemplarzy, 50

liczenie testów, 428lista

czasowników, 235dostawców WMI, 172dost pnych modu ów, 302gotowych fragmentów kodu, 569jednostek organizacyjnych, 215przestrzeni nazw, 170punktów wstrzymania, 556skryptów, 491

logikabiznesowa, 254, 255programu, 254

logowanie, 467, 475–480lokalizacje sieciowe, 513Lopez Juan Carlos Ruiz, 554

adowanie modu ów, 305a cuch

miejscowy, 192po czenia, 356

czenie zmiennych, 405

Mmagazyn

certyfikatów u ytkownika, 473skryptów, 492

Maheu Georges, 166mapowanie dysków, 201maszyna wirtualna, 445Mayer Keith, 90

McGlone Ashley, 61mechanizm potwierdzania, 76Mell Bill, 32Mened er certyfikatów, 472, 473menu

Debug, 546, 560opcji, 582

metodaAddDays, 422ChangeStartMode(), 175, 176Connect(), 455create, 47createcab, 186DerfagAnalysis, 218DownloadString, 431FindAll, 209GetCurrent, 97, 518GetNames, 109, 179GetStringValue, 92GetTempFileName, 412, 513GetType, 403GetValues, 110IsInRole, 108Namespace, 190popup, 138–141PromptForChoice, 382, 383RegRead, 91saveas, 225split, 310Tokenize, 456ToString, 99, 353, 520WshShell.popup, 139

metodyklas WMI, 47pisania skryptów, 164pobierania danych, 328statyczne, 182zwracania danych, 358

Minasi Mark, 364model COM, 88modu , 118, 301, 395

Active Directory, 61dokumentacja, 70, 73instalowanie, 62nazwa lokalizacji, 73zastosowanie, 63znajdowanie kont u ytkowników, 78, 81znajdowanie wy czonych

u ytkowników, 80BasicFunctions.psm1, 319

Kup książkę Poleć książkę

Page 51: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

SKOROWIDZ 635

CimCmdlets, 46DotNet, 152PSCX, 144

modu yinstalowanie, 308adowanie, 305

sprawdzanie zale no ci, 314tworzenie, 319tworzenie folderu, 309z udzia ów, 318

modyfikowanierejestru, 465, 466skryptów, 256warto ci, 178zmiennej path, 286

monitowanie o informacje, 357Moravec David, 27mo liwo ci konsoli, 23Muscetta Daniele, 470

Nnadpisywanie dziennika, 500nag ówek, 290

komentarzowy, 449skryptu, 493

narz dziado pracy zdalnej, 94–96, 573RSAT, 63wiersza polece , 28

narz dzieCMD.exe, 142, 376CSVDE, 444DSMode.exe, 217DSQuery.exe, 215, 216fsutil, 24IPConfig.exe, 24Kinect, 390LDIFDE, 444MakeCab.exe, 192NetDom, 88NetSH, 88, 191PoshPAIG, 324SolarWinds Network Configuration

Manager, 33Streams.exe, 464System Center Operations Manager, 221VersionRecall, 497VSS, 496

WbemTest, 396WSH, 496

nawiasokr g y, 248trójk tny, 219

nazwadostawcy WMI, 397, 399g ówna u ytkownika, 212jednostki organizacyjnej, 211lokalizacji, 73modu u, 395

niedozwolone polecenia rdzenne, 604niepoprawna wersja skryptu, 495niepoprawne typy danych, 403nieprzechwycone wyniki, 263Norman Richard, 375notacja

funkcyjna, 543metodowa, 543

numerpoprawki, 113wersji, 493, 494

g ównej, 113kompilacji, 113pomocniczej, 113

Oobiekt, 454

$wshShell, 137COM, 143COM WshShell, 93DateTime, 413, 422DirectoryEntry, 216GPO, 470, 475makecab.makecab, 188MSGraph.Application, 505po wiadcze , 355PSCredential, 354, 355, 621ScriptInfo, 180, 181selection, 224shell, 188Shell.Application, 188, 190Win32_OperatingSystem, 165WindowsIdentity, 98, 105Word.Document, 225WshShell, 136–141WshSpecialFolders, 137XML, 431

Kup książkę Poleć książkę

Page 52: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

636 Windows PowerShell. Najlepsze praktyki

obs ugaaplikacji zewn trznych, 191b dów, 379, 404brakuj cych parametrów, 380COM, 185hase , 445IP, 259parametrów, 129parametrów nazwanych, 131platformy .NET, 182polece , 157skryptów, 146wej cia i wyj cia, 327WMI, 167

odblokowywanie kont u ytkowników, 78odczytywanie

pliku tekstowego, 198rejestru, 91, 92

odmowa dost pu, 97, 525ograniczanie

liczby opcji, 382mo liwo ci wyboru, 382warto ci parametru, 409

ograniczenia typów parametrów funkcji, 249, 131ogranicznik [Object[]], 339ograniczona zasada wykonywania, 147okienko

Command, 565, 567skryptu, 566

oknopo wiadcze , 583Testera, 396Windows PowerShell ISE, 563, 564

opcjaStep Into, 560Step Over, 560

opcje pomocy, 35operator

-contains, 101, 385, 387-like, 101-match, 101, 130 [], 337przekierowania, 499, 501zakresu, 123

operatory filtrów, 211opisywanie struktur, 295

Ppakiet

MSI, 466, 482VSS, 496Windows Management Framework 4.0, 25

parametr, 243$baseLineScript, 427action, 551append, 413, 515autosize, 208baseLineScript, 426class, 366classname, 45, 50commandtype, 215computer, 335computername, 117, 165, 206, 330, 573confirm, 76credential, 355, 581debug, 186, 434, 526description, 136, 569destination, 191discover, 67Encoding, 507Expression, 427filepath, 367filter, 50, 55, 68, 178, 213folder, 510force, 81, 125, 223, 583groupScope, 75identity, 80inputobject, 55keep, 595LDAPFilter, 213log, 427members, 76membertype, 591mode, 561modifiedScript, 426namespace, 45nazwany, 131numberOfTests, 427parent, 277password, 357path, 199PipelineVariable, 341Process, 413property, 50PSComputerName, 588, 600, 601qualifier, 48

Kup książkę Poleć książkę

Page 53: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

SKOROWIDZ 637

recurse, 412reset, 77script, 558step, 539strict, 542Text, 569Title, 569trace, 534TypeName, 454ValidatePattern, 344variable, 368Verbose, 179, 436whatif, 434, 437–440width, 507Wrap, 208

parametryinstrukcji #Requires, 394konfiguracji, 617obowi zkowe, 337, 381polece , 34standardowe, 434wiersza polece , 426

parser AST, 455pasek stanu, 532p tla, 128p tla foreach, 171, 339Pfeiffer Mike, 502pisanie

funkcji, 242skryptów, 157

planowanie skryptów, 59platforma .NET, 92, 111plik

$files, 422Autoexec.bat, 148dotnettypes.format.ps1xml, 362konfiguracji, 481package.xml, 221, 222passwordHash.txt, 354TroubleShoot.bat, 29WindowsUpdate.log, 134wsusscn2.cab, 222

pliki.bat, 465.cab, 186, 187, 222.ddf, 192.ps1, 143.psm1, 319.xml, 204ADM, 471

cabinet, 185CSV, 502MOF, 614, 616pomocy, 36, 37tekstowe, 198, 386, 509, 516wsadowe, 29

pobieraniedanych, 328danych WMI, 247dokumentacji

z komentarzy, 452z pomocy, 447

hase , 348informacji, 93, 95a cuchów po czenia, 356

podpisywanie kodu, 472polecenia, 24

Active Directory, 213CIM, 45cmdlet, 27, 30, 31, 573diagnostyczne, 392, 546, 555New-Aduser, 77promieniste, 205rdzenne, 604

polecenieAdd-Content, 509Add-Member, 511cd, 23Clear-Host, 541CLS, 376Complete-Transaction, 179Continue, 558ConvertFrom-SecureString, 355ConvertTo-Html, 370, 502, 509Copy-Item, 200, 205dir, 23Disable-PSBreakpoint, 561Enable-PSRemoting, 583Enter-PSSession, 70, 587Export-Clixml, 359, 509Export-Csv, 370, 502, 509ForEach-Object, 193, 204, 332, 423Format-List, 81Format-Table, 51, 207, 557, 566Get-ADDefaultDomainPasswordPolicy, 72Get-ADDomain, 71Get-ADDomainController, 67, 72Get-ADForest, 71Get-ADOrganizationalUnit, 216Get-ADRootDSE, 73

Kup książkę Poleć książkę

Page 54: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

638 Windows PowerShell. Najlepsze praktyki

polecenieGet-Aduser, 77Get-ADUser, 77–83Get-Alias, 122, 133Get-ChildItem, 187, 193, 342, 412, 422, 456Get-CimAssociatedInstance, 52–56Get-CimClass, 45–48Get-CimInstance, 46–51, 600Get-Command, 66, 602Get-Content, 198, 200, 219, 366, 525Get-Credential, 481Get-Date, 267, 422, 442Get-EventLog, 520, 605Get-ExecutionPolicy, 147, 468, 569Get-FileHash, 27Get-Help, 38, 125, 286, 323, 484, 573Get-History, 204Get-IseSnippet, 571Get-Item, 374, 407Get-Job, 591, 594Get-Member, 52, 177, 454, 507, 591Get-Module, 63, 65, 321Get-NetAdapter, 595Get-NetIPConfiguration, 24Get-Process, 118, 125, 157, 360, 561, 591Get-PSBreakpoint, 556, 560Get-PSDrive, 401Get-PSSession, 213, 587Get-Service, 117, 157, 206, 218Get-Variable, 329Get-WebServiceProxy, 510Get-WindowsFeature, 611Get-WmiClass, 130Get-WmiObject, 172, 219, 330, 405, 442, 595help, 42Import-Clixml, 359Import-Module, 213, 223Import-Module ActiveDirectory, 62Import-PSSession, 107Invoke-Command, 65, 94, 205, 477, 588Invoke-Expression, 198, 413Invoke-History, 204ipconfig, 28, 365Join-Path, 134, 192, 225, 401Measure-Command, 424, 426, 430Move-Item, 514New-ADGroup, 75New-ADOrganizationalUnit, 74New-Alias, 123New-DDF, 194

New-EventLog, 517New-IseSnippet, 570New-Item, 123, 134, 150, 533New-ItemProperty, 521New-Object, 185, 430, 454New-PSDrive, 313New-PSSession, 586, 587New-Variable, 135, 342Out-File, 219, 366, 413, 506, 513Out-Host, 364Out-Null, 401, 521Out-String, 520ping, 197, 384Quit, 558Read-Host, 352, 412, 434Receive-Job, 593Register-PSSessionConfiguration, 481Remove-Item, 125, 571Remove-Job, 591Remove-PSBreakpoint, 560Remove-PSDrive, 402Remove-PSSession, 213, 587Rename-ADObject, 74Save-Help, 37Search-ADAccount, 78Select-Object, 209, 361, 529Select-String, 240Set-ADAccountPassword, 77Set-Alias, 123, 124Set-Content, 509Set-ExecutionPolicy, 146, 466, 471Set-Item, 134Set-ItemProperty, 521Set-Location, 142, 586Set-PSBreakpoint, 547, 558Set-PSDebug, 529–534, 539–542, 548Set-StrictMode, 543Split-Path, 187Start-DscConfiguration, 623Start-Job, 594Start-Transaction, 178Start-Transcript, 441, 515, 587Step-into, 558Stop-Job, 594Stop-Process, 157Stop-Transcript, 442, 515substring, 225Tee-Object, 367, 509, 515Test-Connection, 526Test-Path, 154, 342, 400, 533

Kup książkę Poleć książkę

Page 55: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

SKOROWIDZ 639

Test-WSMan, 584Update-Help, 36Wait-Job, 593Where-Object, 117, 124, 425, 509, 580Write-Debug, 179, 180, 192, 441, 525Write-Error, 509Write-Host, 434, 551Write-Verbose, 178, 400, 438, 545Write-Warning, 509

pomoc, 35, 38, 41, 447, 484do skryptu, 271komentarzowa, 281techniczna, 484

porównanie szybko ci dzia ania, 424potok, 423potwierdzenie wykonania polece , 31powtarzalno , 218poziom

drugi ledzenia, 533pierwszy ledzenia, 532zasady wykonywania, 146

praca zdalna, 94, 95, 573proces DSC, 614profil, 144, 148–152

AllUsersAllHosts, 150CurrentUserAllHosts, 150CurrentUserCurrentHost, 149, 150

program, Patrz narz dzieprogramowanie, 234programy do kontroli wersji, 496projektowanie

modu ów, 301skryptów, 159, 229, 231

protokó XMPP, 143Prox Boe, 324przechowywanie

dzienników, 513informacji, 522skryptów, 492tekstu, 509

przechwytywanie b dów, 391przedrostek ! CALL, 534przegl danie

danych, 421tablicy, 128

przegl darka Internet Explorer, 465przekazywanie

opcji do polece , 34warto ci, 330wielu parametrów, 129

przekierowanie, 219prze cznik

bypass, 462, 468debug, 526, 528forceDiscover, 67-UseTransaction, 178whatif, 438wrap, 566

przep yw pracy, workflow, 94, 483, 597przes anianie istniej cych polece , 126przestrzenie nazw WMI, 45, 168przestrze nazw, 167, 374przetwarzanie

a cuchów, 99tokenów, 456

przyciski metody popup, 139przypisywanie

warto ci domy lnej, 380zmiennych globalnych, 374

przywracanie danych, 492pulpit zdalny, 201punkt kontrolny, 606

na poziomie aktywno ci, 607na poziomie przep ywu pracy, 607

punkt wstrzymania, 547–550PWA, PowerShell Web Access, 43

RRahim Ibrahim Abdul, 417, 430, 432raport, 415, 432, 457reagowanie na punkty wstrzymania, 555regu a zabezpiecze , 393rejestr, 91, 178, 222, 465, 520rejestr b dów, 405rejestrowanie

danych, 442, 508, 509wyników, 499, 500zdarze , 519

repozytorium, 492Riedel Alexander, 496Ring Jan Egil, 37rodzaje b dów, 391rola FSMO, 65, 70role u ytkownika, 107Rottenberg Hal, 142rozwi zywanie problemów, 504, 523rozwijanie nazw, 567równoleg e wykonywanie polece , 599

Kup książkę Poleć książkę

Page 56: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

640 Windows PowerShell. Najlepsze praktyki

RPC, remote procedure call, 95RSAT, Remote Server Administration Tools, 65rzutowanie warto ci parametrów, 451

SSajid Osama, 560scenariusz u ywania, 379Schneider Andy, 546Schwinn Dave, 369SDK, Software Development Kit, 185sekcja

Function, 416robocza skryptu, 279

Shell Brandoe, 242Siddaway Richard, 468Siepser Gary, 338, 390sk adnia podstawowa, 411sk adowe

klasy SecurityIdentifier, 100klasy System.Math, 183–185klasy Win32_LogicalDisk, 245–247obiektu Shell.Application, 188, 190obiektu WshShell, 137

skompilowane pliki pomocy, 464skrót, hash, 353skrypt

AddOne1.ps1, 372AddTwoError.ps1, 543, 544BackUpFiles.ps1, 272BadScript.ps1, 535CheckForPdfAndCreateMarker.ps1, 288CheckNumberRange.ps1, 343CheckProviderThenQuery.ps1, 398CmdLineArgumentsTime.ps1, 292ConversionFunctions.ps1, 153, 241ConvertToFahrenheit_Include.ps1, 154, 291ConvertUseFunctions.ps1, 154Copy-Modules.ps1, 312, 321CreateCab.ps1, 187, 188CreateCab2.ps1, 194CreateFileNameFromDate.ps1, 272CreateRegistryKey.ps1, 521, 531, 534CreateScriptingRegistryKey.ps1, 223DebugRemoteWMISession.ps1, 526DefragAnalysisReport.ps1, 220DemoConsoleBeep.ps1, 293DemoTrapSystemException.ps1, 251DemoUserConfig.ps1, 619DisplayProcessor.ps1, 485

DotSourceScripts.ps1, 258ExpandCab.ps1, 191ExportBiosToCsv.ps1, 158FilterHasMessage.ps1, 266FilterToday.ps1, 267FindDisabledUserAccounts.ps1, 287FindLargeDocs.ps1, 255FunctionGetIPDemo.ps1, 258GetAdminFunction.ps1, 110Get-AllowedComputer.ps1, 387, 388Get-AllowedComputerAndProperty.ps1, 389Get-Bios.ps1, 329, 332, 389Get-BiosArray1.ps1, 331Get-Biosarray2.ps1, 331Get-BiosInformation.ps1, 380Get-BiosInformationDefaultParam.ps1, 381GetBiosMandatoryParameter.ps1, 337Get-BiosMandatoryParameterWithAlias.ps1,

341Get-BiosParam.ps1, 336Get-ChoiceFunction.ps1, 383GetCmdletsWithMoreThanTwoAliases.ps1,

122GetCommentsFromScript.ps1, 452GetComputerInfoWorkFlow.ps1, 601Get-ComputerWmiInformation.ps1, 419Get-CountryByIP.ps1, 510, 511Get-DiskSpace.ps1, 247GetDrivesCheckAllowedValue.ps1, 408, 409GetDrivesValidRange.ps1, 410Get-EnabledBreakpointsFunction.ps1, 557Get-EventLogData.ps1, 605Get-IPObjectDefaultEnabled.ps1, 259Get-MemberOf.ps1, 103Get-ModifidFiles.ps1, 421, 422Get-ModifidFilesUsePipeline.ps1, 423–425Get-MoreHelpWithAlias.ps1, 127Get-OSVersion.ps1, 115Get-PowerShellRequirements.ps1, 26Get-PsVersionNet.ps1, 92Get-PsVersionRegistry.ps1, 89Get-PSVersionRemoting.ps1, 94Get-PsVersionWmi.ps1, 92Get-PSVersionWorkflw.ps1, 93GetRandomObject.ps1, 159GetRunningService.ps1, 117, 118Get-ScriptHelp.ps1, 447Get-ScriptVersion.ps1, 493GetServicesInSvchost.ps1, 294GetSetieStartPage.ps1, 276

Kup książkę Poleć książkę

Page 57: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

SKOROWIDZ 641

Get-ValidWmiClassFunction.ps1, 404, 405Get-Version.ps1, 165get-VM.ps1, 395Get-WindowsEdition.ps1, 495Get-WinFeatureServersWorkflow.ps1, 609Get-WmiClass.ps1, 130Get-WmiClass2.ps1, 132Get-WmiClass2WithAlias.ps1, 133GetWmiClassesFunction1.ps1, 283Get-WmiProviderFunction.ps1, 402Get-WmiProviders.ps1, 172InLineGetIPDemo.ps1, 257InternetScript.ps1, 464LogChartProcessWorkingSet.ps1, 505LogonScriptWithLogging.ps1, 501MandatoryParameter.ps1, 381MeasureAddOneFilter.ps1, 264MeasureAddOneFunction.ps1, 264My-Function.ps1, 528New-LocalGroupFunction.ps1, 438New-TempFile.ps1, 513, 514ParseScriptCommands.ps1, 455–457PingComputers.ps1, 344PingIpAddress.ps1, 345PinToStartAndTaskBar.ps1, 33PromptForChoice.ps1, 358RecursiveWMINameSpaceListing.ps1, 169RemoteWMISessionNoDebug.ps1, 526RemoveUserFromGroup.ps1, 76RequireModuleVersion.ps1, 395RequiresModule.ps1, 118SaveWmiInformationAsDocument.ps1, 225ScriptFolderConfi.ps1, 616ScriptFolderVersion.ps1, 617ScriptFolderVersionUnzip.ps1, 618ScriptFolderVersionUnzipCreateUsersAnd

Profie.ps1, 622SearchAllComputersInDomain.ps1, 295SearchForWordImages.ps1, 289Set-LocalGroupFunction.ps1, 436Set-SaverTimeOut.ps1, 181SetScriptExecutionPolicy.vbs, 467SetServicesConfig.ps1, 623SimpleTypingError.ps1, 542SimpleTypingErrorNotReported.ps1, 542skrypt StringArgsArray.ps1, 332skrypt StringArgsArray2.ps1, 332skrypt

Switch_DebugRemoteWMISession.ps1,526, 527

skrypt TestAdminCreateEventLog.ps1, 518skrypt Test-ComputerPath.ps1, 384skrypt Test-IsAdminFunction.ps1, 108, 394Test-IsInRole.ps1, 110Test-Script.ps1, 467Test-ScriptHarness.ps1, 411–415Test-TwoScripts.ps1, 426, 429TranscriptBios.ps1, 441, 442UpdatehelptrackErrors.ps1, 37UseADCmdletsToCreateOuComputerAnd

User.ps1, 75UseGetMemberOf.ps1, 103, 106ValidateRange.ps1, 343WriteBiosInfoToWord.ps1, 290

skrypty, 157analiza sk adniowa, 455brak obs ugi aplikacji, 191brak obs ugi COM, 185brak obs ugi platformy, 182brak obs ugi polece , 157brak obs ugi WMI, 167braki, 292diagnostyczne, 483dokumentowanie, 447kontrola wersji, 489ko czenie pracy, 393korzy ci stosowania, 217krok po kroku, 536, 541lista warunków u ywania, 291logowania, 475–480obs uga b dów, 379opisywanie struktur, 295pomocy technicznej, 484porównanie szybko ci dzia ania, 424powody napisania, 293projektowanie, 231projektowanie pomocy, 271raportuj ce, 483rozwi zywanie problemów, 523samodzielne, 483skomplikowane konstruktory, 159stosowanie, 197testowanie, 411testowanie wydajno ci, 421uprawnienia, 393uruchamianie, 417, 475wdra anie, 459zasady wykonywania, 461zdolno do adaptacji, 223

Kup książkę Poleć książkę

Page 58: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

642 Windows PowerShell. Najlepsze praktyki

s owo kluczoweConfiguration, 614constant, 125DependsOn, 618Filter, 255Function, 126, 192, 232, 239, 244Mandatory, 381Parallel, 605param, 526read-only, 124Workflow, 598

Snover Jeffrey, 95, 107, 116spójno wyników, 243sprawdzanie

konfiguracji w z a, 625poprawno ci danych, 342warto ci granicznych, 408wersji platformy .NET, 112wersji systemu, 165zale no ci modu ów, 314zawarto ci tablicy, 385sprawdzenie wersji systemu, 165

Stahler Wes, 479standard WS-Management Protocol, 583standardowe

czasowniki, 232konwencje nazewnicze, 158

status us ugi bits, 157Stewart Bill, 406stosowanie znaków specjalnych, 212Stranger Stefan, 221strefa internetowa, 463struktura komentarza, 275struktury zagnie d one, 295strumie

Debug, 393, 509Error, 509Success, 509Verbose, 509Warning, 509

strza ka przekierowuj ca, 366sygnatura metody popup, 138symbol |, 126symbole wieloznaczne, 214, 565system

zabezpiecze typów, 451ETS, 143operacyjny, 113, 115

szacowanie wydajno ci, 426

sztuczki, 163szukanie b dów, 415szyfrowanie plików, 349

cie ka, 91, 141do folderu, 616do funkcji, 127do konfiguracji, 616lokalna, 205UNC, 198, 200, 513

ledzeniewykonywania skryptu, 531zmian, 491, 495

rodowiskoskryptowe, 121Windows PowerShell ISE, 561, 563

TTabdilio Mark, 267tablica, 128

$Error, 252$servers, 388

techniki obs ugi b dów, 406technologia

ADO, 208Adobe Flash, 433DCOM, 95Microsoft Silverlight, 433RPC, 95WMI, 95, 176

testowanieaplikacji graficznych, 432funkcji, 435interfejsów API, 430interfejsów u ytkownika, 433podstawowej sk adni, 411skryptów, 411, 440us ug sieciowych, 430w asno ci, 387wydajno ci skryptów, 421, 425zaawansowane, 443

token, 455transakcja, 178Truman Jeff, 33tryb

interaktywny, 584Set-PSDebug -strict, 542cis y, 542

Kup książkę Poleć książkę

Page 59: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

SKOROWIDZ 643

Tsaltas Deae, 273tworzenie

aliasów, 122aliasów nazw funkcji, 127aliasów sta ych, 125aliasu parametru, 341biblioteki funkcji, 153dysków PowerShell, 141dysku modu u, 313dziennika zdarze , 519dzienników, 431, 441, 515egzemplarzy klas, 454fragmentów kodu, 569funkcji, 125grup, 621grup zabezpiecze , 75jednostki organizacyjnej, 74jednowierszowych komentarzy, 280kluczy rejestru, 222komentarzy wielowierszowych, 279konta komputera, 74modu u, 319obowi zkowego parametru, 337parametrów obowi zkowych, 381plików cabinet, 185, 192pliku konfiguracji, 481pliku MOF, 617profilu, 148, 150punktów kontrolnych, 606punktu wstrzymania, 553cie ki, 135

tablicy, 386tablicy skrótów, 530u ytkownika, 77, 621zada , 590zdalnej sesji, 586zmiennych, 134

Tyler Jonathan, 111typy danych, 403

UUAC, User Account Control, 389udzia y UNC, 465, 525umys nadrz dny, 308UNC, Universal Naming Convention, 198,

465, 513unikanie wprowadzania b dów, 490UPN, User Principal Name, 212upraszczanie kodu, 425

uprawnienia, 389, 481administracyjne, 109, 394, 466skryptu, 393

uruchamianieprzep ywu pracy, 599skryptu, 417, 475zadania, 593

us ugaActive Directory, 73AeLookupSvc, 206AWDS, 62bits, 157DSC, 613SkyDrive, 143, 144Windows Update, 221WinRM, 583, 585WMI, 45WSMAN, 580

us ugidomenowe, 82sieciowe REST, 431sieciowe SOAP, 431

ustalanie punktów kontrolnychdla przep ywów pracy, 606

ustawianiepunktu wstrzymania, 550

na poleceniu, 552na wierszu kodu, 547na zmiennej, 549

zabezpiecze , 468zale no ci, 618

ustawienia pulpitu, 176ustawienie

AllSigned, 468Bypass, 472RemoteSigned, 469, 471Restricted, 470Undefined, 472Unrestricted, 468, 471

usuwanieb dów wykonawczych, 527fragmentów kodu, 570niepotrzebnych informacji, 51punktów wstrzymania, 559usterek, 491

u ytkownik, 77u ywanie

atrybutów parametrów, 339CIM, 625dzienników, 504, 519

Kup książkę Poleć książkę

Page 60: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

644 Windows PowerShell. Najlepsze praktyki

u ywaniefiltrów, 266fragmentów kodu, 569parametrów standardowych, 434parsera AST, 455pomocy komentarzowej, 281potoku, 423profilu, 151prze cznika debug, 528wielu argumentów parametrów, 347

VVSS, Visual SourceSafe, 496

WWalker Jason, 170warto ci

domy lne parametru, 380graniczne, 408logiczne, 388metody popup, 140parametrów instrukcji #Requires, 394parametru, 409reprezentuj ce ikony, 141WMI, 91wyliczeniowe, 404

wartoContinue, 404Inquire, 404null, 400, 501SilentlyContinue, 404Stop, 404

WASP, Web Application Services Platform, 434WbemTest, 396wczytywanie danych, 328wdra anie

konsoli, 26lokalne, 482pakietu MSI, 482skryptu, 459zasady wykonywania, 465, 469

wersjamodu u, 395platformy .NET, 111systemu operacyjnego, 115, 165, 235

weryfikowanie danych, 385w ze , node, 614wielokrotne wykorzystanie kodu, 224, 240

wielowierszowe znaczniki komentarzowe, 279wiersz polece , 28, 214, 328Wilhite Brian, 46, 64, 202Willett Andrew, 515Wilson Ed, 627Windows PowerShell ISE, 563Windows Server 2012 R2, 583WinRM, Windows Remote Management, 583w asno ci

klasy __provider, 398, 399klasy InvocationInfo, 180obiektu ScriptInfo, 181statyczne, 182u ytkownika, 83

w asno$filepath, 220CLSID, 400ProductType, 165ScreenSaverTimeout, 178ScriptName, 223

w czaniekonsoli, 32obs ugi skryptów, 146, 565punktów wstrzymania, 558trybu cis ego, 542debugera, 550

WMI, Windows Management Instrumentation,45, 88, 167, 235

Wouters Jeff, 84wprowadzanie danych do zmiennej globalnej,

372WSH, Windows Script Host, 406, 496wstrzymywanie dzia ania skryptu, 558wybór

profilu, 148zasady wykonywania, 461

wydajno skryptów, 421, 426, 432wygaszacz ekranu, 177, 178wyj tek ParameterBindingException, 334wyj tki

typu CommandNotFoundExceptions, 392w zaporze systemu, 202

wykonywanieaktywno ci, 610pojedynczego polecenia, 588przep ywu pracy, 605, 610skryptu, 535, 539–541

wykrywaniebie cego u ytkownika, 97roli u ytkownika, 107

Kup książkę Poleć książkę

Page 61: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

SKOROWIDZ 645

wy czanie punktów wstrzymania, 558wymagania

dotycz ceaplikacji, 117bezpiecze stwa, 96modu ów, 118, 395systemu operacyjnego, 113uprawnie administratora, 394wersji .NET, 111

przep ywów pracy, 598strukturalne, 96systemowe, 18

wynikaudytu, 477testu wydajno ci, 425

wysy aniedanych dziennika, 516plików tekstowych, 516wyników

do pliku, 366, 367na adres e-mail, 371na ekran, 360, 367z funkcji, 371

zapyta , 208wyszukiwanie

danych, 267egzemplarzy klas, 49polece , 159, 565

wyszukiwarka Bing.com, 433wy wietlanie

b dów, 500informacji, 42monitu, 352punktów wstrzymania, 556sk adni polecenia, 568w asno ci u ytkownika, 83wyników, 431

wywo aniefunkcji, 383skryptu logowania, 480

YYoder Jason A., 217

Zzabezpieczenia przegl darki, 464zachowanie zgodno ci, 491

zadania, 573, 590zadanie Job10, 590zakres

CurrentUser, 472grupy, 75LocalMachine, 472Process, 471zasady wykonywania, 147

zalety przep ywów pracy, 611zapisywanie

b dów, 517danych, 421

w dzienniku zdarze , 517w pliku, 513w pliku tekstowym, 499w rejestrze, 520

has a, 620w pliku tekstowym, 350w rejestrze, 351w skrypcie, 349w us ugach domenowych, 351

nieprzechwyconych wyników, 262zapytania, 208zapytania LDAP, 208zapytanie Get-EventLog, 477zarz dzanie u ytkownikami, 74zasady

biznesowe, 528grupy, 469, 476wykonywania skryptów, 146, 461, 471

zasoby WMI, 167zastosowania skryptów, 87zastosowanie

akceleratora [ADSISearcher], 209komentarzy jednowierszowych, 294modu u Active Directory, 63

zatrzymywanie us ug, 175zatwierdzanie polece , 30zawieszenie polecenia, 31zdalna sesja, 586zdalne

interaktywne sesje, 96komputery, 94zarz dzanie systemem, 583

zdalny pulpit, 201zdobywanie informacji, 38zestaw s ów kluczowych, 296zgodno wersji, 160zmienianie nazw lokalizacji, 73

Kup książkę Poleć książkę

Page 62: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized

646 Windows PowerShell. Najlepsze praktyki

zmienna, 134$args, 129, 328–335$baseLne, 428$bios, 368$changedFiles, 425$clsID, 401$computer, 203, 335$credential, 355$debug, 191$DebugPreference, 179, 194, 434, 526$driveData, 247$error, 251, 333, 413, 509$errorActionPreference, 404–407, 412, 504$etime, 414$files, 422$hklm, 91, 92$InputObject, 514$isAdmin, 108$key, 92$LastExitCode, 509$localappdata, 134$makecab, 186$MaximumErrorCount, 509$modulePath, 311$myInvocation.InvocationName, 441$noun, 385$null, 424$number, 372$numberOfTests, 428$outpath, 77$outputPath, 277$path, 91, 239, 412$ping, 369$pinToStart, 32$pinToTaskBar, 32$profile, 150$providerName, 399$proxy, 510$PSVersionTable, 93$report, 412$return, 139$sourceCab, 191$startTime, 413, 504$tmpFile, 514$trace, 505$value, 92$verbosePreference, 400

$wshShell, 91$wuLog, 134docs, 136path, 286

zmienne globalne, 372znacznik

[ordered], 530czasu, 442description, 510example, 510inputs, 510komentarzowy, 279notes, 510outputs, 510skryptu, 155specjalny pomocy, 283synopsis, 510Zone.Identifier, 464

znacznikikomentarzy wielowierszowych, 280parametrów, 337pomocy funkcji, 282, 283

znajdowaniedost pnych komputerów, 384kont u ytkowników, 78metod, 47modu ów, 302nieu ywanych kont u ytkowników, 81wy czonych u ytkowników, 80

znak#, 419@, 192dolara, 247, 329potoku (|), 295't, 259

znakispecjalne, 105specjalne filtrów, 211, 212

zwracanie danych, 358

ród ab dów wykonawczych, 526informacji, 43, 57, 85, 119, 156, 195, 227, 268,

300, 325, 377, 410, 445, 457, 474, 487, 497,522, 561, 571, 596, 611, 625

Kup książkę Poleć książkę

Page 64: Tytuł oryginału: Windows PowerShell Best Practices · 2021. 2. 11. · Tytuł oryginału: Windows PowerShell Best Practices Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-0478-9 Authorized