Holger Schwichtenberg
Windows PowerShell 4.0
Das Praxisbuch
Inhalt
7
Vorwort zur vierten Auflage 2014
21
Wer bin ich?
21
Wer sind Sie?
21
Was ist neu in diesem Buch?
22
Wem ist zu danken?
22
Woher bekommen Sie die Beispiele aus diesem Buch?
23
Wo kann ich mich schulen oder beraten lassen?
23
Zum Schluss des Vorworts .....
23
Über den Autor Dr. Holger Schwichtenberg
25
Über den Co-Autor Peter Monadjemi
26
1 Erste Schritte mit der Windows PowerShell
29
1.1 Was ist die Windows PowerShell?
29
1.2 Geschichte der Windows PowerShell
30
1.3 Motivation zur Windows PowerShell
30
1.4 Betriebssysteme mit vorinstallierter PowerShell
33
1.5 PowerShell herunterladen und installieren auf anderen Betriebssystemen
35
1.6 Die Windows PowerShell testen
38
1.7 Woher kommen die Commandlets?
43
1.8 PowerShell Community Extensions (PSCX) herunterladen und installieren
44
1.9 Den PowerShell-Editor „ISE“ verwenden
45
2 Architektur der Windows PowerShell
49
3 Einzelbefehle der PowerShell
53
3.1 Commandlets
53
3.2 Aliase
61
3.3 Ausdrücke
68
3.4 Externe Befehle
69
3.5 Dateinamen
70
4 Hilfefunktionen
73
4.1 Auflisten der verfügbaren Befehle
73
4.2 Erläuterungen zu den Befehlen
76
4.3 Hilfe zu Parametern
77
4.4 Hilfe mit Show-Command
77
4.5 Hilfefenster
78
4.6 Aktualisieren der Hilfedateien
79
4.7 Online-Hilfe
81
4.8 Dokumentation der .NET-Klassen
81
5 Objektorientiertes Pipelining
85
5.1 Pipeline-Operator
85
5.2 .NET-Objekte in der Pipeline
86
5.3 Pipeline Processor
88
5.4 Pipelining von Parametern
89
5.5 Pipelining von klassischen Befehlen
91
5.6 Anzahl der Objekte in der Pipeline
92
5.7 Zugriff auf einzelne Objekte aus einer Menge
92
5.8 Zugriff auf einzelne Werte in einem Objekt
94
5.9 Methoden ausführen
95
5.10 Analyse des Pipeline-Inhalts
97
5.11 Filtern
108
5.12 Zusammenfassung von Pipeline-Inhalten
111
5.13 „Kastrierung“ von Objekten in der Pipeline
111
5.14 Sortieren
112
5.15 Duplikate entfernen
113
5.16 Gruppierung
114
5.17 Berechnungen
115
5.18 Zwischenschritte in der Pipeline mit Variablen
116
5.19 Verzweigungen in der Pipeline
117
5.20 Vergleiche zwischen Objekten
119
5.21 Praxisbeispiele
119
6 PowerShell-Skripte
121
6.1 Skriptdateien
121
6.2 Start eines Skripts
123
6.3 Aliase für Skripte verwenden
124
6.4 Parameter für Skripte
125
6.5 Skripte dauerhaft einbinden (Dot Sourcing)
126
6.6 Sicherheitsfunktionen für PowerShell-Skripte
127
6.7 Skripte anhalten
130
7 PowerShell-Skriptsprache
131
7.1 Hilfe zur PowerShell-Skriptsprache
131
7.2 Befehlstrennung
132
7.3 Kommentare
132
7.4 Variablen
133
7.5 Variablenbedingungen
139
7.6 Zahlen
140
7.7 Zeichenketten
142
7.8 Reguläre Ausdrücke
147
7.9 Datum und Uhrzeit
154
7.10 Arrays und assoziative Arrays (Hash-Tabelle)
155
7.11 Operatoren
158
7.12 Überblick über die Kontrollkonstrukte
160
7.13 Schleifen
160
7.14 Bedingungen
165
7.15 Unterroutinen (Prozedur/Funktionen)
167
7.16 Eingebaute Funktionen
173
7.17 Fehlerbehandlung
173
8 Ausgaben
181
8.1 Ausgabe-Commandlets
181
8.2 Out-GridView
183
8.3 Standardausgabe
185
8.4 Einschränkung der Ausgabe
187
8.5 Seitenweise Ausgabe
187
8.6 Ausgabe einzelner Werte
188
8.7 Details zum Ausgabeoperator
190
8.8 Benutzerdefinierte Tabellenformatierung
193
8.9 Ausgabe von Methodenergebnissen und Unterobjekten in Pipelines
194
8.10 Ausgabe von Methodenergebnissen und Unterobjekten in Zeichenketten
194
8.11 Unterdrückung der Ausgabe
195
8.12 Ausgaben an Drucker
196
8.13 Ausgaben in Dateien
196
8.14 Umleitungen (Redirection)
197
9 Benutzereingaben
199
9.1 Read-Host
199
9.2 Grafischer Eingabedialog
200
9.3 Dialogfenster
200
9.4 Authentifizierungsdialog
201
10 Das PowerShell-Navigationsmodell
203
10.1 Einführungsbeispiel: Navigation in der Registrierungsdatenbank
203
10.2 Provider und Laufwerke
204
10.3 Navigationsbefehle
206
10.4 Pfadangaben
207
10.5 Beispiel
209
10.6 Eigene Laufwerke definieren
210
11 PowerShell-Werkzeuge
211
11.1 PowerShell-Standardkonsole
211
11.2 PowerShell Integrated Scripting Environment (ISE)
216
11.3 CIM Explorer for PowerShell ISE
222
11.4 PowerShell Web Access (PSWA)
223
11.5 PowerShellPlus
229
11.6 PoshConsole
232
11.7 PowerGUI
233
11.8 PowerShell Analyzer
234
11.9 PrimalScript
235
11.10 PowerShell Help
237
11.11 PowerShell Help Reader
237
11.12 PowerTab
238
11.13 NuGet Package Manager
238
11.14 PowerShell Tools for Visual Studio
239
11.15 PowerShell Remoting
240
11.16 Vergleich der Skripteditoren
240
12 Fernausführung (Remoting)
245
12.1 Fernabfrage ohne WS-Management
246
12.2 Anforderungen
247
12.3 Rechte für Fernaufrufe
248
12.4 Einrichten von WinRM
249
12.5 Überblick über die Fernausführungs-Commandlets
251
12.6 Interaktive Fernverbindungen im Telnet-Stil
251
12.7 Fernausführung von Befehlen
252
12.8 Fernausführung von Skripten
256
12.9 Ausführung auf mehreren Computern
257
12.10 Sitzungen
258
12.11 Zugriff auf entfernte Computer außerhalb der eigenen Domäne
262
12.12 Verwaltung des WS-Management-Dienstes
266
13 Verwendung von .NET-Klassen
269
13.1 Microsoft Developer Network (MSDN)
269
13.2 Erzeugen von Instanzen
270
13.3 Parameterbehaftete Konstruktoren
271
13.4 Initialisierung von Objekten
272
13.5 Nutzung von Attributen und Methoden
273
13.6 Statische Mitglieder in .NET-Klassen und statische .NET-Klassen
275
13.7 Zugriff auf bestehende Objekte
277
13.8 Laden von Assemblies
278
13.9 Objektanalyse
279
13.10 Auflistungen (Enumerationen)
280
13.11 Verknüpfen von Aufzählungswerten
281
14 Verwendung von COM-Klassen
283
14.1 Erzeugen von Instanzen
283
14.2 Nutzung von Attributen und Methoden
284
14.3 Holen bestehender Instanzen
285
15 Zugriff auf die Windows Management Instrumentation (WMI)
287
15.1 Einführung in WMI
287
15.2 WMI in der Windows PowerShell
313
15.3 Abruf von WMI-Objektmengen
314
15.4 Fernzugriffe
315
15.5 Filtern und Abfragen
315
15.6 Liste aller WMI-Klassen
319
15.7 Hintergrundwissen: WMI-Klassenprojektion mit dem PowerShell-WMI-Objektadapter
320
15.8 Beschränkung der Ausgabeliste bei WMI-Objekten
323
15.9 Zugriff auf einzelne Mitglieder von WMI-Klassen
325
15.10 Werte setzen in WMI-Objekten
325
15.11 Umgang mit WMI-Datumsangaben
327
15.12 Methodenaufrufe
328
15.13 Neue WMI-Instanzen erzeugen
329
15.14 Instanzen entfernen
330
15.15 Commandlet Definition XML-Datei (CDXML)
331
16 Dynamische Objekte
333
16.1 Erweitern bestehender Objekte
333
16.2 Komplett dynamische Objekte
335
17 Einbinden von C# und VB.NET
337
18 Win32-API-Aufrufe
339
19 Fehlersuche
343
19.1 Detailinformationen
343
19.2 Einzelschrittmodus
344
19.3 Zeitmessung
345
19.4 Ablaufverfolgung
346
19.5 Kommandozeilenbasiertes Script-Debugging
346
20 Transaktionen
349
20.1 Commandlets für Transaktionen
349
20.2 Start und Ende einer Transaktion
350
20.3 Zurücksetzen der Transaktion
351
20.4 Mehrere Transaktionen
352
21 Hintergrundaufträge („Jobs“)
353
21.1 Voraussetzungen
353
21.2 Architektur
354
21.3 Starten eines Hintergrundauftrags
354
21.4 Hintergrundaufträge abfragen
355
21.5 Warten auf einen Hintergrundauftrag
356
21.6 Abbrechen und Löschen von Aufträgen
356
21.7 Analyse von Fehlermeldungen
357
21.8 Fernausführung von Hintergrundaufträgen
357
22 Geplante Aufgaben und zeitgesteuerte Jobs
359
22.1 Geplante Aufgaben (Scheduled Tasks)
359
22.2 Zeitgesteuerte Jobs
363
23 PowerShell-Workflows
369
23.1 Ein erstes Beispiel
369
23.2 Unterschiede zu einer Function bzw. einem Skript
374
23.3 Einschränkungen bei Workflows
374
23.4 Workflows in der Praxis
376
23.5 Workflows in Visual Studio erstellen
383
24 Ereignissystem
401
24.1 WMI-Ereignisse
401
24.2 WMI-Ereignisabfragen
401
24.3 WMI-Ereignisse ab PowerShell 1.0
403
24.4 Registrieren von WMI-Ereignisquellen seit PowerShell 2.0
404
24.5 Auslesen der Ereignisliste
405
24.6 Reagieren auf Ereignisse
407
24.7 WMI-Ereignisse ab PowerShell-Version 3.0
409
24.8 Registrieren von .NET-Ereignissen
409
24.9 Erzeugen von Ereignissen
410
25 Datenbereiche und Datendateien
413
25.1 Datenbereiche
413
25.2 Datendateien
415
25.3 Mehrsprachigkeit/Lokalisierung
416
26 Desired State Configuration (DSC)
419
26.1 Grundprinzipien
420
26.2 Ressourcen
420
26.3 Eigenschaften eines Ressourcentyps
421
26.4 Aufbau einer DSC-Datei
421
26.5 Ein erstes DSC-Beispiel
422
26.6 Anwendung einer DSC-Datei
422
26.7 Parameter für DSC-Dateien
424
26.8 Verfügbare DSC-Ressourcentypen
425
26.9 Commandlets für die Arbeit mit DSC
427
26.10 DSC-Interna
427
26.11 DSC-Praxisbeispiel 1: IIS installieren
428
26.12 DSC-Praxisbeispiel 2: Software installieren
429
26.13 DSC-Praxisbeispiel 3: Software deinstallieren
431
27 PowerShell-Snap-Ins
433
27.1 Einbinden von Snap-Ins
433
27.2 Liste der Commandlets
437
27.3 Doppeldeutige Namen
438
28 PowerShell-Module
439
28.1 Überblick über die Commandlets
439
28.2 Modularchitektur
440
28.3 Module installieren
441
28.4 Auflisten der verfügbaren Module
441
28.5 Importieren von Modulen
443
28.6 Entfernen von Modulen
446
29 Ausgewählte PowerShell-Erweiterungen
447
29.1 PowerShell-Module in Windows 7 und Windows Server 2008 R2
447
29.2 PowerShell-Module in Windows 8.x und Windows Server 2012/2012 R2
449
29.3 BITSTransfer
453
29.4 Windows Server Backup
454
29.5 PowerShell Diagnostics
454
29.6 Windows PowerShell Community-Extensions
455
29.7 PowerShellPack
459
29.8 www.IT-Visions.de PowerShellExtensions
460
29.9 Quest Management Shell for Active Directory
461
29.10 Microsoft Exchange Server
462
29.11 System Center Virtual MachineManager
463
29.12 PowerShell Management Library for Hyper-V (pshyperv)
464
29.13 Powershell Outlook Account Manager
465
29.14 PowerShell Configurator (PSConfig)
465
29.15 Weitere Erweiterungen
466
30 Tipps und Tricks zur PowerShell
467
30.1 Befehlsgeschichte
467
30.2 System- und Hostinformationen
468
30.3 Alle Anzeigen löschen
469
30.4 Anpassen der Eingabeaufforderung (Prompt)
469
30.5 Profileinstellungen für die PowerShell-Konsole
470
30.6 PowerShell als Gruppenrichtlinien-Skripte
474
30.7 Einblicke in die Interna der Pipeline-Verarbeitung
477
31 Dateisystem
481
31.1 Laufwerke
482
31.2 Ordnerinhalte
486
31.3 Kurznamen
488
31.4 Dateisystemoperationen
488
31.5 Dateieigenschaften lesen
489
31.6 Datei-Hash
490
31.7 Finden von Duplikaten
490
31.8 Dateieigenschaften verändern
493
31.9 Verknüpfungen im Dateisystem
495
31.10 Komprimierung
498
31.11 Dateisystemfreigaben
500
31.12 Überwachung des Dateisystems
509
32 Festplattenverschlüsselung mit Bitlocker
511
32.1 Übersicht über das BitLocker-Modul
512
32.2 Verschlüsseln eines Laufwerks
513
33 Dokumente
515
33.1 Textdateien
515
33.2 Binärdateien
516
33.3 CSV-Dateien
516
33.4 INI-Dateien
518
33.5 XML-Dateien
519
33.6 HTML-Dateien
527
34 Datenbanken
529
34.1 ADO.NET-Grundlagen
529
34.2 Beispieldatenbank
535
34.3 Datenzugriff mit den Bordmitteln der PowerShell
536
34.4 Datenzugriff mit den PowerShell-Erweiterungen
547
34.5 Datenbankzugriff mit SQLPS
550
34.6 Datenbankzugriff mit SQLPSX
550
35 Microsoft SQL Server-Administration
551
35.1 PowerShell-Integration im SQL Server Management Studio
552
35.2 SQL-Server-Laufwerk „SQLSERVER:“
553
35.3 Die SQLPS-Commandlets
556
35.4 Die SQL Server Management Objects (SMO)
558
35.5 SQLPSX
561
35.6 Microsoft SQL Server-Administration mit der PowerShell in der Praxis
569
36 ODBC-Datenquellen
575
36.1 ODBC-Treiber und -Datenquellen auflisten
576
36.2 Anlegen einer ODBC-Datenquelle
577
36.3 Zugriff auf eine ODBC-Datenquelle
578
37 Registrierungsdatenbank (Registry)
581
37.1 Schlüssel auslesen
581
37.2 Schlüssel anlegen und löschen
582
37.3 Laufwerke definieren
582
37.4 Werte anlegen und löschen
583
37.5 Werte auslesen
584
37.6 Praxisbeispiel
584
38 Computerverwaltung
587
38.1 Computerinformationen
587
38.2 Computername und Domäne
589
38.3 Herunterfahren und Neustarten
590
38.4 Wiederherstellungspunkte verwalten
590
39 Hardwareverwaltung
593
39.1 Hardwarebausteine
593
39.2 Druckerverwaltung (ältere Betriebssysteme)
595
39.3 Druckerverwaltung (Windows 8.x und Windows Server 2012/2012 R2)
596
40 Softwareverwaltung
599
40.1 Softwareinventarisierung
599
40.2 Installation von Anwendungen
602
40.3 Deinstallation von Anwendungen
603
40.4 Praxisbeispiel: Installationstest
603
40.5 Versionsnummer ermitteln
604
40.6 Servermanager
605
40.7 Softwareeinschränkungen mit dem PowerShell-Modul „AppLocker“
616
41 Prozessverwaltung
623
41.1 Prozesse auflisten
623
41.2 Prozesse starten
624
41.3 Prozesse beenden
626
41.4 Warten auf das Beenden einer Anwendung
626
42 Systemdienste
629
42.1 Dienste auflisten
629
42.2 Dienstzustand ändern
631
42.3 Diensteigenschaften ändern
632
43 Netzwerk
633
43.1 Netzwerkkonfiguration (ältere Betriebssysteme)
633
43.2 Netzwerkkonfiguration (ab Windows 8.x und Windows Server 2012 (inkl. R2)
635
43.3 DNS-Client-Konfiguration
637
43.4 DNS-Namensauflösung
641
43.5 Erreichbarkeit prüfen (Ping)
642
43.6 Windows Firewall
644
43.7 E-Mails senden (SMTP)
650
43.8 Abruf von Daten von einem HTTP-Server
652
43.9 Aufrufe von SOAP-Webdiensten
653
44 Ereignisprotokolle
657
44.1 Protokolleinträge auslesen
657
44.2 Ereignisprotokolle erzeugen
659
44.3 Protokolleinträge erzeugen
659
44.4 Protokollgröße festlegen
659
44.5 Protokolleinträge löschen
659
45 Leistungsdaten
661
45.1 Zugriff auf Leistungsindikatoren über WMI
661
45.2 Get-Counter
662
46 Sicherheitseinstellungen
665
46.1 Grundlagen
665
46.2 Zugriffsrechtelisten auslesen
670
46.3 Einzelne Rechteeinträge auslesen
672
46.4 Besitzer auslesen
673
46.5 Benutzer und SID
673
46.6 Hinzufügen eines Rechteeintrags zu einer Zugriffsrechteliste
677
46.7 Entfernen eines Rechteeintrags aus einer Zugriffsrechteliste
679
46.8 Zugriffsrechteliste übertragen
681
46.9 Zugriffsrechteliste über SDDL setzen
681
47 Active Directory
683
47.1 Benutzer- und Gruppenverwaltung mit WMI
684
47.2 Einführung in System.DirectoryServices
685
47.3 Basiseigenschaften
696
47.4 Benutzer- und Gruppenverwaltung im Active Directory
698
47.5 Verwaltung der Organisationseinheiten
706
47.6 Suche im Active Directory
707
47.7 Navigation im Active Directory mit den PowerShell Extensions
714
47.8 Verwendung der Active-Directory-Erweiterungen von www.IT-Visions.de
715
47.9 PowerShell-Modul „Active Directory“ (ADPowerShell)
717
47.10 PowerShell-Modul „ADDSDeployment“
736
47.11 Informationen über die Active-Directory-Struktur
739
48 Gruppenrichtlinien
743
48.1 Verwaltung der Gruppenrichtlinien
744
48.2 Verknüpfung der Gruppenrichtlinien
745
48.3 Gruppenrichtlinienberichte
747
48.4 Gruppenrichtlinienvererbung
748
48.5 Weitere Möglichkeiten
749
49 Virtuelle Systeme mit Hyper-V
751
49.1 Das Hyper-V-Modul von Microsoft
752
49.2 Die ersten Schritte mit dem Hyper-V-Modul
754
49.3 Virtuelle Maschinen anlegen
758
49.4 Umgang mit virtuellen Festplatten
764
49.5 Konfiguration virtueller Maschinen
767
49.6 PowerShell Management Library for Hyper-V (für ältere Betriebssysteme)
771
50 Internet Information Server (IIS)
775
50.1 Überblick
775
50.2 Navigationsprovider
777
50.3 Anlegen von Websites
779
50.4 Massenanlegen von Websites
780
50.5 Ändern von Eigenschaften von Websites
782
50.6 Anwendungspool anlegen
783
50.7 Virtuelle Verzeichnisse und IIS-Anwendungen
784
50.8 Website-Zustand ändern
784
50.9 Anwendungspools starten und stoppen
785
50.10 Löschen von Websites
785
51 Microsoft Exchange Server
787
51.1 Daten abrufen
787
51.2 Postfächer verwalten
788
51.3 Öffentliche Ordner verwalten
789
52 Optimierungen und Problemlösungen
791
52.1 PowerShell-Modul „TroubleshootingPack“
791
52.2 PowerShell-Modul „Best Practices“
795
53 Grafische Benutzeroberflächen
797
53.1 Eingabemasken
797
53.2 Universelle Objektdarstellung
799
53.3 Zwischenablage
800
53.4 WPF PowerShell Kit (WPK)
801
54 Entwicklung von Commandlets in der PowerShell-Sprache
813
54.1 Aufbau eines skriptbasierten Commandlets
813
54.2 Parameterfestlegung
816
54.3 Auszeichnung der Parameterdefinitionen
821
54.4 Dokumentation
824
55 Entwicklung eigener Commandlets mit C#
827
55.1 Technische Voraussetzungen
827
55.2 Grundkonzept der .NET-basierten Commandlets
829
55.3 Schrittweise Erstellung eines minimalen Commandlets
831
55.4 Erstellung eines Commandlets mit einem Rückgabeobjekt
839
55.5 Erstellung eines Commandlets mit mehreren Rückgabeobjekten
840
55.6 Erstellen eines Commandlets mit Parametern
844
55.7 Verarbeiten von Pipeline-Eingaben
846
55.8 Verkettung von Commandlets
849
55.9 Fehlersuche in Commandlets
853
55.10 Statusinformationen
856
55.11 Unterstützung für Sicherheitsabfragen
861
55.12 Festlegung der Hilfeinformationen
863
55.13 Erstellung von Commandlets für den Zugriff auf eine Geschäftsanwendung
867
55.14 Konventionen für Commandlets
868
55.15 Weitere Möglichkeiten
870
56 Hosting der Windows PowerShell
871
56.1 Voraussetzungen für das Hosting
872
56.2 Hosting mit PSHost
872
56.3 Vereinfachtes Hosting seit PowerShell 2.0
876
57 PowerShell-Module erstellen
879
57.1 Erstellen eines Skriptmoduls
879
57.2 Erstellen eines Moduls mit Binärdateien
881
57.3 Erstellen eines Moduls mit Manifest
881
Anhang
889
A Crashkurs „Objektorientierung“
891
B Crashkurs „.NET Framework“
899
C Literatur
907
D Weitere Informationen im Internet
911
Stichwortverzeichnis
913
© 2009-2024 ciando GmbH