Inhalt | 6 |
Vorwort zur sechsten Auflage | 24 |
Über den Autor Dr. Holger Schwichtenberg | 30 |
Teil A: PowerShell-Basiswissen | 32 |
1 Erste Schritte mit der PowerShell | 34 |
1.1 Was ist die PowerShell? | 34 |
1.2 Windows PowerShell versus PowerShell Core | 35 |
1.3 Geschichte der PowerShell | 35 |
1.4 Motivation zur PowerShell | 37 |
1.5 Betriebssysteme mit vorinstallierter PowerShell | 40 |
1.6 Windows PowerShell herunterladen und auf anderen Windows-Betriebssystemen installieren | 41 |
1.7 Die Windows PowerShell testen | 45 |
1.8 PowerShell Core installieren und testen | 54 |
1.9 Woher kommen die Commandlets? | 57 |
1.10 PowerShell Community Extensions (PSCX) herunterladen und installieren | 58 |
1.11 Den Windows PowerShell-Editor „ISE“ verwenden | 60 |
2 Architektur der PowerShell | 64 |
3 Einzelbefehle der PowerShell | 68 |
3.1 Commandlets | 68 |
3.2 Aliase | 81 |
3.3 Ausdrücke | 89 |
3.4 Externe Befehle | 90 |
3.5 Dateinamen | 91 |
4 Hilfefunktionen | 94 |
4.1 Auflisten der verfügbaren Befehle | 94 |
4.2 Volltextsuche | 96 |
4.3 Erläuterungen zu den Befehlen | 97 |
4.4 Hilfe zu Parametern | 98 |
4.5 Hilfe mit Show-Command | 100 |
4.6 Hilfefenster | 101 |
4.7 Allgemeine Hilfetexte | 103 |
4.8 Aktualisieren der Hilfedateien | 104 |
4.9 Online-Hilfe | 106 |
4.10 Fehlende Hilfetexte | 107 |
4.11 Dokumentation der .NET-Klassen | 108 |
5 Objektorientiertes Pipelining | 112 |
5.1 Pipeline-Operator | 112 |
5.2 .NET-Objekte in der Pipeline | 113 |
5.3 Pipeline Processor | 115 |
5.4 Pipelining von Parametern | 116 |
5.5 Pipelining von klassischen Befehlen | 119 |
5.6 Anzahl der Objekte in der Pipeline | 120 |
5.7 Zeilenumbrüche in Pipelines | 121 |
5.8 Zugriff auf einzelne Objekte aus einer Menge | 121 |
5.9 Zugriff auf einzelne Werte in einem Objekt | 123 |
5.10 Methoden ausführen | 124 |
5.11 Analyse des Pipeline-Inhalts | 126 |
5.12 Filtern | 138 |
5.13 Zusammenfassung von Pipeline-Inhalten | 141 |
5.14 „Kastrierung“ von Objekten in der Pipeline | 142 |
5.15 Sortieren | 143 |
5.16 Duplikate entfernen | 144 |
5.17 Gruppierung | 145 |
5.18 Berechnungen | 147 |
5.19 Zwischenschritte in der Pipeline mit Variablen | 147 |
5.20 Verzweigungen in der Pipeline | 148 |
5.21 Vergleiche zwischen Objekten | 150 |
5.22 Zusammenfassung | 151 |
5.23 Praxisbeispiele | 152 |
6 PowerShell-Skripte | 154 |
6.1 Skriptdateien | 154 |
6.2 Start eines Skripts | 156 |
6.3 Aliase für Skripte verwenden | 157 |
6.4 Parameter für Skripte | 158 |
6.5 Skripte dauerhaft einbinden (Dot Sourcing) | 159 |
6.6 Das aktuelle Skriptverzeichnis | 160 |
6.7 Sicherheitsfunktionen für PowerShell-Skripte | 160 |
6.8 Anforderungsdefinitionen von Skripten | 163 |
6.9 Skripte anhalten | 163 |
6.10 Versionierung und Versionsverwaltung von Skripten | 164 |
7 PowerShell-Skriptsprache | 166 |
7.1 Hilfe zur PowerShell-Skriptsprache | 166 |
7.2 Befehlstrennung | 167 |
7.3 Kommentare | 167 |
7.4 Variablen | 168 |
7.5 Variablenbedingungen | 178 |
7.6 Zahlen | 179 |
7.7 Zeichenketten (Strings) | 181 |
7.8 Reguläre Ausdrücke | 190 |
7.9 Datum und Uhrzeit | 197 |
7.10 Arrays | 198 |
7.11 ArrayList | 201 |
7.12 Assoziative Arrays (Hash-Tabellen) | 202 |
7.13 Operatoren | 203 |
7.14 Überblick über die Kontrollkonstrukte | 208 |
7.15 Schleifen | 208 |
7.16 Bedingungen | 213 |
7.17 Unterroutinen (Prozedur/Funktionen) | 215 |
7.18 Eingebaute Funktionen | 222 |
7.19 Fehlerbehandlung | 222 |
7.20 Objektorientiertes Programmieren mit Klassen | 230 |
8 Ausgaben | 234 |
8.1 Ausgabe-Commandlets | 234 |
8.2 Benutzerdefinierte Tabellenformatierung | 237 |
8.3 Benutzerdefinierte Listenausgabe | 239 |
8.4 Mehrspaltige Ausgabe | 239 |
8.5 Out-GridView | 240 |
8.6 Standardausgabe | 242 |
8.7 Einschränkung der Ausgabe | 244 |
8.8 Seitenweise Ausgabe | 244 |
8.9 Ausgabe einzelner Werte | 245 |
8.10 Details zum Ausgabeoperator | 247 |
8.11 Ausgabe von Methodenergebnissen und Unterobjekten in Pipelines | 251 |
8.12 Ausgabe von Methodenergebnissen und Unterobjekten in Zeichenketten | 251 |
8.13 Unterdrückung der Ausgabe | 252 |
8.14 Ausgaben an Drucker | 253 |
8.15 Ausgaben in Dateien | 253 |
8.16 Umleitungen (Redirection) | 254 |
8.17 Fortschrittsanzeige | 254 |
8.18 Sprachausgabe | 255 |
9 Das PowerShell-Navigationsmodell | 258 |
9.1 Einführungsbeispiel: Navigation in der Registrierungsdatenbank | 258 |
9.2 Provider und Laufwerke | 259 |
9.3 Navigationsbefehle | 262 |
9.4 Pfadangaben | 262 |
9.5 Beispiel | 264 |
9.6 Eigene Laufwerke definieren | 265 |
10 Fernausführung (Remoting) | 266 |
10.1 RPC-Fernabfrage ohne WS-Management | 267 |
10.2 Anforderungen an PowerShell Remoting | 268 |
10.3 Rechte für PowerShell-Remoting | 269 |
10.4 Einrichten von PowerShell Remoting | 270 |
10.5 Überblick über die Fernausführungs-Commandlets | 272 |
10.6 Interaktive Fernverbindungen im Telnet-Stil | 273 |
10.7 Fernausführung von Befehlen | 274 |
10.8 Parameterübergabe an die Fernausführung | 278 |
10.9 Fernausführung von Skripten | 279 |
10.10 Ausführung auf mehreren Computern | 280 |
10.11 Sitzungen | 281 |
10.12 Implizites Remoting | 286 |
10.13 Zugriff auf entfernte Computer außerhalb der eigenen Domäne | 287 |
10.14 Verwaltung des WS-Management-Dienstes | 290 |
10.15 PowerShell Direct für Hyper-V | 292 |
10.16 Praxisbeispiel zu PowerShell Direct | 294 |
11 PowerShell-Werkzeuge | 298 |
11.1 PowerShell-Standardkonsole | 298 |
11.2 PowerShell Integrated Scripting Environment (ISE) | 307 |
11.3 PowerShell Script Analyzer | 317 |
11.4 PowerShell Analyzer | 323 |
11.5 PowerShell Tools for Visual Studio | 324 |
11.6 PowerShell Pro Tools for Visual Studio | 325 |
11.7 NuGet Package Manager | 326 |
11.8 PowerShell-Erweiterung für Visual Studio Code | 326 |
11.9 PowerShell Web Access (PSWA) | 329 |
11.10 Azure Cloud Shell | 335 |
11.11 ISE Steroids | 335 |
11.12 PowerShellPlus | 336 |
11.13 PoshConsole | 339 |
11.14 PowerGUI | 340 |
11.15 PrimalScript | 341 |
11.16 PowerShell Help | 343 |
11.17 CIM Explorer for PowerShell ISE | 343 |
11.18 PowerShell Help Reader | 344 |
11.19 PowerShell Remoting | 345 |
12 Windows PowerShell Core 5.1 in Windows Nano Server | 346 |
13 PowerShell Core 6.x für Windows, Linux und MacOS | 348 |
13.1 Funktionsumfang der PowerShell Core | 349 |
13.2 PowerShell Core-Konsole | 355 |
13.3 VSCode-PowerShell | 356 |
13.4 Verwendung auf Linux und MacOS | 357 |
13.5 PowerShell-Remoting via SSH | 361 |
Teil B: PowerShell-Aufbauwissen | 364 |
14 Verwendung von .NET-Klassen | 366 |
14.1 Microsoft Developer Network (MSDN) | 366 |
14.2 Erzeugen von Instanzen | 367 |
14.3 Parameterbehaftete Konstruktoren | 369 |
14.4 Initialisierung von Objekten | 370 |
14.5 Nutzung von Attributen und Methoden | 371 |
14.6 Statische Mitglieder in .NET-Klassen und statische .NET-Klassen | 373 |
14.7 Generische Klassen nutzen | 377 |
14.8 Zugriff auf bestehende Objekte | 378 |
14.9 Laden von Assemblies | 378 |
14.10 Objektanalyse | 381 |
14.11 Auflistungen (Enumerationen) | 381 |
14.12 Verknüpfen von Aufzählungswerten | 382 |
15 Verwendung von COM-Klassen | 384 |
15.1 Erzeugen von COM-Instanzen | 384 |
15.2 Nutzung von Attributen und Methoden | 385 |
15.3 Liste aller COM-Klassen | 386 |
15.4 Holen bestehender COM-Instanzen | 387 |
15.5 Distributed COM (DCOM) | 387 |
16 Zugriff auf die Windows Management Instrumentation (WMI) | 388 |
16.1 Einführung in WMI | 388 |
16.2 WMI in der PowerShell | 415 |
16.3 Open Management Infrastructure (OMI) | 417 |
16.4 Abruf von WMI-Objektmengen | 417 |
16.5 Fernzugriffe | 418 |
16.6 Filtern und Abfragen | 418 |
16.7 Liste aller WMI-Klassen | 422 |
16.8 Hintergrundwissen: WMI-Klassenprojektion mit dem PowerShell-WMI-Objektadapter | 423 |
16.9 Beschränkung der Ausgabeliste bei WMI-Objekten | 427 |
16.10 Zugriff auf einzelne Mitglieder von WMI-Klassen | 429 |
16.11 Werte setzen in WMI-Objekten | 429 |
16.12 Umgang mit WMI-Datumsangaben | 431 |
16.13 Methodenaufrufe | 432 |
16.14 Neue WMI-Instanzen erzeugen | 433 |
16.15 Instanzen entfernen | 434 |
16.16 Commandlet Definition XML-Datei (CDXML) | 435 |
17 Dynamische Objekte | 438 |
17.1 Erweitern bestehender Objekte | 438 |
17.2 Komplett dynamische Objekte | 440 |
18 Einbinden von C# und Visual Basic .NET | 442 |
19 Win32-API-Aufrufe | 444 |
20 Benutzereingaben | 448 |
20.1 Read-Host | 448 |
20.2 Benutzerauswahl | 449 |
20.3 Grafischer Eingabedialog | 450 |
20.4 Dialogfenster | 451 |
20.5 Authentifizierungsdialog | 451 |
20.6 Zwischenablage (Clipboard) | 453 |
21 Fehlersuche | 456 |
21.1 Detailinformationen | 456 |
21.2 Einzelschrittmodus | 457 |
21.3 Zeitmessung | 458 |
21.4 Ablaufverfolgung (Tracing) | 459 |
21.5 Erweiterte Protokollierung aktivieren | 460 |
21.6 Script-Debugging in der ISE | 462 |
21.7 Kommandozeilenbasiertes Script-Debugging | 462 |
22 Transaktionen | 464 |
22.1 Commandlets für Transaktionen | 464 |
22.2 Start und Ende einer Transaktion | 465 |
22.3 Zurücksetzen der Transaktion | 466 |
22.4 Mehrere Transaktionen | 467 |
23 Standardeinstellungen ändern mit Profilskripten | 468 |
23.1 Profilpfade | 468 |
23.2 Ausführungsreihenfolge | 470 |
23.3 Beispiel für eine Profildatei | 470 |
23.4 Starten der PowerShell ohne Profilskripte | 471 |
24 Digitale Signaturen für PowerShell-Skripte | 472 |
24.1 Zertifikat erstellen | 472 |
24.2 Skripte signieren | 474 |
24.3 Verwenden signierter Skripte | 475 |
24.4 Mögliche Fehlerquellen | 476 |
25 Hintergrundaufträge („Jobs“) | 478 |
25.1 Voraussetzungen | 478 |
25.2 Architektur | 479 |
25.3 Starten eines Hintergrundauftrags | 479 |
25.4 Hintergrundaufträge abfragen | 480 |
25.5 Warten auf einen Hintergrundauftrag | 481 |
25.6 Abbrechen und Löschen von Aufträgen | 481 |
25.7 Analyse von Fehlermeldungen | 482 |
25.8 Fernausführung von Hintergrundaufträgen | 482 |
25.9 Praxisbeispiel | 483 |
26 Geplante Aufgaben und zeitgesteuerte Jobs | 486 |
26.1 Geplante Aufgaben (Scheduled Tasks) | 486 |
26.2 Zeitgesteuerte Jobs | 490 |
27 PowerShell-Workflows | 496 |
27.1 Ein erstes Beispiel | 496 |
27.2 Unterschiede zu einer Function bzw. einem Skript | 501 |
27.3 Einschränkungen bei Workflows | 501 |
27.4 Workflows in der Praxis | 503 |
27.5 Workflows in Visual Studio erstellen | 510 |
28 Ereignissystem | 528 |
28.1 WMI-Ereignisse | 528 |
28.2 WMI-Ereignisabfragen | 528 |
28.3 WMI-Ereignisse seit PowerShell 1.0 | 530 |
28.4 Registrieren von WMI-Ereignisquellen seit PowerShell 2.0 | 531 |
28.5 Auslesen der Ereignisliste | 532 |
28.6 Reagieren auf Ereignisse | 534 |
28.7 WMI-Ereignisse ab PowerShell- Version 3.0 | 536 |
28.8 Registrieren von .NET-Ereignissen | 536 |
28.9 Erzeugen von Ereignissen | 537 |
29 Datenbereiche und Datendateien | 540 |
29.1 Datenbereiche | 540 |
29.2 Datendateien | 542 |
29.3 Mehrsprachigkeit/Lokalisierung | 543 |
30 Desired State Configuration (DSC) | 546 |
30.1 Grundprinzipien | 547 |
30.2 DSC für Linux | 547 |
30.3 Ressourcen | 548 |
30.4 Verfügbare DSC-Ressourcen | 548 |
30.5 Eigenschaften einer Ressource | 551 |
30.6 Aufbau eines DSC-Dokuments | 551 |
30.7 Commandlets für die Arbeit mit DSC | 552 |
30.8 Ein erstes DSC-Beispiel | 552 |
30.9 Kompilieren und Anwendung eines DSC-Dokuments | 553 |
30.10 Variablen in DSC-Dateien | 555 |
30.11 Parameter für DSC-Dateien | 556 |
30.12 Konfigurationsdaten | 557 |
30.13 Entfernen einer DSC-Konfiguration | 560 |
30.14 DSC Pull Server | 563 |
30.15 DSC-Praxisbeispiel 1: IIS installieren | 571 |
30.16 DSC-Praxisbeispiel 2: Software installieren | 572 |
30.17 DSC-Praxisbeispiel 3: Software deinstallieren | 574 |
30.18 Realisierung einer DSC-Ressource | 575 |
30.19 Weitere Möglichkeiten | 576 |
31 PowerShell-Snap-Ins | 578 |
31.1 Einbinden von Snap-Ins | 578 |
31.2 Liste der Commandlets | 582 |
32 PowerShell-Module | 584 |
32.1 Überblick über die Commandlets | 584 |
32.2 Modularchitektur | 585 |
32.3 Module aus dem Netz herunterladen und installieren mit PowerShellGet | 586 |
32.4 Module manuell installieren | 593 |
32.5 Doppeldeutige Namen | 593 |
32.6 Auflisten der verfügbaren Module | 594 |
32.7 Importieren von Modulen | 596 |
32.8 Entfernen von Modulen | 599 |
33 Ausgewählte PowerShell-Erweiterungen | 600 |
33.1 PowerShell-Module in Windows 7 und Windows Server 2008 R2 | 601 |
33.2 PowerShell-Module in Windows 8.0 und Windows Server 2012 | 602 |
33.3 PowerShell-Module in Windows 8.1 und Windows Server 2012 R2 | 604 |
33.4 PowerShell-Module in Windows 10 und Windows Server 2016 | 607 |
33.5 PowerShell Community Extensions (PSCX) | 611 |
33.6 PowerShellPack | 615 |
33.7 www.IT-Visions.de PowerShell Extensions | 616 |
33.8 Quest Management Shell for Active Directory | 617 |
33.9 Microsoft Exchange Server | 618 |
33.10 System Center Virtual Machine Manager | 619 |
33.11 PowerShell Management Library for Hyper-V (pshyperv) | 620 |
33.12 Powershell Outlook Account Manager | 621 |
33.13 PowerShell Configurator (PSConfig) | 622 |
33.14 Weitere Erweiterungen | 623 |
34 Delegierte Administration/Just Enough Administration (JEA) | 624 |
34.1 JEA-Konzept | 624 |
34.2 PowerShell-Sitzungskonfiguration erstellen | 624 |
34.3 Sitzungskonfiguration nutzen | 628 |
34.4 Delegierte Administration per Webseite | 629 |
35 Tipps und Tricks zur PowerShell | 630 |
35.1 Alle Anzeigen löschen | 630 |
35.2 Befehlsgeschichte | 630 |
35.3 System- und Hostinformationen | 631 |
35.4 Anpassen der Eingabeaufforderung (Prompt) | 632 |
35.5 PowerShell-Befehle aus anderen Anwendungen heraus starten | 633 |
35.6 ISE erweitern | 634 |
35.7 PowerShell für Gruppenrichtlinienskripte | 635 |
35.8 Einblicke in die Interna der Pipeline-Verarbeitung | 637 |
Teil C: PowerShell im Praxiseinsatz | 640 |
36 Dateisystem | 642 |
36.1 Laufwerke | 643 |
36.2 Ordnerinhalte | 648 |
36.3 Dateieigenschaften verändern | 650 |
36.4 Eigenschaften ausführbarer Dateien | 651 |
36.5 Kurznamen | 653 |
36.6 Lange Pfade | 653 |
36.7 Dateisystemoperationen | 654 |
36.8 Praxisbeispiel: Zufällige Dateisystemstruktur erzeugen | 655 |
36.9 Praxisbeispiel: Leere Ordner löschen | 656 |
36.10 Einsatz von Robocopy | 657 |
36.11 Dateisystemkataloge | 660 |
36.12 Papierkorb leeren | 661 |
36.13 Dateieigenschaften lesen | 661 |
36.14 Praxisbeispiel: Fotos nach Aufnahmedatum sortieren | 662 |
36.15 Datei-Hash | 663 |
36.16 Finden von Duplikaten | 664 |
36.17 Verknüpfungen im Dateisystem | 666 |
36.18 Komprimierung | 671 |
36.19 Dateisystemfreigaben | 673 |
36.20 Überwachung des Dateisystems | 684 |
36.21 Dateiversionsverlauf | 685 |
36.22 Windows Explorer öffnen | 686 |
36.23 Windows Server Backup | 686 |
37 Festplattenverschlüsselung mit BitLocker | 690 |
37.1 Übersicht über das BitLocker-Modul | 691 |
37.2 Verschlüsseln eines Laufwerks | 692 |
38 Dokumente | 694 |
38.1 Textdateien | 694 |
38.2 CSV-Dateien | 695 |
38.3 Analysieren von Textdateien | 698 |
38.4 INI-Dateien | 701 |
38.5 XML-Dateien | 702 |
38.6 HTML-Dateien | 710 |
38.7 Binärdateien | 710 |
39 Datenbanken | 712 |
39.1 ADO.NET-Grundlagen | 712 |
39.2 Beispieldatenbank | 718 |
39.3 Datenzugriff mit den Bordmitteln der PowerShell | 719 |
39.4 Datenzugriff mit den PowerShell-Erweiterungen | 730 |
39.5 Datenbankzugriff mit SQLPS | 733 |
39.6 Datenbankzugriff mit SQLPSX | 733 |
40 Microsoft-SQL-Server-Administration | 734 |
40.1 PowerShell-Integration im SQL Server Management Studio | 735 |
40.2 SQL-Server-Laufwerk „SQLSERVER:“ | 736 |
40.3 Die SQLPS-Commandlets | 739 |
40.4 Die SQL Server Management Objects (SMO) | 741 |
40.5 SQLPSX | 744 |
40.6 Microsoft-SQL-Server-Administration mit der PowerShell in der Praxis | 752 |
41 ODBC-Datenquellen | 758 |
41.1 ODBC-Treiber und -Datenquellen auflisten | 759 |
41.2 Anlegen einer ODBC-Datenquelle | 760 |
41.3 Zugriff auf eine ODBC-Datenquelle | 761 |
42 Registrierungsdatenbank (Registry) | 764 |
42.1 Schlüssel auslesen | 764 |
42.2 Schlüssel anlegen und löschen | 765 |
42.3 Laufwerke definieren | 765 |
42.4 Werte anlegen und löschen | 766 |
42.5 Werte auslesen | 767 |
42.6 Praxisbeispiel: Windows-Explorer-Einstellungen | 767 |
42.7 Praxisbeispiel: Massenanlegen von Registry-Schlüsseln | 768 |
43 Computer- und Betriebssystemverwaltung | 770 |
43.1 Computerinformationen | 770 |
43.2 Versionsnummer des Betriebssystems | 772 |
43.3 Zeitdauer seit dem letzten Start des Betriebssystems | 772 |
43.4 BIOS- und Startinformationen | 773 |
43.5 Windows-Produktaktivierung | 773 |
43.6 Umgebungsvariablen | 773 |
43.7 Schriftarten | 776 |
43.8 Computername und Domäne | 777 |
43.9 Herunterfahren und Neustarten | 777 |
43.10 Windows Updates installieren | 778 |
43.11 Wiederherstellungspunkte verwalten | 782 |
44 Windows Defender | 784 |
45 Hardwareverwaltung | 786 |
45.1 Hardwarebausteine | 786 |
45.2 Plug-and-Play-Geräte | 788 |
45.3 Druckerverwaltung (ältere Betriebssysteme) | 788 |
45.4 Druckerverwaltung (seit Windows 8 und Windows Server 2012) | 789 |
46 Softwareverwaltung | 792 |
46.1 Softwareinventarisierung | 792 |
46.2 Installation von Anwendungen | 795 |
46.3 Deinstallation von Anwendungen | 796 |
46.4 Praxisbeispiel: Installationstest | 796 |
46.5 Installationen mit PowerShell Package Management („OneGet“) | 797 |
46.6 Versionsnummer ermitteln | 800 |
46.7 Servermanager | 801 |
46.8 Softwareeinschränkungen mit dem PowerShell-Modul „AppLocker“ | 812 |
47 Prozessverwaltung | 818 |
47.1 Prozesse auflisten | 818 |
47.2 Prozesse starten | 819 |
47.3 Prozesse mit vollen Administratorrechten starten | 820 |
47.4 Prozesse unter einem anderen Benutzerkonto starten | 821 |
47.5 Prozesse beenden | 822 |
47.6 Warten auf das Beenden einer Anwendung | 823 |
48 Systemdienste | 824 |
48.1 Dienste auflisten | 824 |
48.2 Dienstzustand ändern | 826 |
48.3 Diensteigenschaften ändern | 827 |
49 Netzwerk | 828 |
49.1 Netzwerkkonfiguration (ältere Betriebssysteme) | 828 |
49.2 Netzwerkkonfiguration (ab Windows 8 und Windows Server 2012) | 830 |
49.3 DNS-Client-Konfiguration | 833 |
49.4 DNS-Namensauflösung | 836 |
49.5 Erreichbarkeit prüfen (Ping) | 838 |
49.6 Windows Firewall | 839 |
49.7 Remote Desktop (RDP) einrichten | 845 |
49.8 E-Mails senden (SMTP) | 846 |
49.9 Auseinandernehmen von E-Mail-Adressen | 848 |
49.10 Abruf von Daten von einem HTTP-Server | 848 |
49.11 Praxisbeispiel: Linkprüfer für eine Website | 850 |
49.12 Aufrufe von SOAP-Webdiensten | 853 |
49.13 Aufruf von REST-Diensten | 855 |
49.14 Aufrufe von OData-Diensten | 857 |
49.15 Hintergrunddatentransfer mit BITS | 858 |
50 Ereignisprotokolle (Event Log) | 862 |
51 Leistungsdaten (Performance Counter) | 866 |
51.1 Zugriff auf Leistungsindikatoren über WMI | 866 |
51.2 Get-Counter | 867 |
52 Sicherheitseinstellungen | 870 |
52.1 Aktueller Benutzer | 870 |
52.2 Grundlagen | 871 |
52.3 Zugriffsrechtelisten auslesen | 876 |
52.4 Einzelne Rechteeinträge auslesen | 877 |
52.5 Besitzer auslesen | 879 |
52.6 Benutzer und SID | 879 |
52.7 Hinzufügen eines Rechteeintrags zu einer Zugriffsrechteliste | 882 |
52.8 Entfernen eines Rechteeintrags aus einer Zugriffsrechteliste | 885 |
52.9 Zugriffsrechteliste übertragen | 886 |
52.10 Zugriffsrechteliste über SDDL setzen | 887 |
52.11 Zertifikate verwalten | 888 |
53 Optimierungen und Problemlösungen | 892 |
53.1 PowerShell-Modul „TroubleshootingPack“ | 892 |
53.2 PowerShell-Modul „Best Practices“ | 896 |
54 Active Directory | 898 |
54.1 Benutzer- und Gruppenverwaltung mit WMI | 899 |
54.2 Einführung in System.DirectoryServices | 900 |
54.3 Basiseigenschaften | 911 |
54.4 Benutzer- und Gruppenverwaltung im Active Directory | 913 |
54.5 Verwaltung der Organisationseinheiten | 921 |
54.6 Suche im Active Directory | 922 |
54.7 Navigation im Active Directory mit den PowerShell Extensions | 929 |
54.8 Verwendung der Active-Directory-Erweiterungen von www.IT-Visions.de | 930 |
54.9 PowerShell-Modul „Active Directory“ (ADPowerShell) | 932 |
54.10 PowerShell-Modul „ADDSDeployment“ | 955 |
54.11 Informationen über die Active–Directory-Struktur | 957 |
55 Gruppenrichtlinien | 960 |
55.1 Verwaltung der Gruppenrichtlinien | 961 |
55.2 Verknüpfung der Gruppenrichtlinien | 962 |
55.3 Gruppenrichtlinienberichte | 964 |
55.4 Gruppenrichtlinienvererbung | 965 |
55.5 Weitere Möglichkeiten | 966 |
56 Lokale Benutzer und Gruppen | 968 |
56.1 Modul „Microsoft.PowerShell. LocalAccounts“ | 968 |
56.2 Lokale Benutzerverwaltung in älteren PowerShell-Versionen | 970 |
57 Microsoft Exchange Server | 972 |
57.1 Daten abrufen | 972 |
57.2 Postfächer verwalten | 973 |
57.3 Öffentliche Ordner verwalten | 974 |
58 Internet Information Server (IIS) | 976 |
58.1 Überblick | 976 |
58.2 Navigationsprovider | 978 |
58.3 Anlegen von Websites | 980 |
58.4 Praxisbeispiel: Massenanlegen von Websites | 981 |
58.5 Ändern von Website-Eigenschaften | 984 |
58.6 Anwendungspool anlegen | 984 |
58.7 Virtuelle Verzeichnisse und IIS-Anwendungen | 985 |
58.8 Website-Zustand ändern | 986 |
58.9 Anwendungspools starten und stoppen | 986 |
58.10 Löschen von Websites | 987 |
59 Virtuelle Systeme mit Hyper-V | 988 |
59.1 Das Hyper-V-Modul von Microsoft | 989 |
59.2 Die ersten Schritte mit dem Hyper-V-Modul | 991 |
59.3 Virtuelle Maschinen anlegen | 995 |
59.4 Umgang mit virtuellen Festplatten | 1001 |
59.5 Konfiguration virtueller Maschinen | 1004 |
59.6 Dateien kopieren in virtuelle Systeme | 1008 |
59.7 PowerShell Management Library for Hyper-V (für ältere Betriebssysteme) | 1010 |
60 Windows Nano Server | 1014 |
60.1 Das Konzept von Nano Server | 1014 |
60.2 Einschränkungen von Nano Server | 1016 |
60.3 Varianten des Nano Servers | 1018 |
60.4 Installation eines Nano Servers | 1018 |
60.5 Docker-Image | 1020 |
60.6 Fernverwaltung mit PowerShell | 1020 |
60.7 Windows Update auf einem Nano Server | 1023 |
60.8 Nachträgliche Paketinstallation | 1023 |
60.9 Abgespeckter IIS unter Nano Server | 1025 |
60.10 Nano-Serververwaltung aus der Cloud heraus | 1026 |
61 Docker-Container | 1028 |
61.1 Docker-Varianten für Windows | 1029 |
61.2 Docker-Installation auf Windows 10 | 1030 |
61.3 Docker-Installation auf Windows Server 2016 | 1032 |
61.4 Installation von „Docker for Windows“ | 1033 |
61.5 Docker-Registries | 1035 |
61.6 Docker-Images laden | 1035 |
61.7 Container starten | 1036 |
61.8 Container-Identifikation | 1037 |
61.9 Container mit Visual Studio | 1038 |
61.10 Befehle in einem Container ausführen | 1040 |
61.11 Ressourcenbeschränkungen für Container | 1042 |
61.12 Dateien zwischen Container und Host kopieren | 1042 |
61.13 Dockerfile | 1042 |
61.14 Docker-Netzwerke | 1043 |
61.15 Container anlegen, ohne sie zu starten | 1044 |
61.16 Container starten und stoppen | 1044 |
61.17 Container beenden und löschen | 1044 |
61.18 Images löschen | 1045 |
61.19 Images aus Containern erstellen | 1045 |
61.20 .NET Core-Container | 1045 |
61.21 Images verbreiten | 1048 |
61.22 Azure Container Service (ACS) | 1050 |
62 Grafische Benutzeroberflächen (GUI) | 1052 |
62.1 Einfache Nachfragedialoge | 1052 |
62.2 Einfache Eingabe mit Inputbox | 1054 |
62.3 Komplexere Eingabemasken | 1055 |
62.4 Universelle Objektdarstellung | 1057 |
62.5 WPF PowerShell Kit (WPK) | 1058 |
62.6 Direkte Verwendung von WPF | 1066 |
Teil D: Profiwissen – Erweitern der PowerShell | 1068 |
63 Entwicklung von Commandlets in der PowerShell-Skriptsprache | 1070 |
63.1 Aufbau eines skriptbasierten Commandlets | 1070 |
63.2 Verwendung per Dot Sourcing | 1072 |
63.3 Parameterfestlegung | 1073 |
63.4 Fortgeschrittene Funktion (Advanced Function) | 1079 |
63.5 Mehrere Parameter und Parametersätze | 1081 |
63.6 Unterstützung für Sicherheitsabfragen (-whatif und -confirm) | 1083 |
63.7 Kaufmännisches Beispiel: Test-CustomerID | 1085 |
63.8 Erweitern bestehender Commandlets durch Proxy-Commandlets | 1088 |
63.9 Dokumentation | 1094 |
64 Entwicklung eigener Commandlets mit C# | 1098 |
64.1 Technische Voraussetzungen | 1099 |
64.2 Grundkonzept der .NET-basierten Commandlets | 1100 |
64.3 Schrittweise Erstellung eines minimalen Commandlets | 1102 |
64.4 Erstellung eines Commandlets mit einem Rückgabeobjekt | 1110 |
64.5 Erstellung eines Commandlets mit mehreren Rückgabeobjekten | 1112 |
64.6 Erstellen eines Commandlets mit Parametern | 1116 |
64.7 Verarbeiten von Pipeline-Eingaben | 1118 |
64.8 Verkettung von Commandlets | 1121 |
64.9 Fehlersuche in Commandlets | 1125 |
64.10 Statusinformationen | 1128 |
64.11 Unterstützung für Sicherheitsabfragen (-whatif und -confirm) | 1133 |
64.12 Festlegung der Hilfeinformationen | 1135 |
64.13 Erstellung von Commandlets für den Zugriff auf eine Geschäftsanwendung | 1139 |
64.14 Konventionen für Commandlets | 1140 |
64.15 Weitere Möglichkeiten | 1142 |
65 PowerShell-Module erstellen | 1144 |
65.1 Erstellen eines Skriptmoduls | 1144 |
65.2 Praxisbeispiel: Umwandlung einer Skriptdatei in ein Modul | 1146 |
65.3 Erstellen eines Moduls mit Binärdateien | 1146 |
65.4 Erstellen eines Moduls mit Manifest | 1147 |
65.5 Erstellung eines Manifest-Moduls mit Visual Studio | 1154 |
66 Hosting der PowerShell | 1156 |
66.1 Voraussetzungen für das Hosting | 1157 |
66.2 Hosting mit PSHost | 1158 |
66.3 Vereinfachtes Hosting seit PowerShell 2.0 | 1161 |
Anhang A: Crashkurs „Objektorientierung“ | 1164 |
Anhang B: Crashkurs .NET | 1172 |
B.1 Was ist das .NET Framework? | 1174 |
B.2 Was ist .NET Core? | 1175 |
B.3 Eigenschaften von .NET | 1176 |
B.4 .NET-Klassen | 1177 |
B.5 Namensgebung von .NET-Klassen -(Namensräume) | 1177 |
B.6 Namensräume und Software-komponenten | 1179 |
B.7 Bestandteile einer .NET-Klasse | 1180 |
B.8 Vererbung | 1181 |
B.9 Schnittstellen | 1182 |
Anhang C: Literatur | 1183 |
Anhang D: Weitere Informationen im Internet | 1186 |
Anhang E: Abkürzungsverzeichnis | 1188 |
Stichwortverzeichnis | 1214 |