Schwichtenberg | Windows PowerShell 5 und PowerShell 7 | E-Book | sack.de
E-Book

E-Book, Deutsch, 1420 Seiten

Schwichtenberg Windows PowerShell 5 und PowerShell 7

Das Praxisbuch

E-Book, Deutsch, 1420 Seiten

ISBN: 978-3-446-46081-2
Verlag: Hanser, Carl
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)



Das Windows PowerShell-Praxisbuch für Einsteiger und ProfisDie Windows PowerShell ist Microsofts mächtige Lösung für die kommandozeilenbasierte Administration und Scripting in Windows. Administratoren bietet diese aktualisierte und erweiterte Neuauflage eine umfassende Darstellung der vielfältigen Einsatzmöglichkeiten der PowerShell sowie ergänzender Commandlet- und Klassenbibliotheken. Sie enthält über 2.000 Code-Beispiele für die kommandozeilenbasierte Administration und das Scripting in Windows, Linux und macOS.Profitieren Sie vom Know-how des bekannten .NET- und Scripting-Experten Dr. Holger SchwichtenbergIn Teil 1 und 2 des Buches erhalten Sie eine Einführung in die Konzepte der PowerShell und lernen dann in Teil 3, wie Sie PowerShell in zahlreichen Anwendungsgebieten praktisch einsetzen. Fortgeschrittene Administratoren erfahren schließlich in Teil 4, wie Sie die PowerShell erweitern können, u. a. durch die Entwicklung eigener Commandlets.• Das Buch wurde auf PowerShell 7 aktualisiert.Es kann aber auch für die Vorgängerversionen eingesetzt werden; die Unterschiede sind im Buch beschrieben.• Berücksichtigt werden alle Windows-Versionen ab Windows XP bzw. Windows Server 2003 einschließlich der neuesten Versionen von Windows 10 und Windows Server 2019.• Das Buch beschreibt auch die Verwendung von PowerShell Core auf macOS und Linux.• Codebeispiele, PowerShell-Kurzreferenz, Feedback-Möglichkeiten und Forum finden Sie auf der Website zum Buch.
Schwichtenberg Windows PowerShell 5 und PowerShell 7 jetzt bestellen!

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


Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.