Suchen und Finden
Service
Windows PowerShell 5.0 - Das Praxisbuch
Holger Schwichtenberg
Verlag Carl Hanser Fachbuchverlag, 2016
ISBN 9783446448155 , 1026 Seiten
Format PDF, ePUB, OL
Kopierschutz Wasserzeichen
Vorwort zur fünften Auflage Januar 2016
20
Wer bin ich?
20
Wer sind Sie?
21
Was ist neu in diesem Buch?
21
Sind in diesem Buch alle Features der PowerShell beschrieben?
22
Wem ist zu danken?
22
Woher bekommen Sie die Beispiele aus diesem Buch?
22
Wo kann ich mich schulen oder beraten lassen?
23
Zum Schluss des Vorworts .?.?.
23
Über den Autor Dr. Holger Schwichtenberg
24
Über den Co-Autor Peter Monadjemi
25
Teil A: PowerShell-Basiswissen
26
1 Erste Schritte mit der Windows PowerShell
28
1.1 Was ist die Windows PowerShell?
28
1.2 Geschichte der Windows PowerShell
29
1.3 Motivation zur Windows PowerShell
30
1.4 Betriebssysteme mit vorinstallierter PowerShell
33
1.5 PowerShell und Linux
34
1.6 PowerShell herunterladen und auf anderen Betriebssystemen installieren
35
1.7 Die Windows PowerShell testen
38
1.8 Woher kommen die Commandlets?
47
1.9 PowerShell Community Extensions (PSCX) herunterladen und installieren
47
1.10 Den PowerShell-Editor „ISE“ verwenden
49
Architektur der Windows PowerShell
54
3 Einzelbefehle der PowerShell
58
3.1 Commandlets
58
3.2 Aliase
67
3.3 Ausdrücke
74
3.4 Externe Befehle
75
3.5 Dateinamen
76
4 Hilfefunktionen
78
4.1 Auflisten der verfügbaren Befehle
78
4.2 Erläuterungen zu den Befehlen
81
4.3 Hilfe zu Parametern
82
4.4 Hilfe mit Show-Command
82
4.5 Hilfefenster
83
4.6 Aktualisieren der Hilfedateien
85
4.7 Online-Hilfe
86
4.8 Dokumentation der .NET?Klassen
87
5 Objektorientiertes Pipelining
90
5.1 Pipeline-Operator
90
5.2 .NET-Objekte in der Pipeline
91
5.3 Pipeline Processor
93
5.4 Pipelining von Parametern
94
5.5 Pipelining von klassischen Befehlen
96
5.6 Anzahl der Objekte in der Pipeline
97
5.7 Zugriff auf einzelne Objekte aus einer Menge
97
5.8 Zugriff auf einzelne Werte in einem Objekt
99
5.9 Methoden ausführen
100
5.10 Analyse des Pipeline-Inhalts
102
5.11 Filtern
113
5.12 Zusammenfassung von Pipeline-Inhalten
116
5.13 „Kastrierung“ von Objekten in der Pipeline
117
5.14 Sortieren
118
5.15 Duplikate entfernen
118
5.16 Gruppierung
119
5.17 Berechnungen
121
5.18 Zwischenschritte in der Pipeline mit Variablen
121
5.19 Verzweigungen in der Pipeline
122
5.20 Vergleiche zwischen Objekten
124
5.21 Zusammenfassung
125
5.22 Praxisbeispiele
125
6 PowerShell-Skripte
128
6.1 Skriptdateien
128
6.2 Start eines Skripts
130
6.3 Aliase für Skripte verwenden
131
6.4 Parameter für Skripte
132
6.5 Skripte dauerhaft einbinden (Dot Sourcing)
133
6.6 Sicherheitsfunktionen für PowerShell-Skripte
134
6.7 Skripte anhalten
138
7 PowerShell-Skriptsprache
140
7.1 Hilfe zur PowerShell-Skriptsprache
140
7.2 Befehlstrennung
141
7.3 Kommentare
141
7.4 Variablen
142
7.5 Variablenbedingungen
149
7.6 Zahlen
150
7.7 Zeichenketten
152
7.8 Reguläre Ausdrücke
158
7.9 Datum und Uhrzeit
165
7.10 Arrays
166
7.11 Assoziative Arrays (Hash-Tabellen)
169
7.12 Operatoren
170
7.13 Überblick über die Kontrollkonstrukte
171
7.14 Schleifen
172
7.15 Bedingungen
177
7.16 Unterroutinen (Prozedur/Funktionen)
179
7.17 Eingebaute Funktionen
185
7.18 Fehlerbehandlung
185
7.19 Objektorientiertes Programmieren mit Klassen
192
8 Ausgaben
196
8.1 Ausgabe-Commandlets
196
8.2 Out-GridView
199
8.3 Standardausgabe
200
8.4 Einschränkung der Ausgabe
203
8.5 Seitenweise Ausgabe
203
8.6 Ausgabe einzelner Werte
204
8.7 Details zum Ausgabeoperator
206
8.8 Benutzerdefinierte Tabellenformatierung
209
8.9 Ausgabe von Methodenergebnissen und Unterobjekten in Pipelines
210
8.10 Ausgabe von Methodenergebnissen und Unterobjekten in Zeichenketten
211
8.11 Unterdrückung der Ausgabe
211
8.12 Ausgaben an Drucker
212
8.13 Ausgaben in Dateien
212
8.14 Umleitungen (Redirection)
213
8.15 Sprachausgabe
214
9 Benutzereingaben
216
9.1 Read-Host
216
9.2 Grafischer Eingabedialog
217
9.3 Dialogfenster
217
9.4 Authentifizierungsdialog
218
10 Das PowerShell-Navigationsmodell
220
10.1 Einführungsbeispiel: Navigation in der Registrierungsdatenbank
220
10.2 Provider und Laufwerke
221
10.3 Navigationsbefehle
223
10.4 Pfadangaben
224
10.5 Beispiel
226
10.6 Eigene Laufwerke definieren
227
11 PowerShell-Werkzeuge
228
11.1 PowerShell-Standardkonsole
228
11.2 PowerShell Integrated Scripting Environment (ISE)
235
11.3 PowerShell Script Analyzer
241
11.4 CIM Explorer for PowerShell ISE
247
11.5 PowerShell Web Access (PSWA)
248
11.6 ISE Steroids
254
11.7 PowerShellPlus
255
11.8 PoshConsole
258
11.9 PowerGUI
259
11.10 PowerShell Analyzer
260
11.11 PrimalScript
261
11.12 PowerShell Help
263
11.13 PowerShell Help Reader
264
11.14 PowerTab
264
11.15 NuGet Package Manager
264
11.16 PowerShell Tools for Visual Studio
265
11.17 PowerShell Remoting
266
11.18 Vergleich der Skripteditoren
266
Teil B: PowerShell-Aufbauwissen
268
12 Fernausführung (Remoting)
270
12.1 RPC-Fernabfrage ohne WS?Management
271
12.2 Anforderungen an PowerShell Remoting
272
12.3 Rechte für PowerShell-Remoting
273
12.4 Einrichten von PowerShell Remoting
274
12.5 Überblick über die Fernausführungs-Commandlets
276
12.6 Interaktive Fernverbindungen im Telnet-Stil
277
12.7 Fernausführung von Befehlen
278
12.8 Parameterübergabe an die Fernausführung
282
12.9 Fernausführung von Skripten
283
12.10 Ausführung auf mehreren Computern
284
12.11 Sitzungen
285
12.12 Implizites Remoting
289
12.13 Zugriff auf entfernte Computer außerhalb der eigenen Domäne
290
12.14 Verwaltung des WS-Management-Dienstes
293
12.15 PowerShell Direct für HyperV
295
12.16 Praxisbeispiel zu PowerShell Direct
297
13 Verwendung von .NET-Klassen
300
13.1 Microsoft Developer Network (MSDN)
300
13.2 Erzeugen von Instanzen
301
13.3 Parameterbehaftete Konstruktoren
303
13.4 Initialisierung von Objekten
304
13.5 Nutzung von Attributen und Methoden
305
13.6 Statische Mitglieder in .NET-Klassen und statische .NET-Klassen
307
13.7 Generische Klassen nutzen
309
13.8 Zugriff auf bestehende Objekte
310
13.9 Laden von Assemblies
311
13.10 Objektanalyse
312
13.11 Auflistungen (Enumerationen)
313
13.12 Verknüpfen von Aufzählungswerten
314
14 Verwendung von COM-Klassen
316
14.1 Erzeugen von Instanzen
316
14.2 Nutzung von Attributen und Methoden
317
14.3 Holen bestehender Instanzen
318
15 Zugriff auf die Windows Management Instrumentation (WMI)
320
15.1 Einführung in WMI
320
15.2 WMI in der Windows PowerShell
346
15.3 Abruf von WMI-Objektmengen
347
15.4 Fernzugriffe
348
15.5 Filtern und Abfragen
348
15.6 Liste aller WMI-Klassen
353
15.7 Hintergrundwissen: WMI-Klassenprojektion mit dem PowerShell-WMI-Objektadapter
353
15.8 Beschränkung der Ausgabeliste bei WMI-Objekten
357
15.9 Zugriff auf einzelne Mitglieder von WMI-Klassen
358
15.10 Werte setzen in WMI-Objekten
359
15.11 Umgang mit WMI-Datumsangaben
361
15.12 Methodenaufrufe
362
15.13 Neue WMI-Instanzen erzeugen
363
15.14 Instanzen entfernen
364
15.15 Commandlet Definition XML-Datei (CDXML)
365
16 Dynamische Objekte
368
16.1 Erweitern bestehender Objekte
368
16.2 Komplett dynamische Objekte
370
17 Einbinden von C# und VB.NET
372
18 Win32-API-Aufrufe
374
19 Fehlersuche
378
19.1 Detailinformationen
378
19.2 Einzelschrittmodus
379
19.3 Zeitmessung
380
19.4 Ablaufverfolgung
381
19.5 Kommandozeilenbasiertes Script-Debugging
381
20 Transaktionen
384
20.1 Commandlets für Transaktionen
384
20.2 Start und Ende einer Transaktion
385
20.3 Zurücksetzen der Transaktion
386
20.4 Mehrere Transaktionen
387
21 Hintergrundaufträge („Jobs“)
388
21.1 Voraussetzungen
388
21.2 Architektur
389
21.3 Starten eines Hintergrundauftrags
389
21.4 Hintergrundaufträge abfragen
390
21.5 Warten auf einen Hintergrundauftrag
391
21.6 Abbrechen und Löschen von Aufträgen
391
21.7 Analyse von Fehlermeldungen
392
21.8 Fernausführung von Hintergrundaufträgen
392
21.9 Praxisbeispiel
392
22 Geplante Aufgaben und zeitgesteuerte Jobs
394
22.1 Geplante Aufgaben (Scheduled Tasks)
394
22.2 Zeitgesteuerte Jobs
398
23 PowerShell-Workflows
404
23.1 Ein erstes Beispiel
404
23.2 Unterschiede zu einer Function bzw. einem Skript
409
23.3 Einschränkungen bei Workflows
409
23.4 Workflows in der Praxis
411
23.5 Workflows in Visual Studio erstellen
418
24 Ereignissystem
436
24.1 WMI-Ereignisse
436
24.2 WMI-Ereignisabfragen
436
24.3 WMI-Ereignisse seit PowerShell 1.0
438
24.4 Registrieren von WMI?Ereignisquellen seit PowerShell 2.0
439
24.5 Auslesen der Ereignisliste
440
24.6 Reagieren auf Ereignisse
442
24.7 WMI-Ereignisse ab PowerShell-Version 3.0
444
24.8 Registrieren von .NET?Ereignissen
444
24.9 Erzeugen von Ereignissen
445
25 Datenbereiche und Datendateien
448
25.1 Datenbereiche
448
25.2 Datendateien
450
25.3 Mehrsprachigkeit/Lokalisierung
451
26 Desired State Configuration (DSC)
454
26.1 Grundprinzipien
455
26.2 DSC für Linux
455
26.3 Ressourcen
456
26.4 Verfügbare DSC-Ressourcen
456
26.5 Eigenschaften einer Ressource
459
26.6 Aufbau eines DSC-Dokuments
459
26.7 Commandlets für die Arbeit mit DSC
460
26.8 Ein erstes DSC-Beispiel
460
26.9 Kompilieren und Anwendung eines DSC-Dokuments
461
26.10 Variablen in DSC-Dateien
463
26.11 Parameter für DSC-Dateien
464
26.12 Konfigurationsdaten
465
26.13 Entfernen einer DSC-Konfiguration
468
26.14 DSC Pull Server
471
26.15 DSC-Praxisbeispiel 1: IIS installieren
478
26.16 DSC-Praxisbeispiel 2: Software installieren
479
26.17 DSC-Praxisbeispiel 3: Software deinstallieren
482
26.18 Realisierung einer DSC-Ressource
482
26.19 Weitere Möglichkeiten
483
27 PowerShell-Snap-Ins
484
27.1 Einbinden von Snap-Ins
484
27.2 Liste der Commandlets
488
27.3 Doppeldeutige Namen
489
28 PowerShell-Module
490
28.1 Überblick über die Commandlets
490
28.2 Modularchitektur
491
28.3 Module aus dem Netz herunterladen und installieren mit PowerShellGet
492
28.4 Module manuell installieren
497
28.5 Auflisten der verfügbaren Module
498
28.6 Importieren von Modulen
499
28.7 Entfernen von Modulen
502
29 Ausgewählte PowerShell-Erweiterungen
504
29.1 PowerShell-Module in Windows 7 und Windows Server 2008 R2
504
29.2 PowerShell-Module in Windows 8.0 und Windows Server 2012
506
29.3 PowerShell-Module in Windows 8.1 und Windows Server 2012 R2
508
29.4 PowerShell-Module in Windows 10 und Windows Server 2016
510
29.5 Windows PowerShell Community Extensions (PSCX)
515
29.6 PowerShellPack
518
29.7 www.IT-Visions.de PowerShell Extensions
520
29.8 Quest Management Shell for Active Directory
521
29.9 Microsoft Exchange Server
522
29.10 System Center Virtual Machine Manager
523
29.11 PowerShell Management Library for Hyper-V (pshyperv)
524
29.12 Powershell Outlook Account Manager
525
29.13 PowerShell Configurator (PSConfig)
525
29.14 Weitere Erweiterungen
526
30 Tipps und Tricks zur PowerShell
528
30.1 Befehlsgeschichte
528
30.2 System- und Hostinformationen
529
30.3 Alle Anzeigen löschen
530
30.4 Anpassen der Eingabeaufforderung (Prompt)
530
30.5 Standardeinstellungen ändern mit Profilskripten
531
30.6 ISE erweitern
536
30.7 PowerShell für Gruppenrichtlinienskripte
537
30.8 Einblicke in die Interna der Pipeline-Verarbeitung
539
C
542
31 Dateisystem
544
31.1 Laufwerke
545
31.2 Ordnerinhalte
550
31.3 Kurznamen
551
31.4 Dateisystemoperationen
552
31.5 Praxisbeispiel: Leere Ordner löschen
553
31.6 Papierkorb leeren
554
31.7 Dateieigenschaften lesen
554
31.8 Praxisbeispiel: Fotos nach Aufnahmedatum sortieren
555
31.9 Datei-Hash
556
31.10 Finden von Duplikaten
557
31.11 Dateieigenschaften verändern
559
31.12 Verknüpfungen im Dateisystem
561
31.13 Komprimierung
566
31.14 Dateisystemfreigaben
569
31.15 Überwachung des Dateisystems
580
31.16 Dateiversionsverlauf
581
31.17 Windows Server Backup
582
32 Festplattenverschlüsselung mit BitLocker
584
32.1 Übersicht über das BitLocker-Modul
585
32.2 Verschlüsseln eines Laufwerks
586
33 Dokumente
588
33.1 Textdateien
588
33.2 CSV-Dateien
589
33.3 Analysieren von Textdateien
592
33.4 INI-Dateien
595
33.5 XML-Dateien
595
33.6 HTML-Dateien
604
33.7 Binärdateien
604
34 Datenbanken
606
34.1 ADO.NET-Grundlagen
606
34.2 Beispieldatenbank
612
34.3 Datenzugriff mit den Bordmitteln der PowerShell
613
34.4 Datenzugriff mit den PowerShell-Erweiterungen
624
34.5 Datenbankzugriff mit SQLPS
627
34.6 Datenbankzugriff mit SQLPSX
627
35 Microsoft-SQL-Server-Administration
628
35.1 PowerShell-Integration im SQL Server Management Studio
629
35.2 SQL-Server-Laufwerk „SQLSERVER:“
630
35.3 Die SQLPS-Commandlets
633
35.4 Die SQL Server Management Objects (SMO)
635
35.5 SQLPSX
638
35.6 Microsoft-SQL-Server-Administration mit der PowerShell in der Praxis
646
36 ODBC-Datenquellen
652
ODBC-Treiber und -Datenquellen auflisten
653
Anlegen einer ODBC-Datenquelle
654
Zugriff auf eine ODBC-Datenquelle
655
37 Registrierungsdatenbank (Registry)
658
37.1 Schlüssel auslesen
658
37.2 Schlüssel anlegen und löschen
659
37.3 Laufwerke definieren
659
37.4 Werte anlegen und löschen
660
37.5 Werte auslesen
661
37.6 Praxisbeispiel: Windows-Explorer-Einstellungen
661
37.7 Praxisbeispiel: Massenanlegen von Registry-Schlüsseln
662
38 Computerverwaltung
664
38.1 Computerinformationen
664
38.2 Computername und Domäne
666
38.3 Herunterfahren und Neustarten
667
38.4 Wiederherstellungspunkte verwalten
668
39 Hardwareverwaltung
670
39.1 Hardwarebausteine
670
39.2 Plug-and-Play-Geräte
672
39.3 Druckerverwaltung (ältere Betriebssysteme)
672
39.4 Druckerverwaltung (seit Windows 8 und Windows Server 2012)
673
40 Softwareverwaltung
676
40.1 Softwareinventarisierung
676
40.2 Installation von Anwendungen
679
40.3 Deinstallation von Anwendungen
680
40.4 Praxisbeispiel: Installationstest
680
40.5 Installationen mit PowerShell Package Management („OneGet“)
681
40.6 Versionsnummer ermitteln
684
40.7 Servermanager
685
40.8 Softwareeinschränkungen mit dem PowerShell-Modul „AppLocker“
696
41 Prozessverwaltung
702
41.1 Prozesse auflisten
702
41.2 Prozesse starten
703
41.3 Prozesse beenden
705
41.4 Warten auf das Beenden einer Anwendung
705
42 Systemdienste
706
42.1 Dienste auflisten
706
42.2 Dienstzustand ändern
708
42.3 Diensteigenschaften ändern
709
43 Netzwerk
710
43.1 Netzwerkkonfiguration (ältere Betriebssysteme)
710
43.2 Netzwerkkonfiguration (ab Windows 8 und Windows Server 2012)
712
43.3 DNS-Client-Konfiguration
715
43.4 DNS-Namensauflösung
718
43.5 Erreichbarkeit prüfen (Ping)
720
43.6 Windows Firewall
721
43.7 Remote Desktop (RDP) einrichten
727
43.8 E-Mails senden (SMTP)
728
43.9 Abruf von Daten von einem HTTP-Server
730
43.10 Aufrufe von SOAP-Webdiensten
731
43.11 Aufrufe von OData-Diensten
734
43.12 BITSTransfer
734
44 Ereignisprotokolle
736
14.1 Protokolleinträge auslesen
736
14.2 Ereignisprotokolle erzeugen
738
14.3 Protokolleinträge erzeugen
738
14.4 Protokollgröße festlegen
738
14.5 Protokolleinträge löschen
738
45 Leistungsdaten
740
45.1 Zugriff auf Leistungsindikatoren über WMI
740
45.2 Get-Counter
741
46 Sicherheitseinstellungen
744
46.1 Grundlagen
744
46.2 Zugriffsrechtelisten auslesen
749
46.3 Einzelne Rechteeinträge auslesen
751
46.4 Besitzer auslesen
752
46.5 Benutzer und SID
752
46.6 Hinzufügen eines Rechteeintrags zu einer Zugriffsrechteliste
756
46.7 Entfernen eines Rechteeintrags aus einer Zugriffsrechteliste
758
46.8 Zugriffsrechteliste übertragen
760
46.9 Zugriffsrechteliste über SDDL setzen
760
47 Active Directory
762
47.1 Benutzer- und Gruppenverwaltung mit WMI
763
47.2 Einführung in System.DirectoryServices
764
47.3 Basiseigenschaften
775
47.4 Benutzer- und Gruppenverwaltung im Active Directory
777
47.5 Verwaltung der Organisationseinheiten
785
47.6 Suche im Active Directory
786
47.7 Navigation im Active Directory mit den PowerShell Extensions
793
47.8 Verwendung der Active-Directory-Erweiterungen von www.IT-Visions.de
794
47.9 PowerShell-Modul „Active Directory“ (ADPowerShell)
796
47.10 PowerShell-Modul „ADDSDeployment“
819
47.11 Informationen über die Active?Directory-Struktur
821
48 Gruppenrichtlinien
824
48.1 Verwaltung der Gruppenrichtlinien
825
48.2 Verknüpfung der Gruppenrichtlinien
826
48.3 Gruppenrichtlinienberichte
828
48.4 Gruppenrichtlinienvererbung
829
48.5 Weitere Möglichkeiten
830
49 Virtuelle Systeme mit Hyper-V
832
49.1 Das Hyper-V-Modul von Microsoft
833
49.2 Die ersten Schritte mit dem Hyper-V-Modul
835
49.3 Virtuelle Maschinen anlegen
839
49.4 Umgang mit virtuellen Festplatten
845
49.5 Konfiguration virtueller Maschinen
848
49.6 Dateien kopieren in virtuelle Systeme
852
49.7 PowerShell Management Library for Hyper-V (für ältere Betriebssysteme)
853
50 Internet Information Server (IIS)
858
50.1 Überblick
858
50.2 Navigationsprovider
860
50.3 Anlegen von Websites
862
50.4 Praxisbeispiel: Massenanlegen von Websites
863
50.5 Ändern von Eigenschaften von Websites
866
50.6 Anwendungspool anlegen
866
50.7 Virtuelle Verzeichnisse und IIS?Anwendungen
867
50.8 Website-Zustand ändern
868
50.9 Anwendungspools starten und stoppen
868
50.10 Löschen von Websites
869
51 Microsoft Exchange Server
870
51.1 Daten abrufen
870
51.2 Postfächer verwalten
871
51.3 Öffentliche Ordner verwalten
872
52 Optimierungen und Problemlösungen
874
52.1 PowerShell-Modul „TroubleshootingPack“
874
52.2 PowerShell-Modul „Best Practices“
878
53 Grafische Benutzeroberflächen
880
53.1 Eingabemasken
880
53.2 Universelle Objektdarstellung
882
53.3 Zwischenablage
884
53.4 WPF PowerShell Kit (WPK)
885
D
896
54 Entwicklung von Commandlets in der PowerShell-Sprache
898
54.1 Aufbau eines skriptbasierten Commandlets
898
54.2 Parameterfestlegung
901
54.3 Auszeichnung der Parameterdefinitionen
906
54.4 Dokumentation
909
55 Entwicklung eigener Commandlets mit C#
912
55.1 Technische Voraussetzungen
912
55.2 Grundkonzept der .NET-basierten Commandlets
914
55.3 Schrittweise Erstellung eines minimalen Commandlets
915
55.4 Erstellung eines Commandlets mit einem Rückgabeobjekt
923
55.5 Erstellung eines Commandlets mit mehreren Rückgabeobjekten
925
55.6 Erstellen eines Commandlets mit Parametern
929
55.7 Verarbeiten von Pipeline-Eingaben
931
55.8 Verkettung von Commandlets
934
55.9 Fehlersuche in Commandlets
938
55.10 Statusinformationen
941
55.11 Unterstützung für Sicherheitsabfragen
946
55.12 Festlegung der Hilfeinformationen
948
55.13 Erstellung von Commandlets für den Zugriff auf eine Geschäftsanwendung
952
55.14 Konventionen für Commandlets
953
55.15 Weitere Möglichkeiten
955
56 Hosting der Windows PowerShell
956
56.1 Voraussetzungen für das Hosting
957
56.2 Hosting mit PSHost
958
56.3 Vereinfachtes Hosting seit PowerShell 2.0
961
57 PowerShell-Module erstellen
964
57.1 Erstellen eines Skriptmoduls
964
57.2 Erstellen eines Moduls mit Binärdateien
966
57.3 Erstellen eines Moduls mit Manifest
966
Anhang
974
A
976
Crashkurs „Objektorientierung“
976
B
984
Crashkurs „.NET Framework“
984
C Literatur
994
D
998
Weitere Informationen im Internet
998