Das Praxisbuch
E-Book, Deutsch, 1420 Seiten
ISBN: 978-3-446-46081-2
Verlag: Hanser, Carl
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)
Autoren/Hrsg.
Weitere Infos & Material
1;Inhalt;6
2;Vorwort;26
3;Teil A: PowerShell-Basiswissen;36
3.1;1 Fakten zur PowerShell;38
3.1.1;1.1 Was ist die PowerShell?;38
3.1.2;1.2 Geschichte der PowerShell;39
3.1.3;1.3 Welche Varianten und Versionen der PowerShell gibt es?;41
3.1.4;1.4 Windows PowerShell versus PowerShell Core versus PowerShell 7.0;42
3.1.5;1.5 Motivation zur PowerShell;43
3.1.6;1.6 Betriebssysteme mit vorinstallierter PowerShell;46
3.1.7;1.7 Einflussfaktoren auf die Entwicklung der PowerShell;47
3.1.8;1.8 Anbindung an Klassenbibliotheken;49
3.1.9;1.9 PowerShell versus WSH;49
3.2;2 Erste Schritte mit der PowerShell;52
3.2.1;2.1 Windows PowerShell herunterladen und auf anderen Windows-Betriebssystemen installieren;52
3.2.2;2.2 Die Windows PowerShell testen;56
3.2.3;2.3 Woher kommen die PowerShell-Befehle?;65
3.2.4;2.4 PowerShell Community Extensions (PSCX) herunterladen und installieren;66
3.2.5;2.5 Den Windows PowerShell-Editor „ISE“ verwenden;69
3.2.6;2.6 PowerShell 7 installieren und testen;71
3.3;3 Einzelbefehle der PowerShell;80
3.3.1;3.1 Commandlets;80
3.3.2;3.2 Aliase;93
3.3.3;3.3 Ausdrücke;101
3.3.4;3.4 Externe Befehle (klassische Kommandozeilenbefehle);102
3.3.5;3.5 Dateinamen;104
3.4;4 Hilfefunktionen;106
3.4.1;4.1 Auflisten der verfügbaren Befehle;106
3.4.2;4.2 Praxistipp: Den Standort eines Kommandozeilenbefehls suchen;107
3.4.3;4.3 Anzahl der Befehle;108
3.4.4;4.4 Volltextsuche;110
3.4.5;4.5 Erläuterungen zu den Befehlen;111
3.4.6;4.6 Hilfe zu Parametern;112
3.4.7;4.7 Hilfe mit Show-Command;113
3.4.8;4.8 Hilfefenster;115
3.4.9;4.9 Allgemeine Hilfetexte;116
3.4.10;4.10 Aktualisieren der Hilfedateien;117
3.4.11;4.11 Online-Hilfe;119
3.4.12;4.12 Fehlende Hilfetexte;120
3.4.13;4.13 Dokumentation der .NETKlassen;121
3.5;5 Objektorientiertes Pipelining;124
3.5.1;5.1 Befehlsübersicht;124
3.5.2;5.2 Pipeline-Operator;125
3.5.3;5.3 .NET-Objekte in der Pipeline;126
3.5.4;5.4 Pipeline Processor;127
3.5.5;5.5 Pipelining von Parametern;129
3.5.6;5.6 Pipelining von klassischen Befehlen;131
3.5.7;5.7 Zeilenumbrüche in Pipelines;133
3.5.8;5.8 Schleifen;134
3.5.9;5.9 Zugriff auf einzelne Objekte aus einer Menge;137
3.5.10;5.10 Zugriff auf einzelne Werte in einem Objekt;138
3.5.11;5.11 Methoden ausführen;140
3.5.12;5.12 Analyse des Pipeline-Inhalts;142
3.5.13;5.13 Filtern;157
3.5.14;5.14 Zusammenfassung von Pipeline-Inhalten;162
3.5.15;5.15 „Kastrierung“ von Objekten in der Pipeline;162
3.5.16;5.16 Sortieren;163
3.5.17;5.17 Duplikate entfernen;164
3.5.18;5.18 Gruppierung;165
3.5.19;5.19 Objekte verbinden mit Join-String;171
3.5.20;5.20 Berechnungen;172
3.5.21;5.21 Zwischenschritte in der Pipeline mit Variablen;173
3.5.22;5.22 Verzweigungen in der Pipeline;174
3.5.23;5.23 Vergleiche zwischen Objekten;176
3.5.24;5.24 Weitere Praxislösungen;177
3.6;6 PowerShell-Skripte;180
3.6.1;6.1 Skriptdateien;180
3.6.2;6.2 Start eines Skripts;182
3.6.3;6.3 Aliase für Skripte verwenden;184
3.6.4;6.4 Parameter für Skripte;184
3.6.5;6.5 Skripte dauerhaft einbinden (Dot Sourcing);186
3.6.6;6.6 Das aktuelle Skriptverzeichnis;186
3.6.7;6.7 Sicherheitsfunktionen für PowerShell-Skripte;187
3.6.8;6.8 Skripte mit vollen Rechten (Elevation);189
3.6.9;6.9 Blockierte PowerShell-Skripte;190
3.6.10;6.10 PowerShell-Skripte im Kontextmenü des Windows Explorers;191
3.6.11;6.11 Anforderungsdefinitionen von Skripten;193
3.6.12;6.12 Skripte anhalten;193
3.6.13;6.13 Versionierung und Versionsverwaltung von Skripten;193
3.7;7 PowerShell-Skriptsprache;196
3.7.1;7.1 Hilfe zur PowerShell-Skriptsprache;196
3.7.2;7.2 Befehlstrennung;197
3.7.3;7.3 Kommentare;197
3.7.4;7.4 Variablen;198
3.7.5;7.5 Variablenbedingungen;211
3.7.6;7.6 Zahlen;212
3.7.7;7.7 Zeichenketten (Strings);214
3.7.8;7.8 Reguläre Ausdrücke;224
3.7.9;7.9 Datum und Uhrzeit;230
3.7.10;7.10 Objekte;231
3.7.11;7.11 Arrays;232
3.7.12;7.12 ArrayList;235
3.7.13;7.13 Assoziative Arrays (Hash-Tabellen);236
3.7.14;7.14 Operatoren;237
3.7.15;7.15 Überblick über die Kontrollkonstrukte;241
3.7.16;7.16 Schleifen;242
3.7.17;7.17 Bedingungen;247
3.7.18;7.18 Unterroutinen (Prozedur/Funktionen);249
3.7.19;7.19 Eingebaute Funktionen;255
3.7.20;7.20 Fehlerausgabe;255
3.7.21;7.21 Fehlerbehandlung;256
3.7.22;7.22 Laufzeitfehler erzeugen;268
3.7.23;7.23 Objektorientiertes Programmieren mit Klassen;268
3.8;8 Ausgaben;272
3.8.1;8.1 Ausgabe-Commandlets;272
3.8.2;8.2 Benutzerdefinierte Tabellenformatierung;275
3.8.3;8.3 Benutzerdefinierte Listenausgabe;277
3.8.4;8.4 Mehrspaltige Ausgabe;277
3.8.5;8.5 Out-GridView;278
3.8.6;8.6 Standardausgabe;280
3.8.7;8.7 Einschränkung der Ausgabe;283
3.8.8;8.8 Seitenweise Ausgabe;283
3.8.9;8.9 Ausgabe einzelner Werte;284
3.8.10;8.10 Details zum Ausgabeoperator;287
3.8.11;8.11 Ausgabe von Methodenergebnissen und Unterobjekten in Pipelines;290
3.8.12;8.12 Ausgabe von Methodenergebnissen und Unterobjekten in Zeichenketten;290
3.8.13;8.13 Unterdrückung der Ausgabe;291
3.8.14;8.14 Ausgaben an Drucker;292
3.8.15;8.15 Ausgaben in Dateien;292
3.8.16;8.16 Umleitungen (Redirection);293
3.8.17;8.17 Fortschrittsanzeige;293
3.8.18;8.18 Sprachausgabe;294
3.9;9 Das PowerShell-Navigationsmodell (PowerShell Provider);296
3.9.1;9.1 Einführungsbeispiel: Navigation in der Registrierungsdatenbank;296
3.9.2;9.2 Provider und Laufwerke;297
3.9.3;9.3 Navigationsbefehle;300
3.9.4;9.4 Pfadangaben;300
3.9.5;9.5 Beispiel;302
3.9.6;9.6 Eigene Laufwerke definieren;303
3.10;10 Fernausführung (Remoting);304
3.10.1;10.1 RPC-Fernabfrage ohne WS-Management;305
3.10.2;10.2 Anforderungen an PowerShell Remoting;306
3.10.3;10.3 Rechte für PowerShell-Remoting;307
3.10.4;10.4 Einrichten von PowerShell Remoting;308
3.10.5;10.5 Überblick über die Fernausführungs-Commandlets;310
3.10.6;10.6 Interaktive Fernverbindungen im Telnet-Stil;311
3.10.7;10.7 Fernausführung von Befehlen;312
3.10.8;10.8 Parameterübergabe an die Fernausführung;316
3.10.9;10.9 Fernausführung von Skripten;317
3.10.10;10.10 Ausführung auf mehreren Computern;318
3.10.11;10.11 Sitzungen;319
3.10.12;10.12 Implizites Remoting;324
3.10.13;10.13 Zugriff auf entfernte Computer außerhalb der eigenen Domäne;325
3.10.14;10.14 Verwaltung des WS-Management-Dienstes;329
3.10.15;10.15 PowerShell Direct für Hyper-V;330
3.10.16;10.16 Praxislösung zu PowerShell Direct;332
3.11;11 PowerShell-Werkzeuge;336
3.11.1;11.1 PowerShell-Standardkonsole;336
3.11.2;11.2 Windows Terminal;346
3.11.3;11.3 PowerShell Integrated Scripting Environment (ISE);348
3.11.4;11.4 PowerShell Script Analyzer;360
3.11.5;11.5 PowerShell Analyzer;365
3.11.6;11.6 PowerShell Tools for Visual Studio;366
3.11.7;11.7 PowerShell Pro Tools for Visual Studio;368
3.11.8;11.8 NuGet Package Manager;368
3.11.9;11.9 Visual Studio Code mit PowerShell-Erweiterung;369
3.11.10;11.10 PowerShell-Erweiterungen für andere Editoren;372
3.11.11;11.11 PowerShell Web Access (PSWA);372
3.11.12;11.12 Azure Cloud Shell;378
3.11.13;11.13 ISE Steroids;378
3.11.14;11.14 PowerShellPlus;379
3.11.15;11.15 PoshConsole;382
3.11.16;11.16 PowerGUI;383
3.11.17;11.17 PrimalScript;384
3.11.18;11.18 PowerShell Help;386
3.11.19;11.19 CIM Explorer for PowerShell ISE;386
3.11.20;11.20 PowerShell Help Reader;387
3.11.21;11.21 PowerShell Remoting;388
3.12;12 Windows PowerShell Core 5.1 in Windows Nano Server;390
3.12.1;12.1 Installation;390
3.12.2;12.2 PowerShell-Skriptsprache;390
3.12.3;12.3 Werkzeuge;391
3.12.4;12.4 Fehlende Funktionen;391
3.13;13 PowerShell 7 für Windows, Linux und macOS;392
3.13.1;13.1 Motivation für den Einsatz der PowerShell 7 auf Linux und macOS;392
3.13.2;13.2 Basis der PowerShell 7;393
3.13.3;13.3 Identifizierung der PowerShell 7;394
3.13.4;13.4 Funktionsumfang der PowerShell 7;394
3.13.5;13.5 Entfallene Befehle in PowerShell 7;397
3.13.6;13.6 Erweiterungsmodule nutzen in PowerShell 7;402
3.13.7;13.7 Geänderte Funktionen in PowerShell 7;407
3.13.8;13.8 Neue Funktionen der PowerShell 7;409
3.13.9;13.9 PowerShell 7-Konsole;413
3.13.10;13.10 VSCode-PowerShell als Editor für PowerShell 7;413
3.13.11;13.11 Verwendung von PowerShell 7 auf Linux und macOS;418
3.13.12;13.12 PowerShell-Remoting via SSH;424
3.13.13;13.13 Dokumentation zur PowerShell 7;428
3.13.14;13.14 Quellcode zur PowerShell 7;429
4;Teil B: PowerShell-Aufbauwissen;432
4.1;14 Verwendung von .NET-Klassen;434
4.1.1;14.1 .NET versus .NET Core;434
4.1.2;14.2 Ermitteln der verwendeten .NET-Version;435
4.1.3;14.3 .NET-Bibliotheken;436
4.1.4;14.4 Microsoft Developer Network (MSDN);438
4.1.5;14.5 Überblick über die Verwendung von .NET-Klassen;439
4.1.6;14.6 Erzeugen von Instanzen;439
4.1.7;14.7 Parameterbehaftete Konstruktoren;441
4.1.8;14.8 Initialisierung von Objekten;443
4.1.9;14.9 Nutzung von Attributen und Methoden;443
4.1.10;14.10 Statische Mitglieder in .NET-Klassen und statische .NET-Klassen;445
4.1.11;14.11 Generische Klassen nutzen;449
4.1.12;14.12 Zugriff auf bestehende Objekte;450
4.1.13;14.13 Laden von Assemblies;450
4.1.14;14.14 Liste der geladen Assemblies;453
4.1.15;14.15 Verwenden von Nuget-Assemblies;454
4.1.16;14.16 Objektanalyse;456
4.1.17;14.17 Aufzählungstypen (Auflistungen/Enumerationen);457
4.2;15 Verwendung von COM-Klassen;462
4.2.1;15.1 Unterschiede zwischen COM und .NET;462
4.2.2;15.2 Erzeugen von COM-Instanzen;463
4.2.3;15.3 Abruf der Metadaten;463
4.2.4;15.4 Nutzung von Attributen und Methoden;464
4.2.5;15.5 Liste aller COM-Klassen;465
4.2.6;15.6 Holen bestehender COM-Instanzen;466
4.2.7;15.7 Distributed COM (DCOM);466
4.3;16 Zugriff auf die Windows Management Instrumentation (WMI);468
4.3.1;16.1 Einführung in WMI;468
4.3.2;16.2 WMI in der PowerShell;494
4.3.3;16.3 Open Management Infrastructure (OMI);496
4.3.4;16.4 Abruf von WMI-Objektmengen;496
4.3.5;16.5 Fernzugriffe;497
4.3.6;16.6 Filtern und Abfragen;498
4.3.7;16.7 Liste aller WMI-Klassen;501
4.3.8;16.8 Hintergrundwissen: WMI-Klassenprojektion mit dem PowerShell-WMI-Objektadapter;502
4.3.9;16.9 Beschränkung der Ausgabeliste bei WMI-Objekten;506
4.3.10;16.10 Zugriff auf einzelne Mitglieder von WMI-Klassen;507
4.3.11;16.11 Werte setzen in WMI-Objekten;508
4.3.12;16.12 Umgang mit WMI-Datumsangaben;510
4.3.13;16.13 Methodenaufrufe;511
4.3.14;16.14 Neue WMI-Instanzen erzeugen;512
4.3.15;16.15 Instanzen entfernen;513
4.3.16;16.16 Commandlet Definition XML-Datei (CDXML);514
4.4;17 Dynamische Objekte;518
4.4.1;17.1 Erweitern bestehender Objekte;518
4.4.2;17.2 Komplett dynamische Objekte;520
4.5;18 Einbinden von C# und Visual Basic .NET;522
4.6;19 Win32-API-Aufrufe;524
4.7;20 Benutzereingaben;528
4.7.1;20.1 Read-Host;528
4.7.2;20.2 Benutzerauswahl;529
4.7.3;20.3 Grafischer Eingabedialog;530
4.7.4;20.4 Dialogfenster;531
4.7.5;20.5 Authentifizierungsdialog;531
4.7.6;20.6 Zwischenablage (Clipboard);533
4.8;21 Fehlersuche;534
4.8.1;21.1 Detailinformationen;534
4.8.2;21.2 Einzelschrittmodus;535
4.8.3;21.3 Zeitmessung;536
4.8.4;21.4 Ablaufverfolgung (Tracing);537
4.8.5;21.5 Erweiterte Protokollierung aktivieren;538
4.8.6;21.6 Script-Debugging in der ISE;540
4.8.7;21.7 Kommandozeilenbasiertes Script-Debugging;540
4.9;22 Transaktionen;542
4.9.1;22.1 Commandlets für Transaktionen;542
4.9.2;22.2 Start und Ende einer Transaktion;543
4.9.3;22.3 Zurücksetzen der Transaktion;544
4.9.4;22.4 Mehrere Transaktionen;545
4.10;23 Standardeinstellungen ändern mit Profilskripten;546
4.10.1;23.1 Profilpfade;546
4.10.2;23.2 Ausführungsreihenfolge;548
4.10.3;23.3 Beispiel für eine Profildatei;548
4.10.4;23.4 Starten der PowerShell ohne Profilskripte;549
4.11;24 Digitale Signaturen für PowerShell-Skripte;550
4.11.1;24.1 Zertifikat erstellen;550
4.11.2;24.2 Skripte signieren;552
4.11.3;24.3 Verwenden signierter Skripte;554
4.11.4;24.4 Mögliche Fehlerquellen;554
4.12;25 Hintergrundaufträge („Jobs“);556
4.12.1;25.1 Voraussetzungen;556
4.12.2;25.2 Architektur;556
4.12.3;25.3 Starten eines Hintergrundauftrags;557
4.12.4;25.4 Hintergrundaufträge abfragen;558
4.12.5;25.5 Warten auf einen Hintergrundauftrag;559
4.12.6;25.6 Abbrechen und Löschen von Aufträgen;559
4.12.7;25.7 Analyse von Fehlermeldungen;559
4.12.8;25.8 Fernausführung von Hintergrundaufträgen;560
4.12.9;25.9 Praxislösung: Einen Job auf mehreren Computern starten;560
4.13;26 Geplante Aufgaben und zeitgesteuerte Jobs;562
4.13.1;26.1 Geplante Aufgaben (Scheduled Tasks);562
4.13.2;26.2 Zeitgesteuerte Jobs;566
4.14;27 PowerShell-Workflows;572
4.14.1;27.1 Ein erstes Beispiel;572
4.14.2;27.2 Unterschiede zu einer Function bzw. einem Skript;577
4.14.3;27.3 Einschränkungen bei Workflows;577
4.14.4;27.4 Workflows in der Praxis;579
4.14.5;27.5 Workflows in Visual Studio erstellen;586
4.15;28 Ereignissystem;604
4.15.1;28.1 WMI-Ereignisse;604
4.15.2;28.2 WMI-Ereignisabfragen;604
4.15.3;28.3 WMI-Ereignisse seit PowerShell 1.0;606
4.15.4;28.4 Registrieren von WMI-Ereignisquellen seit PowerShell 2.0;607
4.15.5;28.5 Auslesen der Ereignisliste;608
4.15.6;28.6 Reagieren auf Ereignisse;610
4.15.7;28.7 WMI-Ereignisse ab PowerShell- Version 3.0;612
4.15.8;28.8 Registrieren von .NET-Ereignissen;612
4.15.9;28.9 Erzeugen von Ereignissen;613
4.16;29 Datenbereiche und Datendateien;616
4.16.1;29.1 Datenbereiche;616
4.16.2;29.2 Datendateien;618
4.16.3;29.3 Mehrsprachigkeit/Lokalisierung;619
4.17;30 Desired State Configuration (DSC);622
4.17.1;30.1 Grundprinzipien;623
4.17.2;30.2 DSC für Linux;623
4.17.3;30.3 Ressourcen;624
4.17.4;30.4 Verfügbare DSC-Ressourcen;624
4.17.5;30.5 Eigenschaften einer Ressource;627
4.17.6;30.6 Aufbau eines DSC-Dokuments;627
4.17.7;30.7 Commandlets für die Arbeit mit DSC;628
4.17.8;30.8 Ein erstes DSC-Beispiel;628
4.17.9;30.9 Kompilieren und Anwendung eines DSC-Dokuments;629
4.17.10;30.10 Variablen in DSC-Dateien;631
4.17.11;30.11 Parameter für DSC-Dateien;632
4.17.12;30.12 Konfigurationsdaten;633
4.17.13;30.13 Entfernen einer DSC-Konfiguration;636
4.17.14;30.14 DSC Pull Server;639
4.17.15;30.15 DSC-Praxislösung 1: IIS installieren;646
4.17.16;30.16 DSC-Praxislösung 2: Software installieren;648
4.17.17;30.17 DSC-Praxislösung 3: Software deinstallieren;650
4.17.18;30.18 Realisierung einer DSC-Ressource;651
4.17.19;30.19 Weitere Möglichkeiten;651
4.18;31 PowerShell-Snap-Ins;652
4.18.1;31.1 Einbinden von Snap-Ins;652
4.18.2;31.2 Liste der Commandlets;656
4.19;32 PowerShell-Module;658
4.19.1;32.1 Überblick über die Commandlets;658
4.19.2;32.2 Modularchitektur;659
4.19.3;32.3 Aufbau eines Moduls;660
4.19.4;32.4 Module aus dem Netz herunterladen und installieren mit PowerShellGet;661
4.19.5;32.5 Module manuell installieren;667
4.19.6;32.6 Doppeldeutige Namen;668
4.19.7;32.7 Auflisten der verfügbaren Module;669
4.19.8;32.8 Importieren von Modulen;670
4.19.9;32.9 Entfernen von Modulen;673
4.20;33 Ausgewählte PowerShell-Erweiterungen;674
4.20.1;33.1 PowerShell-Module in Windows 8.0 und Windows Server 2012;675
4.20.2;33.2 PowerShell-Module in Windows 8.1 und Windows Server 2012 R2;677
4.20.3;33.3 PowerShell-Module in Windows 10 und Windows Server 2019;679
4.20.4;33.4 PowerShell Community Extensions (PSCX);683
4.20.5;33.5 PowerShellPack;687
4.20.6;33.6 www.IT-Visions.de: PowerShell Extensions;689
4.20.7;33.7 Quest Management Shell for Active Directory;689
4.20.8;33.8 Microsoft Exchange Server;691
4.20.9;33.9 System Center Virtual Machine Manager;692
4.20.10;33.10 PowerShell Management Library for Hyper-V (pshyperv);692
4.20.11;33.11 Powershell Outlook Account Manager;693
4.20.12;33.12 PowerShell Configurator (PSConfig);694
4.20.13;33.13 Weitere Erweiterungen;695
4.21;34 Delegierte Administration/Just Enough Administration (JEA);696
4.21.1;34.1 JEA-Konzept;696
4.21.2;34.2 PowerShell-Sitzungskonfiguration erstellen;696
4.21.3;34.3 Sitzungskonfiguration nutzen;699
4.21.4;34.4 Delegierte Administration per Webseite;701
4.22;35 Unit Tests mit Pester;702
4.22.1;35.1 Einführung in das Konzept des Unit Testing;702
4.22.2;35.2 Pester installieren;703
4.22.3;35.3 Befehle in Pester;703
4.22.4;35.4 Testen einer PowerShell-Funktion;704
4.22.5;35.5 Testgenerierung;705
4.22.6;35.6 Tests starten;706
4.22.7;35.7 Prüf-Operationen;707
4.22.8;35.8 Mock-Objekte;707
4.22.9;35.9 Test von Dateisystemoperationen;708
4.23;36 Tipps und Tricks zur PowerShell;712
4.23.1;36.1 Alle Anzeigen löschen;712
4.23.2;36.2 Befehlsgeschichte;712
4.23.3;36.3 System- und Hostinformationen;713
4.23.4;36.4 Anpassen der Eingabeaufforderung (Prompt);714
4.23.5;36.5 PowerShell-Befehle aus anderen Anwendungen heraus starten;715
4.23.6;36.6 ISE erweitern;716
4.23.7;36.7 PowerShell für Gruppenrichtlinienskripte;717
4.23.8;36.8 Einblicke in die Interna der Pipeline-Verarbeitung;720
5;Teil C: PowerShell im Praxiseinsatz;722
5.1;37 Dateisystem;724
5.1.1;37.1 Laufwerke;725
5.1.2;37.2 Ordnerinhalte;730
5.1.3;37.3 Dateieigenschaften verändern;734
5.1.4;37.4 Eigenschaften ausführbarer Dateien;735
5.1.5;37.5 Kurznamen;737
5.1.6;37.6 Lange Pfade;737
5.1.7;37.7 Dateisystemoperationen;738
5.1.8;37.8 Praxislösungen: Dateien umorganisieren;738
5.1.9;37.9 Praxislösung: Zufällige Dateisystemstruktur erzeugen;740
5.1.10;37.10 Praxislösung: Leere Ordner löschen;741
5.1.11;37.11 Einsatz von Robocopy;742
5.1.12;37.12 Dateisystemkataloge;745
5.1.13;37.13 Papierkorb leeren;746
5.1.14;37.14 Dateieigenschaften lesen;746
5.1.15;37.15 Praxislösung: Fotos nach Aufnahmedatum sortieren;747
5.1.16;37.16 Datei-Hash;748
5.1.17;37.17 Finden von Duplikaten;749
5.1.18;37.18 Verknüpfungen im Dateisystem;751
5.1.19;37.19 Komprimierung;756
5.1.20;37.20 Dateisystemfreigaben;759
5.1.21;37.21 Überwachung des Dateisystems;770
5.1.22;37.22 Dateiversionsverlauf;771
5.1.23;37.23 Windows Explorer öffnen;772
5.1.24;37.24 Windows Server Backup;772
5.2;38 Festplattenverschlüsselung mit BitLocker;774
5.2.1;38.1 Übersicht über das BitLocker-Modul;775
5.2.2;38.2 Verschlüsseln eines Laufwerks;776
5.3;39 Dokumente;778
5.3.1;39.1 Textdateien;778
5.3.2;39.2 CSV-Dateien;780
5.3.3;39.3 Analysieren von Textdateien;783
5.3.4;39.4 INI-Dateien;786
5.3.5;39.5 XML-Dateien;786
5.3.6;39.6 HTML- und Markdown-Dateien;796
5.3.7;39.7 JSON-Dateien;799
5.3.8;39.8 Binärdateien;809
5.3.9;39.9 Grafikdateien;810
5.4;40 Microsoft Office;812
5.4.1;40.1 Allgemeine Informationen zur Office-Automatisierung per PowerShell;812
5.4.2;40.2 Praxislösung: Terminserien aus Textdateien anlegen in Outlook;813
5.4.3;40.3 Praxislösung: Outlook-Termine anhand von Suchkriterien löschen;815
5.4.4;40.4 Praxislösung: Grafiken aus einem Word-Dokument (DOCX) extrahieren;816
5.5;41 Datenbanken;820
5.5.1;41.1 ADO.NET-Grundlagen;820
5.5.2;41.2 Beispieldatenbank;826
5.5.3;41.3 Datenzugriff mit den Bordmitteln der PowerShell;827
5.5.4;41.4 Hilfsfroutinen für den Datenbankzugriff (DBUtil.ps1);839
5.5.5;41.5 Datenzugriff mit den PowerShell-Erweiterungen;842
5.5.6;41.6 Datenbankzugriff mit SQLPS;846
5.5.7;41.7 Datenbankzugriff mit SQLPSX;846
5.6;42 Microsoft-SQL-Server-Administration;848
5.6.1;42.1 PowerShell-Integration im SQL Server Management Studio;849
5.6.2;42.2 SQL-Server-Laufwerk „SQLSERVER:“;850
5.6.3;42.3 Die SQLPS-Commandlets;853
5.6.4;42.4 Die SQL Server Management Objects (SMO);855
5.6.5;42.5 SQLPSX;858
5.6.6;42.6 Microsoft-SQL-Server-Administration mit der PowerShell in der Praxis;866
5.7;43 ODBC-Datenquellen;872
5.7.1;43.1 ODBC-Treiber und -Datenquellen auflisten;873
5.7.2;43.2 Anlegen einer ODBC-Datenquelle;874
5.7.3;43.3 Zugriff auf eine ODBC-Datenquelle;875
5.8;44 Registrierungsdatenbank (Registry);878
5.8.1;44.1 Schlüssel auslesen;878
5.8.2;44.2 Schlüssel anlegen und löschen;879
5.8.3;44.3 Laufwerke definieren;879
5.8.4;44.4 Werte anlegen und löschen;880
5.8.5;44.5 Werte auslesen;881
5.8.6;44.6 Praxislösung: Windows-Explorer-Einstellungen;881
5.8.7;44.7 Praxislösung: Massenanlegen von Registry-Schlüsseln;882
5.9;45 Computer- und Betriebssystemverwaltung;884
5.9.1;45.1 Computerinformationen;884
5.9.2;45.2 Versionsnummer des Betriebssystems;886
5.9.3;45.3 Zeitdauer seit dem letzten Start des Betriebssystems;886
5.9.4;45.4 BIOS- und Startinformationen;887
5.9.5;45.5 Windows-Produktaktivierung;888
5.9.6;45.6 Umgebungsvariablen;888
5.9.7;45.7 Schriftarten;891
5.9.8;45.8 Computername und Domäne;892
5.9.9;45.9 Herunterfahren und Neustarten;892
5.9.10;45.10 Windows Updates installieren;893
5.9.11;45.11 Wiederherstellungspunkte verwalten;897
5.10;46 Windows Defender;898
5.11;47 Hardwareverwaltung;900
5.11.1;47.1 Hardwarebausteine;900
5.11.2;47.2 Plug-and-Play-Geräte;902
5.11.3;47.3 Druckerverwaltung (ältere Betriebssysteme);902
5.11.4;47.4 Druckerverwaltung (seit Windows 8 und Windows Server 2012);904
5.12;48 Softwareverwaltung;906
5.12.1;48.1 Softwareinventarisierung;906
5.12.2;48.2 Installation von Anwendungen;910
5.12.3;48.3 Deinstallation von Anwendungen;910
5.12.4;48.4 Praxislösung: Installationstest;911
5.12.5;48.5 Praxislösung: Installierte .NET Core SDKs aufräumen;912
5.12.6;48.6 Windows 10 Apps verwalten;918
5.12.7;48.7 Installationen mit PowerShell Package Management („OneGet“);920
5.12.8;48.8 Versionsnummer ermitteln;923
5.12.9;48.9 Servermanager;925
5.12.10;48.10 Windows-Features installieren auf Windows-Clientbetriebssystemen;935
5.12.11;48.11 Praxislösung: IIS-Installation;938
5.12.12;48.12 Softwareeinschränkungen mit dem PowerShell-Modul „AppLocker“;940
5.13;49 Prozessverwaltung;946
5.13.1;49.1 Prozesse auflisten;946
5.13.2;49.2 Prozesse starten;947
5.13.3;49.3 Prozesse mit vollen Administratorrechten starten;948
5.13.4;49.4 Prozesse unter einem anderen Benutzerkonto starten;949
5.13.5;49.5 Prozesse beenden;950
5.13.6;49.6 Warten auf das Beenden einer Anwendung;951
5.14;50 Windows-Systemdienste;952
5.14.1;50.1 Dienste auflisten;952
5.14.2;50.2 Dienstzustand ändern;955
5.14.3;50.3 Diensteigenschaften ändern;955
5.14.4;50.4 Dienste hinzufügen;956
5.14.5;50.5 Dienste entfernen;957
5.15;51 Netzwerk;958
5.15.1;51.1 Netzwerkkonfiguration;958
5.15.2;51.2 DNS-Client-Konfiguration;963
5.15.3;51.3 DNS-Namensauflösung;967
5.15.4;51.4 Erreichbarkeit prüfen (Ping);968
5.15.5;51.5 Windows Firewall;969
5.15.6;51.6 Remote Desktop (RDP) einrichten;976
5.15.7;51.7 E-Mails senden (SMTP);977
5.15.8;51.8 Auseinandernehmen von E-Mail-Adressen;978
5.15.9;51.9 Abruf von Daten von einem HTTP-Server;978
5.15.10;51.10 Praxislösung: Linkprüfer für eine Website;984
5.15.11;51.11 Aufrufe von SOAP-Webdiensten;988
5.15.12;51.12 Aufruf von REST-Diensten;990
5.15.13;51.13 Aufrufe von OData-Diensten;992
5.15.14;51.14 Hintergrunddatentransfer mit BITS;993
5.16;52 Ereignisprotokolle (Event Log);998
5.16.1;52.1 Protokolleinträge auslesen;998
5.16.2;52.2 Ereignisprotokolle erzeugen;1000
5.16.3;52.3 Protokolleinträge erzeugen;1000
5.16.4;52.4 Protokollgröße festlegen;1000
5.16.5;52.5 Protokolleinträge löschen;1000
5.17;53 Leistungsdaten (Performance Counter);1002
5.17.1;53.1 Zugriff auf Leistungsindikatoren über WMI;1002
5.17.2;53.2 Get-Counter;1003
5.18;54 Sicherheitseinstellungen;1006
5.18.1;54.1 Aktueller Benutzer;1006
5.18.2;54.2 Grundlagen;1007
5.18.3;54.3 Zugriffsrechtelisten auslesen;1012
5.18.4;54.4 Einzelne Rechteeinträge auslesen;1013
5.18.5;54.5 Besitzer auslesen;1015
5.18.6;54.6 Benutzer und SID;1015
5.18.7;54.7 Hinzufügen eines Rechteeintrags zu einer Zugriffsrechteliste;1018
5.18.8;54.8 Entfernen eines Rechteeintrags aus einer Zugriffsrechteliste;1020
5.18.9;54.9 Zugriffsrechteliste übertragen;1022
5.18.10;54.10 Zugriffsrechteliste über SDDL setzen;1022
5.18.11;54.11 Zertifikate verwalten;1023
5.19;55 Optimierungen und Problemlösungen;1026
5.19.1;55.1 PowerShell-Modul „TroubleshootingPack“;1026
5.19.2;55.2 PowerShell-Modul „Best Practices“;1030
5.20;56 Active Directory;1032
5.20.1;56.1 Benutzer- und Gruppenverwaltung mit WMI;1033
5.20.2;56.2 Einführung in System.Directory Services;1034
5.20.3;56.3 Basiseigenschaften;1045
5.20.4;56.4 Benutzer- und Gruppenverwaltung im Active Directory;1047
5.20.5;56.5 Verwaltung der Organisationseinheiten;1055
5.20.6;56.6 Suche im Active Directory;1056
5.20.7;56.7 Navigation im Active Directory mit den PowerShell Extensions;1063
5.20.8;56.8 Verwendung der Active-Directory-Erweiterungen von www.IT-Visions.de;1064
5.20.9;56.9 PowerShell-Modul „Active Directory“ (ADPowerShell);1066
5.20.10;56.10 PowerShell-Modul „ADDSDeployment“;1095
5.20.11;56.11 Informationen über die Active Directory-Struktur;1098
5.21;57 Gruppenrichtlinien;1102
5.21.1;57.1 Verwaltung der Gruppenrichtlinien;1103
5.21.2;57.2 Verknüpfung der Gruppenrichtlinien;1104
5.21.3;57.3 Gruppenrichtlinienberichte;1106
5.21.4;57.4 Gruppenrichtlinienvererbung;1108
5.21.5;57.5 Weitere Möglichkeiten;1109
5.22;58 Lokale Benutzer und Gruppen;1110
5.22.1;58.1 Modul „Microsoft.PowerShell. LocalAccounts“;1110
5.22.2;58.2 Lokale Benutzerverwaltung in älteren PowerShell-Versionen;1112
5.23;59 Microsoft Exchange Server;1114
5.23.1;59.1 Daten abrufen;1114
5.23.2;59.2 Postfächer verwalten;1115
5.23.3;59.3 Öffentliche Ordner verwalten;1116
5.24;60 Internet Information Services (IIS);1118
5.24.1;60.1 Überblick;1118
5.24.2;60.2 Navigationsprovider;1120
5.24.3;60.3 Anlegen von Websites;1122
5.24.4;60.4 Praxislösung: Massenanlegen von Websites;1123
5.24.5;60.5 Ändern von Website-Eigenschaften;1126
5.24.6;60.6 Anwendungspool anlegen;1126
5.24.7;60.7 Virtuelle Verzeichnisse und IIS-Anwendungen;1127
5.24.8;60.8 Website-Zustand ändern;1128
5.24.9;60.9 Anwendungspools starten und stoppen;1128
5.24.10;60.10 Löschen von Websites;1129
5.25;61 Virtuelle Systeme mit Hyper-V;1130
5.25.1;61.1 Das Hyper-V-Modul von Microsoft;1131
5.25.2;61.2 Die ersten Schritte mit dem Hyper-V-Modul;1133
5.25.3;61.3 Virtuelle Maschinen anlegen;1137
5.25.4;61.4 Umgang mit virtuellen Festplatten;1143
5.25.5;61.5 Konfiguration virtueller Maschinen;1146
5.25.6;61.6 Dateien kopieren in virtuelle Systeme;1150
5.25.7;61.7 PowerShell Management Library for Hyper-V (für ältere Betriebssysteme);1151
5.26;62 Windows Nano Server;1154
5.26.1;62.1 Das Konzept von Nano Server;1154
5.26.2;62.2 Einschränkungen von Nano Server;1156
5.26.3;62.3 Varianten des Nano Servers;1158
5.26.4;62.4 Installation eines Nano Servers;1158
5.26.5;62.5 Docker-Image;1159
5.26.6;62.6 Fernverwaltung mit PowerShell;1160
5.26.7;62.7 Windows Update auf einem Nano Server;1162
5.26.8;62.8 Nachträgliche Paketinstallation;1162
5.26.9;62.9 Abgespeckter IIS unter Nano Server;1164
5.26.10;62.10 Nano-Serververwaltung aus der Cloud heraus;1165
5.27;63 Docker-Container;1166
5.27.1;63.1 Docker-Varianten für Windows;1167
5.27.2;63.2 Docker-Installation auf Windows 10;1168
5.27.3;63.3 Docker-Installation auf Windows Server;1170
5.27.4;63.4 Installation von „Docker for Windows“;1171
5.27.5;63.5 Docker-Registries;1173
5.27.6;63.6 Docker-Images laden;1173
5.27.7;63.7 Container starten;1173
5.27.8;63.8 Container-Identifikation;1175
5.27.9;63.9 Container mit Visual Studio;1176
5.27.10;63.10 Befehle in einem Container ausführen;1178
5.27.11;63.11 Ressourcenbeschränkungen für Container;1181
5.27.12;63.12 Dateien zwischen Container und Host kopieren;1181
5.27.13;63.13 Dockerfile;1181
5.27.14;63.14 Docker-Netzwerke;1182
5.27.15;63.15 Container anlegen, ohne sie zu starten;1183
5.27.16;63.16 Container starten und stoppen;1183
5.27.17;63.17 Container beenden und löschen;1183
5.27.18;63.18 Images löschen;1184
5.27.19;63.19 Images aus Containern erstellen;1184
5.27.20;63.20 .NET Core-Container;1185
5.27.21;63.21 Images verbreiten;1187
5.27.22;63.22 Azure Container Service (ACS);1189
5.28;64 Microsoft Azure;1190
5.28.1;64.1 Azure Konzepte;1190
5.28.2;64.2 Kommandozeilenwerkzeuge für die Azure-Verwaltung;1191
5.28.3;64.3 Benutzeranmeldung und Informationsabfrage;1195
5.28.4;64.4 Azure Ressourcen-Gruppen;1196
5.28.5;64.5 Azure Web Apps;1196
5.28.6;64.6 Azure SQL Server;1198
5.28.7;64.7 Azure Kubernetes Services (AKS);1199
5.28.8;64.8 Azure DevOps;1223
5.29;65 Grafische Benutzeroberflächen (GUI);1238
5.29.1;65.1 Einfache Nachfragedialoge;1238
5.29.2;65.2 Einfache Eingabe mit Inputbox;1240
5.29.3;65.3 Komplexere Eingabemasken;1240
5.29.4;65.4 Universelle Objektdarstellung;1242
5.29.5;65.5 WPF PowerShell Kit (WPK);1244
5.29.6;65.6 Direkte Verwendung von WPF;1252
6;Teil D: Profiwissen – Erweitern der PowerShell;1254
6.1;66 Entwicklung von Commandlets in der PowerShell-Skriptsprache;1256
6.1.1;66.1 Aufbau eines skriptbasierten Commandlets;1256
6.1.2;66.2 Verwendung per Dot Sourcing;1258
6.1.3;66.3 Parameterfestlegung;1259
6.1.4;66.4 Fortgeschrittene Funktion (Advanced Function);1265
6.1.5;66.5 Mehrere Parameter und Parametersätze;1269
6.1.6;66.6 Unterstützung für Sicherheitsabfragen (-whatif und -confirm);1271
6.1.7;66.7 Kaufmännisches Beispiel: Test-CustomerID;1272
6.1.8;66.8 Erweitern bestehender Commandlets durch Proxy-Commandlets;1276
6.1.9;66.9 Dokumentation;1281
6.2;67 Entwicklung eigener Commandlets mit C#;1284
6.2.1;67.1 Technische Voraussetzungen;1285
6.2.2;67.2 Grundkonzept der .NET-basierten Commandlets;1286
6.2.3;67.3 Schrittweise Erstellung eines minimalen Commandlets;1288
6.2.4;67.4 Erstellung eines Commandlets mit einem Rückgabeobjekt;1297
6.2.5;67.5 Erstellung eines Commandlets mit mehreren Rückgabeobjekten;1298
6.2.6;67.6 Erstellen eines Commandlets mit Parametern;1303
6.2.7;67.7 Verarbeiten von Pipeline-Eingaben;1305
6.2.8;67.8 Verkettung von Commandlets;1308
6.2.9;67.9 Fehlersuche in Commandlets;1312
6.2.10;67.10 Statusinformationen;1315
6.2.11;67.11 Unterstützung für Sicherheitsabfragen (-whatif und -confirm);1320
6.2.12;67.12 Festlegung der Hilfeinformationen;1322
6.2.13;67.13 Erstellung von Commandlets für den Zugriff auf eine Geschäftsanwendung;1327
6.2.14;67.14 Konventionen für Commandlets;1328
6.2.15;67.15 Weitere Möglichkeiten;1330
6.3;68 PowerShell-Module erstellen;1332
6.3.1;68.1 Erstellen eines Skriptmoduls;1332
6.3.2;68.2 Praxislösung: Umwandlung einer Skriptdatei in ein Modul;1334
6.3.3;68.3 Erstellen eines Moduls mit Binärdateien;1334
6.3.4;68.4 Erstellen eines Moduls mit Manifest;1335
6.3.5;68.5 Erstellung eines Manifest-Moduls mit Visual Studio;1342
6.4;69 Hosting der PowerShell;1344
6.4.1;69.1 Voraussetzungen für das Hosting;1345
6.4.2;69.2 Hosting mit PSHost;1346
6.4.3;69.3 Vereinfachtes Hosting seit PowerShell 2.0;1349
7;Anhang A: Crashkurs Objektorientierung;1352
8;Anhang B: Crashkurs .NET;1360
8.1;B.1 Was ist das .NET Framework?;1362
8.2;B.2 Was ist .NET Core?;1363
8.3;B.3 Eigenschaften von .NET;1364
8.4;B.4 .NET-Klassen;1365
8.5;B.5 Namensgebung von .NET-Klassen (Namensräume);1365
8.6;B.6 Namensräume und Softwarekomponenten;1367
8.7;B.7 Bestandteile einer .NET-Klasse;1368
8.8;B.8 Vererbung;1369
8.9;B.9 Schnittstellen;1369
9;Anhang C: Literatur;1370
10;Anhang D: Weitere Informationen im Internet;1374
11;Anhang E: Abkürzungsverzeichnis;1376
12;Stichwortverzeichnis;1402