59,99 €
Das Windows PowerShell-Praxisbuch für Einsteiger und Profis
Die Windows PowerShell ist Microsofts mächtige Lösung für die kommandozeilenbasierte Administration und Scripting in Windows. Administratoren bietet diese aktualisierte 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 Schwichtenberg
In 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.4 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 11 und Windows Server 2022.
• Das Buch beschreibt auch die Verwendung von der PowerShell auf macOS und Linux.
• Codebeispiele, PowerShell-Kurzreferenz, Feedback-Möglichkeiten und Forum finden Sie auf der Website zum Buch.
• Ihr exklusiver Vorteil: E-Book inside beim Kauf des gedruckten Buches
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Seitenzahl: 1222
Veröffentlichungsjahr: 2024
Holger Schwichtenberg
PowerShell 7 und Windows PowerShell 5
Das Praxisbuch
6., aktualisierte Auflage
Alle in diesem Werk enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Werk enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht. Ebenso wenig übernehmen Autor und Verlag die Gewähr dafür, dass die beschriebenen Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt also auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.
Die endgültige Entscheidung über die Eignung der Informationen für die vorgesehene Verwendung in einer bestimmten Anwendung liegt in der alleinigen Verantwortung des Nutzers.
Aus Gründen der besseren Lesbarkeit wird auf die gleichzeitige Verwendung der Sprachformen männlich, weiblich und divers (m/w/d) verzichtet. Sämtliche Personenbezeichnungen gelten gleichermaßen für alle Geschlechter.
Bibliografische Information der Deutschen Nationalbibliothek:Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
Dieses Werk ist urheberrechtlich geschützt.Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Wir behalten uns auch eine Nutzung des Werks für Zwecke des Text- und Data Mining nach § 44b UrhG ausdrücklich vor. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.
© 2024 Carl Hanser Verlag München, www.hanser-fachbuch.deLektorat: Sylvia HasselbachCopy editing: Matthias Bloch, Bochum, und Sandra Gottmann, WasserburgUmschlagdesign: Marc Müller-Bremer, www.rebranding.de, München Umschlagrealisation: Max Kostopoulos Titelmotiv: © shutterstock.com/Irina KolesnichenkoSatz: Eberl & Koesel Studio, Kempten
Print-ISBN: 978-3-446-48195-4E-Book-ISBN: 978-3-446-48196-1E-Pub-ISBN: 978-3-446-48244-9
Titelei
Impressum
Inhalt
Vorwort
Über den Autor
Teil A: PowerShell-Basiswissen
1 Fakten zur PowerShell
1.1 Was ist die PowerShell?
1.2 Geschichte der PowerShell
1.3 Welche Varianten und Versionen der PowerShell gibt es?
1.4 Windows PowerShell versus PowerShell Core versus PowerShell 7.x
1.5 Motivation zur PowerShell
1.6 Betriebssysteme mit vorinstallierter PowerShell
1.7 Support der PowerShell
1.8 Einflussfaktoren auf die Entwicklung der PowerShell
1.9 Anbindung an Klassenbibliotheken
1.10 PowerShell versus WSH
2 Erste Schritte mit der PowerShell
2.1 Windows PowerShell herunterladen und auf anderen Windows-Betriebssystemen installieren
2.2 Die Windows PowerShell testen
2.3 Woher kommen die PowerShell-Befehle?
2.4 PowerShell Community Extensions (PSCX) herunterladen und installieren
2.5 Den Windows PowerShell-Editor „ISE“ verwenden
2.6 PowerShell 7 installieren und testen
3 Einzelbefehle der PowerShell
3.1 Commandlets
3.2 Aliase
3.3 Ausdrücke
3.4 Externe Befehle (klassische Kommandozeilenbefehle)
3.5 Dateinamen
4 Hilfefunktionen
4.1 Auflisten der verfügbaren Befehle
4.2 Praxistipp: Den Standort eines Kommandozeilenbefehls suchen
4.3 Anzahl der Befehle
4.4 Volltextsuche
4.5 Erläuterungen zu den Befehlen
4.6 Hilfe zu Parametern
4.7 Hilfe mit Show-Command
4.8 Hilfefenster
4.9 Allgemeine Hilfetexte
4.10 Aktualisieren der Hilfedateien
4.11 Online-Hilfe
4.12 Fehlende Hilfetexte
4.13 Dokumentation der .NETKlassen
5 Objektorientiertes Pipelining
5.1 Befehlsübersicht
5.2 Pipeline-Operator
5.3 . NET-Objekte in der Pipeline
5.4 Pipeline Processor
5.5 Pipelining von Parametern
5.6 Pipelining von klassischen Befehlen
5.7 Zeilenumbrüche in Pipelines
5.8 Schleifen
5.9 Zugriff auf einzelne Objekte aus einer Menge
5.10 Zugriff auf einzelne Werte in einem Objekt
5.11 Methoden ausführen
5.12 Analyse des Pipeline-Inhalts
5.13 Filtern
5.14 Zusammenfassung von Pipeline-Inhalten
5.15 „Kastrierung“ von Objekten in der Pipeline
5.16 Sortieren
5.17 Duplikate entfernen
5.18 Gruppierung
5.19 Objekte verbinden mit Join-String
5.20 Berechnungen
5.21 Zwischenschritte in der Pipeline mit Variablen
5.22 Verzweigungen in der Pipeline
5.23 Vergleiche zwischen Objekten
5.24 Weitere Praxislösungen
6 PowerShell-Skripte
6.1 Skriptdateien
6.2 Start eines Skripts
6.3 Aliase für Skripte verwenden
6.4 Parameter für Skripte
6.5 Skripte dauerhaft einbinden (Dot Sourcing)
6.6 Das aktuelle Skriptverzeichnis
6.7 Sicherheitsfunktionen für PowerShell-Skripte
6.8 Skripte mit vollen Rechten (Elevation)
6.9 Blockierte PowerShell-Skripte
6.10 PowerShell-Skripte im Kontextmenü des Windows Explorers
6.11 Anforderungsdefinitionen von Skripten
6.12 Skripte anhalten
6.13 Versionierung und Versionsverwaltung von Skripten
7 PowerShell-Skriptsprache
7.1 Hilfe zur PowerShell-Skriptsprache
7.2 Befehlstrennung
7.3 Kommentare
7.4 Variablen
7.5 Variablenbedingungen
7.6 Zahlen
7.7 Zeichenketten (Strings)
7.8 Reguläre Ausdrücke
7.9 Datum und Uhrzeit
7.10 Objekte
7.11 Arrays
7.12 ArrayList
7.13 Assoziative Arrays (Hash-Tabellen)
7.14 Operatoren
7.15 Überblick über die Kontrollkonstrukte
7.16 Bedingungen
7.17 Unterroutinen (Prozedur/Funktionen)
7.18 Eingebaute Funktionen
7.19 Fehlerausgabe
7.20 Fehlerbehandlung
7.21 Laufzeitfehler erzeugen
7.22 Objektorientiertes Programmieren mit Klassen
8 Ausgaben
8.1 Ausgabe-Commandlets
8.2 Benutzerdefinierte Tabellenformatierung
8.3 Benutzerdefinierte Listenausgabe
8.4 Mehrspaltige Ausgabe
8.5 Out-GridView
8.6 Standardausgabe
8.7 Einschränkung der Ausgabe
8.8 Seitenweise Ausgabe
8.9 Ausgabe einzelner Werte
8.10 Details zum Ausgabeoperator
8.11 Ausgabe von Methodenergebnissen und Unterobjekten in Pipelines
8.12 Ausgabe von Methodenergebnissen und Unterobjekten in Zeichenketten
8.13 Unterdrückung der Ausgabe
8.14 Ausgaben an Drucker
8.15 Ausgaben in Dateien
8.16 Umleitungen (Redirection)
8.17 Fortschrittsanzeige
8.18 Sprachausgabe
9 Das PowerShell-Navigationsmodell (PowerShell Provider)
9.1 Einführungsbeispiel: Navigation in der Registrierungsdatenbank
9.2 Provider und Laufwerke
9.3 Navigationsbefehle
9.4 Pfadangaben
9.5 Beispiel
9.6 Eigene Laufwerke definieren
10 Fernausführung (Remoting)
10.1 RPC-Fernabfrage ohne WS-Management
10.2 Anforderungen an PowerShell Remoting
10.3 Rechte für PowerShell-Remoting
10.4 Einrichten von PowerShell Remoting
10.5 Überblick über die Fernausführungs-Commandlets
10.6 Interaktive Fernverbindungen im Telnet-Stil
10.7 Fernausführung von Befehlen
10.8 Parameterübergabe an die Fernausführung
10.9 Fernausführung von Skripten
10.10 Ausführung auf mehreren Computern
10.11 Sitzungen
10.12 Implizites Remoting
10.13 Zugriff auf entfernte Computer außerhalb der eigenen Domäne
10.14 Verwaltung des WS-Management-Dienstes
10.15 PowerShell Direct für Hyper-V
10.16 Praxislösung zu PowerShell Direct
11 PowerShell-Werkzeuge
11.1 PowerShell-Standardkonsole
11.2 Windows Terminal
11.3 Erweiterung der Konsolen
11.4 PowerShell Integrated Scripting Environment (ISE)
11.5 PowerShell Script Analyzer
11.6 PowerShell Analyzer
11.7 PowerShell Tools for Visual Studio
11.8 PowerShell Pro Tools for Visual Studio
11.9 Visual Studio Developer PowerShell
11.10 NuGet Package Manager Console (PMC)
11.11 Visual Studio Code mit PowerShell-Erweiterung
11.12 PowerShell-Erweiterungen für andere Editoren
11.13 PowerShell Web Access (PSWA)
11.14 Azure Cloud Shell
11.15 ISE Steroids
11.16 PowerShellPlus
11.17 PoshConsole
11.18 PowerGUI
11.19 PrimalScript
11.20 CIM Explorer for PowerShell ISE
12 Windows PowerShell Core 5.1 in Windows Nano Server
12.1 Installation
12.2 PowerShell-Skriptsprache
12.3 Werkzeuge
12.4 Fehlende Funktionen
13 PowerShell 7 für Windows, Linux und macOS
13.1 Motivation für den Einsatz der PowerShell 7 auf Linux und macOS
13.2 Basis der PowerShell 7
13.3 Identifizierung der PowerShell 7
13.4 Funktionsumfang der PowerShell 7
13.5 Entfallene Befehle in PowerShell 7
13.6 Erweiterungsmodule nutzen in PowerShell 7
13.7 Geänderte Funktionen in PowerShell 7
13.8 Neue Funktionen der PowerShell 7
13.9 PowerShell 7-Konsole
13.10 Praxislösung: Fallunterscheidung für PowerShell-Varianten
13.11 VSCode-PowerShell als Editor für PowerShell 7
13.12 Verwendung von PowerShell 7 auf Linux und macOS
13.13 PowerShell-Remoting via SSH
13.14 Performance-Vorteile der PowerShell 7
13.15 Dokumentation zur PowerShell 7
13.16 Quellcode zur PowerShell 7
Teil B: PowerShell-Aufbauwissen
14 Verwendung von .NET-Klassen
14.1 . NET versus .NET Core
14.2 Ermitteln der verwendeten .NET-Version
14.3 .NET-Bibliotheken
14.4 Microsoft Docs
14.5 Überblick über die Verwendung von .NET-Klassen
14.6 Erzeugen von Instanzen
14.7 Parameterbehaftete Konstruktoren
14.8 Initialisierung von Objekten
14.9 Nutzung von Attributen und Methoden
14.10 Statische Mitglieder in .NET-Klassen und statische .NET-Klassen
14.11 Generische Klassen nutzen
14.12 Zugriff auf bestehende Objekte
14.13 Laden von Assemblies
14.14 Liste der geladen Assemblies
14.15 Verwenden von NuGet-Assemblies
14.16 Objektanalyse
14.17 Aufzählungstypen (Auflistungen/Enumerationen)
15 Verwendung von COM-Klassen
15.1 Unterschiede zwischen COM und .NET
15.2 Erzeugen von COM-Instanzen
15.3 Abruf der Metadaten
15.4 Nutzung von Attributen und Methoden
15.5 Liste aller COM-Klassen
15.6 Holen bestehender COM-Instanzen
15.7 Distributed COM (DCOM)
16 Zugriff auf die Windows Management Instrumentation (WMI)
16.1 Einführung in WMI
16.2 WMI in der PowerShell
16.3 Open Management Infrastructure (OMI)
16.4 Abruf von WMI-Objektmengen
16.5 Fernzugriffe
16.6 Filtern und Abfragen
16.7 Liste aller WMI-Klassen
16.8 Hintergrundwissen: WMI-Klassenprojektion mit dem PowerShell-WMI-Objektadapter
16.9 Beschränkung der Ausgabeliste bei WMI-Objekten
16.10 Zugriff auf einzelne Mitglieder von WMI-Klassen
16.11 Werte setzen in WMI-Objekten
16.12 Umgang mit WMI-Datumsangaben
16.13 Methodenaufrufe
16.14 Neue WMI-Instanzen erzeugen
16.15 Instanzen entfernen
16.16 Commandlet Definition XML-Datei (CDXML)
17 Dynamische Objekte
17.1 Erweitern bestehender Objekte
17.2 Komplett dynamische Objekte
18 Einbinden von C# und Visual Basic .NET
19 Win32-API-Aufrufe
20 Benutzereingaben
20.1 Read-Host
20.2 Benutzerauswahl
20.3 Grafischer Eingabedialog
20.4 Dialogfenster
20.5 Authentifizierungsdialog
20.6 Zwischenablage (Clipboard)
21 Fehlersuche
21.1 Detailinformationen
21.2 Einzelschrittmodus
21.3 Zeitmessung
21.4 Ablaufverfolgung (Tracing)
21.5 Erweiterte Protokollierung aktivieren
21.6 Script-Debugging in der ISE
21.7 Kommandozeilenbasiertes Script-Debugging
22 Transaktionen
22.1 Commandlets für Transaktionen
22.2 Start und Ende einer Transaktion
22.3 Zurücksetzen der Transaktion
22.4 Mehrere Transaktionen
23 Standardeinstellungen ändern mit Profilskripten
23.1 Profilpfade
23.2 Ausführungsreihenfolge
23.3 Beispiel für eine Profildatei
23.4 Starten der PowerShell ohne Profilskripte
24 Digitale Signaturen für PowerShell-Skripte
24.1 Zertifikat erstellen
24.2 Skripte signieren
24.3 Verwenden signierter Skripte
24.4 Mögliche Fehlerquellen
25 Hintergrundaufträge („Jobs“)
25.1 Voraussetzungen
25.2 Architektur
25.3 Starten eines Hintergrundauftrags
25.4 Hintergrundaufträge abfragen
25.5 Warten auf einen Hintergrundauftrag
25.6 Abbrechen und Löschen von Aufträgen
25.7 Analyse von Fehlermeldungen
25.8 Fernausführung von Hintergrundaufträgen
25.9 Praxislösung: Einen Job auf mehreren Computern starten
26 Geplante Aufgaben und zeitgesteuerte Jobs
26.1 Geplante Aufgaben (Scheduled Tasks)
26.2 Zeitgesteuerte Jobs
27 PowerShell-Workflows
27.1 Ein erstes Beispiel
27.2 Unterschiede zu einer Function bzw. einem Skript
27.3 Einschränkungen bei Workflows
27.4 Workflows in der Praxis
27.5 Workflows in Visual Studio erstellen
28 Ereignissystem
28.1 WMI-Ereignisse
28.2 WMI-Ereignisabfragen
28.3 WMI-Ereignisse seit PowerShell 1.0
28.4 Registrieren von WMIEreignisquellen seit PowerShell 2.0
28.5 Auslesen der Ereignisliste
28.6 Reagieren auf Ereignisse
28.7 WMI-Ereignisse seit PowerShell-Version 3.0
28.8 Registrieren von .NET-Ereignissen
28.9 Erzeugen von Ereignissen
29 Datenbereiche und Datendateien
29.1 Datenbereiche
29.2 Datendateien
29.3 Mehrsprachigkeit/Lokalisierung
30 Desired State Configuration (DSC)
30.1 Grundprinzipien
30.2 DSC für PowerShell 7
30.3 Ressourcen
30.4 Verfügbare DSC-Ressourcen
30.5 Eigenschaften einer Ressource
30.6 Aufbau eines DSC-Dokuments
30.7 Commandlets für die Arbeit mit DSC
30.8 Ein erstes DSC-Beispiel
30.9 Kompilieren und Anwendung eines DSC-Dokuments
30.10 Variablen in DSC-Dateien
30.11 Parameter für DSC-Dateien
30.12 Konfigurationsdaten
30.13 Entfernen einer DSC-Konfiguration
30.14 DSC Pull Server
30.15 DSC-Praxislösung 1: IIS installieren
30.16 DSC-Praxislösung 2: Software installieren
30.17 DSC-Praxislösung 3: Software deinstallieren
30.18 Realisierung einer DSC-Ressource
30.19 Weitere Möglichkeiten
31 PowerShell-Snap-Ins
31.1 Einbinden von Snap-Ins
31.2 Liste der Commandlets
32 PowerShell-Module
32.1 Überblick über die Commandlets
32.2 Modularchitektur
32.3 Aufbau eines Moduls
32.4 Module aus dem Netz herunterladen und installieren mit PowerShellGet
32.5 Module manuell installieren
32.6 Doppeldeutige Namen
32.7 Auflisten der verfügbaren Module
32.8 Importieren von Modulen
32.9 Entfernen von Modulen
33 Ausgewählte PowerShell-Erweiterungen
33.1 PowerShell-Module in Windows 8.0 und Windows Server 2012
33.2 PowerShell-Module in Windows 8.1 und Windows Server 2012 R2
33.3 PowerShell-Module in Windows 10 und Windows Server 2019
33.4 PowerShell Community Extensions (PSCX)
33.5 PowerShellPack
33.6 www.IT-Visions.de: PowerShell Extensions
33.7 Quest Management Shell for Active Directory
33.8 Microsoft Exchange Server
33.9 System Center Virtual Machine Manager
33.10 PowerShell Management Library for Hyper-V (pshyperv)
33.11 PowerShell Configurator (PSConfig)
34 Delegierte Administration/Just Enough Administration (JEA)
34.1 JEA-Konzept
34.2 PowerShell-Sitzungskonfiguration erstellen
34.3 Sitzungskonfiguration nutzen
34.4 Delegierte Administration per Webseite
35 Tipps und Tricks zur PowerShell
35.1 Alle Anzeigen löschen
35.2 Befehlsgeschichte
35.3 System- und Hostinformationen
35.4 Anpassen der Eingabeaufforderung (Prompt)
35.5 PowerShell-Befehle aus anderen Anwendungen heraus starten
35.6 ISE erweitern
35.7 PowerShell für Gruppenrichtlinienskripte
35.8 Einblicke in die Interna der Pipeline-Verarbeitung
Teil C: PowerShell im Praxiseinsatz
36 Dateisystem
36.1 Laufwerke
36.2 Ordnerinhalte
36.3 Dateieigenschaften verändern
36.4 Eigenschaften ausführbarer Dateien
36.5 Kurznamen
36.6 Lange Pfade
36.7 Dateisystemoperationen
36.8 Praxislösung: Dateien umorganisieren
36.9 Praxislösung: Zufällige Dateisystemstruktur erzeugen
36.10 Praxislösung: Leere Ordner löschen
36.11 Praxislösung: Geschwindigkeitsmessung des Dateisystems (beim Kopieren von Dateien)
36.12 Einsatz von Robocopy in der PowerShell
36.13 NTFS-Komprimierung
36.14 Dateisystemkataloge
36.15 Papierkorb leeren
36.16 Dateieigenschaften lesen
36.17 Praxislösung: Fotos nach Aufnahmedatum sortieren
36.18 Datei-Hash
36.19 Finden von Duplikaten
36.20 Verknüpfungen im Dateisystem
36.21 Komprimierung
36.22 Dateisystemfreigaben
36.23 Überwachung des Dateisystems
36.24 Dateiversionsverlauf
36.25 Windows Explorer öffnen
36.26 Windows Server Backup
37 Festplattenverschlüsselung mit BitLocker
37.1 Übersicht über das BitLocker-Modul
37.2 Verschlüsseln eines Laufwerks
38 Dokumente
38.1 Textdateien
38.2 CSV-Dateien
38.3 Analysieren von Textdateien
38.4 INI-Dateien
38.5 XML-Dateien
38.6 HTML- und Markdown-Dateien
38.7 JSON-Dateien
38.8 Binärdateien
38.9 Praxislösung: Grafikdateien verändern
38.10 Praxislösung: Drucken vieler Dateien
39 Microsoft Office
39.1 Allgemeine Informationen zur Office-Automatisierung per PowerShell
39.2 Praxislösung: Terminserien aus Textdateien anlegen in Outlook
39.3 Praxislösung: Outlook-Termine anhand von Suchkriterien löschen
39.4 Praxislösung: Grafiken aus einem Word-Dokument (DOCX) extrahieren
40 Datenbanken
40.1 ADO.NET-Grundlagen
40.2 Beispieldatenbank
40.3 Datenzugriff mit den Bordmitteln der PowerShell
40.4 Hilfsfroutinen für den Datenbankzugriff (DBUtil.ps1)
40.5 Datenzugriff mit den PowerShell-Erweiterungen
40.6 Datenbankzugriff mit SQLPS
40.7 Datenbankzugriff mit SQLPSX
41 Microsoft-SQL-Server-Administration
41.1 PowerShell-Integration im SQL Server Management Studio
41.2 SQL-Server-Laufwerk „SQLSERVER:“
41.3 Die SQLPS-Commandlets
41.4 Die SQL Server Management Objects (SMO)
41.5 SQLPSX
41.6 Microsoft-SQL-Server-Administration mit der PowerShell in der Praxis
42 ODBC-Datenquellen
42.1 ODBC-Treiber und -Datenquellen auflisten
42.2 Anlegen einer ODBC-Datenquelle
42.3 Zugriff auf eine ODBC-Datenquelle
43 Registrierungsdatenbank (Registry)
43.1 Schlüssel auslesen
43.2 Schlüssel anlegen und löschen
43.3 Laufwerke definieren
43.4 Werte anlegen und löschen
43.5 Werte auslesen
43.6 Praxislösung: Windows-Explorer-Einstellungen
43.7 Praxislösung: Massenanlegen von Registry-Schlüsseln
44 Computer- und Betriebssystemverwaltung
44.1 Computerinformationen
44.2 Versionsnummer des Betriebssystems
44.3 Zeitdauer seit dem letzten Start des Betriebssystems
44.4 BIOS- und Startinformationen
44.5 Windows-Produktaktivierung
44.6 Umgebungsvariablen
44.7 Schriftarten
44.8 Computername und Domäne
44.9 Herunterfahren und Neustarten
44.10 Windows Updates installieren
44.11 Wiederherstellungspunkte verwalten
45 Windows Defender
46 Hardwareverwaltung
46.1 Hardwarebausteine
46.2 Plug-and-Play-Geräte
46.3 Druckerverwaltung (ältere Betriebssysteme)
46.4 Druckerverwaltung (seit Windows 8 und Windows Server 2012)
47 Softwareverwaltung
47.1 Softwareinventarisierung
47.2 Installation von Anwendungen
47.3 Deinstallation von Anwendungen
47.4 Praxislösung: Installationstest
47.5 Praxislösung: Installierte .NET SDKs aufräumen
47.6 Windows 10 Apps verwalten
47.7 Installationen mit PowerShell Package Management („OneGet“)
47.8 Versionsnummer ermitteln
47.9 Servermanager
47.10 Windows-Features installieren auf Windows-Clientbetriebssystemen
47.11 Praxislösung: IIS-Installation
47.12 Softwareeinschränkungen mit dem PowerShell-Modul „AppLocker“
48 Prozessverwaltung
48.1 Prozesse auflisten
48.2 Prozesse starten
48.3 Prozesse mit vollen Administratorrechten starten
48.4 Prozesse unter einem anderen Benutzerkonto starten
48.5 Prozesse beenden
48.6 Warten auf das Beenden einer Anwendung
49 Windows-Systemdienste
49.1 Dienste auflisten
49.2 Dienstzustand ändern
49.3 Diensteigenschaften ändern
49.4 Dienste hinzufügen
49.5 Dienste entfernen
50 Netzwerk
50.1 Netzwerkkonfiguration
50.2 DNS-Client-Konfiguration
50.3 DNS-Namensauflösung
50.4 Erreichbarkeit prüfen (Ping)
50.5 Windows Firewall
50.6 Remote Desktop (RDP) einrichten
50.7 E-Mails senden (SMTP)
50.8 Auseinandernehmen von E-Mail-Adressen
50.9 Abruf von Daten von einem HTTP-Server
50.10 Praxislösung: Linkprüfer für eine Website
50.11 Aufrufe von SOAP-Webdiensten
50.12 Aufruf von REST-Diensten
50.13 File Transfer Protocol (FTP)
50.14 Hintergrunddatentransfer mit BITS
51 Ereignisprotokolle (Event Log)
51.1 Protokolleinträge auslesen
51.2 Ereignisprotokolle erzeugen
51.3 Protokolleinträge erzeugen
51.4 Protokollgröße festlegen
51.5 Protokolleinträge löschen
52 Leistungsdaten (Performance Counter)
52.1 Zugriff auf Leistungsindikatoren über WMI
52.2 Get-Counter
53 Sicherheitseinstellungen
53.1 Aktueller Benutzer
53.2 Grundlagen
53.3 Zugriffsrechtelisten auslesen
53.4 Einzelne Rechteeinträge auslesen
53.5 Besitzer auslesen
53.6 Benutzer und SID
53.7 Hinzufügen eines Rechteeintrags zu einer Zugriffsrechteliste
53.8 Entfernen eines Rechteeintrags aus einer Zugriffsrechteliste
53.9 Zugriffsrechteliste übertragen
53.10 Zugriffsrechteliste über SDDL setzen
53.11 Zertifikate verwalten
54 Optimierungen und Problemlösungen
54.1 PowerShell-Modul „TroubleshootingPack“
54.2 PowerShell-Modul „Best Practices“
55 Active Directory
55.1 Benutzer- und Gruppenverwaltung mit WMI
55.2 Einführung in System.DirectoryServices
55.3 Basiseigenschaften
55.4 Benutzer- und Gruppenverwaltung im Active Directory
55.5 Verwaltung der Organisationseinheiten
55.6 Suche im Active Directory
55.7 Navigation im Active Directory mit den PowerShell Extensions
55.8 Verwendung der Active-Directory-Erweiterungen von www.IT-Visions.de
55.9 PowerShell-Modul „Active Directory“ (ADPowerShell)
55.10 PowerShell-Modul „ADDSDeployment“
55.11 Informationen über die Active Directory-Struktur
56 Gruppenrichtlinien
56.1 Verwaltung der Gruppenrichtlinien
56.2 Verknüpfung der Gruppenrichtlinien
56.3 Gruppenrichtlinienberichte
56.4 Gruppenrichtlinienvererbung
56.5 Weitere Möglichkeiten
57 Lokale Benutzer und Gruppen
57.1 Modul „Microsoft.PowerShell.LocalAccounts“
57.2 Lokale Benutzerverwaltung in älteren PowerShell-Versionen
58 Microsoft Exchange Server
58.1 Daten abrufen
58.2 Postfächer verwalten
58.3 Öffentliche Ordner verwalten
59 Internet Information Services (IIS)
59.1 Überblick
59.2 Navigationsprovider
59.3 Anlegen von Websites
59.4 Praxislösung: Massenanlegen von Websites
59.5 Ändern von Website-Eigenschaften
59.6 Anwendungspool anlegen
59.7 Virtuelle Verzeichnisse und IIS-Anwendungen
59.8 Website-Zustand ändern
59.9 Anwendungspools starten und stoppen
59.10 Löschen von Websites
60 Virtuelle Systeme mit Hyper-V
60.1 Das Hyper-V-Modul von Microsoft
60.2 Die ersten Schritte mit dem Hyper-V-Modul
60.3 Virtuelle Maschinen anlegen
60.4 Umgang mit virtuellen Festplatten
60.5 Konfiguration virtueller Maschinen
60.6 Praxislösungen: Ressourcennutzung überwachen
60.7 Dateien kopieren in virtuelle Systeme
60.8 PowerShell Management Library for Hyper-V (für ältere Betriebssysteme)
61 Windows Nano Server
61.1 Das Konzept von Nano Server
61.2 Einschränkungen von Nano Server
61.3 Varianten des Nano Servers
61.4 Installation eines Nano Servers
61.5 Docker-Image
61.6 Fernverwaltung mit PowerShell
61.7 Windows Update auf einem Nano Server
61.8 Nachträgliche Paketinstallation
61.9 Abgespeckter IIS unter Nano Server
61.10 Nano-Serververwaltung aus der Cloud heraus
62 Docker-Container
62.1 Container-Varianten für Windows
62.2 Docker-Installation auf aktuellem Windows 10 und Windows 11
62.3 Docker-Installation auf älteren Windows 10-Clients
62.4 Docker-Installation auf Windows Server
62.5 Docker PowerShell installieren
62.6 Docker-Basiswissen
62.7 Container mit modernem .NET
62.8 Container mit IIS-Webserver und klassischem ASP.NET
62.9 Container mit Linux und PowerShell 7
62.10 Container mit Linux und Microsoft SQL Server
62.11 Docker-Container mit Visual Studio
62.12 Weitere Container-Befehle
63 Microsoft Azure
63.1 Azure-Konzepte
63.2 Kommandozeilenwerkzeuge für die Azure-Verwaltung
63.3 Benutzeranmeldung und Informationsabfrage
63.4 Azure Ressourcen-Gruppen
63.5 Azure Web-Apps
63.6 Azure SQL Server
63.7 Azure Kubernetes Services (AKS)
63.8 Azure DevOps (ADO)
64 Grafische Benutzeroberflächen (GUI)
64.1 Einfache Nachfragedialoge
64.2 Einfache Eingabe mit Inputbox
64.3 Komplexere Eingabemasken
64.4 Universelle Objektdarstellung
64.5 WPF PowerShell Kit (WPK)
64.6 Direkte Verwendung von WPF
Teil D: Profiwissen – Erweitern der PowerShell
65 Unit Tests mit Pester
65.1 Einführung in das Konzept des Unit Testing
65.2 Pester installieren
65.3 Befehle in Pester
65.4 Testen einer PowerShell-Funktion
65.5 Testgenerierung
65.6 Tests starten
65.7 Prüf-Operationen
65.8 Mock-Objekte
65.9 Test von Dateisystemoperationen
66 Entwicklung von Commandlets in der PowerShell-Skriptsprache
66.1 Aufbau eines skriptbasierten Commandlets
66.2 Verwendung per Dot Sourcing
66.3 Parameterfestlegung
66.4 Fortgeschrittene Funktion (Advanced Function)
66.5 Mehrere Parameter und Parametersätze
66.6 Unterstützung für Sicherheitsabfragen (-whatif und -confirm)
66.7 Kaufmännisches Beispiel: Test-CustomerID
66.8 Erweitern bestehender Commandlets durch Proxy-Commandlets
66.9 Dokumentation
67 Entwicklung eigener Commandlets mit C#
67.1 Technische Voraussetzungen
67.2 Grundkonzept der .NET-basierten Commandlets
67.3 Schrittweise Erstellung eines minimalen Commandlets
67.4 Erstellung eines Commandlets mit einem Rückgabeobjekt
67.5 Erstellung eines Commandlets mit mehreren Rückgabeobjekten
67.6 Erstellen eines Commandlets mit Parametern
67.7 Verarbeiten von Pipeline-Eingaben
67.8 Verkettung von Commandlets
67.9 Fehlersuche in Commandlets
67.10 Statusinformationen
67.11 Unterstützung für Sicherheitsabfragen (-whatif und -confirm)
67.12 Festlegung der Hilfeinformationen
67.13 Erstellung von Commandlets für den Zugriff auf eine Geschäftsanwendung
67.14 Konventionen für Commandlets
67.15 Weitere Möglichkeiten
68 PowerShell-Module erstellen
68.1 Erstellen eines Skriptmoduls
68.2 Praxislösung: Umwandlung einer Skriptdatei in ein Modul
68.3 Erstellen eines Moduls mit Binärdateien
68.4 Erstellen eines Moduls mit Manifest
68.5 Erstellung eines Manifest-Moduls mit Visual Studio
69 Hosting der PowerShell
69.1 Voraussetzungen für das Hosting
69.2 Hosting mit PSHost
69.3 Vereinfachtes Hosting seit PowerShell 2.0
Anhang A: Crashkurs Objektorientierung
Anhang B: Crashkurs .NET
B.1 Was ist das .NET Framework?
B.2 Was ist .NET Core/.NET?
B.3 Eigenschaften von .NET
B.4 .NET-Klassen
B.5 Namensgebung von .NET-Klassen (Namensräume)
B.6 Namensräume und Softwarekomponenten
B.7 Bestandteile einer .NET-Klasse
B.8 Vererbung
B.9 Schnittstellen
Anhang C: Weitere Informationen im Internet
Anhang D: Abkürzungsverzeichnis
Liebe Leserin, lieber Leser,
willkommen zur aktuellen Auflage meines PowerShell-Buchs! Es handelt sich hierbei um die sechste Auflage des Windows PowerShell 5-Buches und die zehnte Auflage des PowerShell-Buches insgesamt, das erstmalig 2007 bei Addison-Wesley erschienen ist.
Das vor Ihnen liegende Fachbuch behandelt die Windows PowerShell in der Version 5.1 sowie die plattformneutrale PowerShell 7.4 von Microsoft wie auch ergänzende Werkzeuge von Microsoft und Drittanbietern (z. B. PowerShell Community Extensions).
Das Buch ist aber auch für Sie geeignet, wenn Sie noch eine ältere Version der PowerShell einsetzen. Welche Funktionen neu hinzugekommen sind, wird jeweils in diesem Buch er wähnt.
Mein Name ist Holger Schwichtenberg, ich bin derzeit 51 Jahre alt und habe im Fachgebiet Wirtschaftsinformatik promoviert. Ich lebe (in Essen, im Herzen des Ruhrgebiets) davon, dass mein Team und ich im Rahmen unserer Firma www.IT-Visions.de anderen Unternehmen bei der Entwicklung von .NET-, Web- und PowerShell-Anwendungen beratend und schulend zur Seite stehen. Zudem entwickeln wir Software im Auftrag von Kunden in zahlreichen Branchen.
Es ist nur ein Hobby, IT-Fachbücher zu schreiben, denn damit kann man als Autor kaum Geld verdienen. Dieses Buch ist, unter Mitzählung aller nennenswerten Neuauflagen, das 92. Buch, das ich allein oder mit Co-Autoren geschrieben habe. Meine weiteren Hobbys sind Mountain Biking, Fotografie und Reisen.
Natürlich verstehe ich das Bücherschreiben auch als Werbung für die Arbeit unserer Unternehmen, und wir hoffen, dass der ein oder andere von Ihnen uns beauftragen wird, Ihre Organisation durch Beratung, Schulung und Auftragsentwicklung zu unterstützen.
Damit Sie den optimalen Nutzen aus diesem Buch ziehen können, möchte ich – so genau es mir möglich ist – beschreiben, an wen sich dieses Buch richtet. Hierzu habe ich einen Fragebogen ausgearbeitet, mit dem Sie schnell erkennen können, ob das Buch für Sie geeignet ist.
Sind Sie Systemadministrator in einem Windows-Netzwerk?
○ Ja
○ Nein
Laufen die für Sie relevanten Computer mit den von PowerShell unterstützten Betriebssystemen? (Windows 7/8/8.1/10/11, Windows Server 2008/2008 R2/2012/2012 R2/2016/2019/2022, macOS, Linux)
○ Ja
○ Nein
Sie besitzen zumindest rudimentäre Grundkenntnisse im Bereich des (objektorientierten) Programmierens?
○ Ja
○ Nein
Wünschen Sie einen kompakten Überblick über die Architektur, Konzepte und Anwendungsfälle der PowerShell?
○ Ja
○ Nein
Sie können auf Schritt-für-Schritt-Anleitungen verzichten?
○ Ja
○ Nein
Sie können auf formale Syntaxbeschreibungen verzichten und lernen lieber an aussagekräftigen Beispielen?
○ Ja
○ Nein
Sie erwarten nicht, dass in diesem Buch alle Möglichkeiten der PowerShell detailliert beschrieben werden?
○ Ja
○ Nein
Sind Sie, nachdem Sie ein Grundverständnis durch dieses Buch gewonnen haben, bereit, Detailfragen in der Dokumentation der PowerShell, von .NET und WMI nachzuschlagen, da das Buch auf rund 1400 Seiten nicht alle Details erläutern, sondern – in dem Sinn „Hilfe zur Selbsthilfe“ – nur ausgewählte Aspekte darstellen kann, anhand deren Sie dann Ihre eigenen Lösungen für Ihre spezifischen Szenarien entwickeln?
○ Ja
○ Nein
Wenn Sie alle obigen Fragen mit „Ja“ beantwortet haben, ist dieses Fachbuch richtig für Sie. In anderen Fällen sollten Sie sich erst mit einführender Literatur beschäftigen.
Die vorliegende Auflage wurde auf PowerShell Version 7.4 aktualisiert und bestehende In halte des Buchs an vielen Stellen optimiert. Zudem wurde das Feedback einiger Leser eingearbeitet, um Beispiele und Texte weiter zu verbessern.
Die PowerShell umfasst mittlerweile mehrere Tausend Commandlets mit jeweils zahlreichen Optionen. Zudem gibt es unzählige Erweiterungen mit vielen Hundert weiteren Commandlets. Außerdem existieren zahlreiche Zusatzwerkzeuge. Es ist allein schon aufgrund der Vorgaben des Verlags für den Umfang des Buchs nicht möglich, alle Commandlets und Parameter hier auch nur zu erwähnen. Zudem habe ich – obwohl ich selbst fast jede Woche mit der PowerShell in der Praxis arbeite – immer noch nicht alle Commandlets und alle Parameter jemals selbst eingesetzt.
Ich beschreibe in diesem Buch, was ich selbst in der Praxis, in meinen Schulungen und bei Kundeneinsätzen verwende. Es macht auch keinen Sinn, hier jedes Detail der PowerShell zu dokumentieren. Stattdessen gebe ich Ihnen Hilfe zur Selbsthilfe, damit Sie die Konzepte gut verstehen und sich dann Ihre spezifischen Lösungen anhand der Dokumentation selbst erarbeiten können.
Die Informationstechnik hat sich immer schon schnell verändert. Seit aber auch Microsoft die Themen „Agilität“ und „Open Source“ für sich entdeckt hat, ist die Entwicklung nicht mehr nur schnell, sondern zum Teil rasant:
Es erscheinen in kurzer Abfolge immer neue Produkte.
Produkte erscheinen schon in frühen Produktstadien als „Preview“ mit Versionsnummern wie 0.1.
Produkte ändern sich sehr häufig, teilweise im Abstand von drei Wochen (z. B. Visual Studio und Azure DevOps).
Aufwärts- und Abwärtskompatibilität ist kein Ziel bei Microsoft mehr. Es wird erwartet, dass Sie Ihre Lösungen ständig den neuen Gegebenheiten anpassen.
Produkte werden nicht mehr so ausführlich dokumentiert wie früher. Teilweise erscheint die Dokumentation erst deutlich nach dem Erscheinen der Software. Oft bleibt die Dokumentation auch dauerhaft lückenhaft.
Produkte werden schnell auch wieder abgekündigt, wenn sie sich aus der Sicht der Hersteller bzw. aufgrund des Nutzerfeedbacks nicht bewährt haben.
HINWEIS: Nicht nur Microsoft geht so vor, sondern viele andere Softwarehersteller (z. B. Google) agieren genauso.
Unter diesen neuen Einflussströmen steht natürlich auch dieses etablierte Fachbuch. Leider kann man ein gedrucktes Buch nicht so schnell ändern wie Software. Verlage definieren nicht unerhebliche Mindestauflagen, die abverkauft werden müssen, bevor neu gedruckt werden darf. Das E-Book ist keine Alternative. Die Verkaufszahlen zeigen, dass nur eine kleine Menge von Lesern technischer Literatur ein E-Book statt eines gedruckten Buchs kauft. Das E-Book wird offenbar nur gerne als Ergänzung genommen. Das kann ich gut verstehen, denn ich selbst lese auch lieber gedruckte Bücher und nutze E-Books nur für eine Volltextsuche.
Daher kann es passieren, dass – auch schon kurz nach dem Erscheinen dieses Buchs – einzelne Informationen in diesem Buch nicht mehr zu neueren Versionen passen. Wenn Sie so einen Fall feststellen, schreiben Sie bitte eine Nachricht an mich (siehe unten). Ich werde dies dann in Neuauflagen des Buchs berücksichtigen.
Zudem ist zu beachten, dass zwischen Abgabe des Manuskripts beim Verlag und Auslieferung des Buchs aus der Druckerei an den Buchhandel meist vier bis fünf Monate liegen.
Das Buch bespricht sowohl die Windows PowerShell 5.1 als auch die PowerShell 7.4.
Bei der Windows PowerShell 5.1 wird die RTM-Version besprochen, die Microsoft in der aktuellen Version von Windows 10/11 bzw. Windows Server 2019/2022 mitliefert.
Bei PowerShell 7.4 wird die RTM-Version vom 16. November 2023 behandelt.
Windows PowerShell 5.1 ist heute in den Unternehmen in Deutschland der Standard, denn diese Version der PowerShell wird mit Windows 10/11 und Windows Server 2016, Windows Server 2019 sowie Windows Server 1709, Windows Server 1909 und Windows Server 2022 ausgeliefert.
Die PowerShell 7.4 wird bisher mit keinem einzigen Betriebssystem ausgeliefert, sondern muss getrennt heruntergeladen und installiert werden. Eine Zusatzinstallation ist in vielen Unternehmen mit stark abgeschotteten Systemen gar nicht möglich.
Ein zweites Argument für die Beibehaltung der Version 5.1 in diesem Fachbuch ist, dass die PowerShell 7.4 der Windows PowerShell 5.1 funktional immer noch nicht ganz ebenbürtig ist. Einige Befehle sind weiterhin nur in der Windows PowerShell verfügbar.
Daher wird die Windows PowerShell 5.1 auch weiterhin eine große Bedeutung haben und in diesem Buch auch weiterhin behandelt.
Der Schwerpunkt des Buchs liegt auf der Nutzung der PowerShell unter Windows. Es gibt Hinweise und Beispiele für die Nutzung der PowerShell unter Linux (am Beispiel Ubuntu) und macOS.
Bei Windows gibt es Hinweise auf Unterschiede zwischen verschiedenen Windows-Varianten (Client/Server) und Windows-Versionen.
Auch wenn Windows 11 bereits erschienen ist, ist Windows 10 das im professionellen Einsatz vorherrschende Betriebssystem. Das Buch geht auf existierende kleinere Unterschiede zwischen Windows 10 und Windows 11 ein, die meisten Screenshots sind aber mit Windows 10 gemacht. Einige Screenshots sind mit älteren Windows-Versionen geschossen, was aber kein Problem ist, denn inhaltlich hat sich nichts geändert (nur optisch an der Titelleiste und der Schriftart).
Unter http://www.powershell-doktor.de/leser biete ich ein ehrenamtlich betriebenes Webportal für Leser meiner Bücher an. Bei der Erstregistrierung müssen Sie das Losungswort Sektion31 angeben. Nach erfolgter Registrierung erhalten Sie dann ein persönliches Zugangskennwort per E-Mail.
In diesem Portal können Sie
die Codebeispiele aus diesem Buch in einem Archiv herunterladen,
eine PowerShell-Kurzreferenz „Cheat Sheet“ (zwei DIN-A4-Seiten als Hilfe für die tägliche Arbeit) kostenlos herunterladen sowie
Feedback zu diesem Buch geben (Bewertung abgeben und Fehler melden).
Vorderseite der PowerShell-Kurzreferenz
Rückseite der PowerShell-Kurzreferenz
Alle registrierten Leser erhalten auch meinen Newsletter (zwei- bis viermal im Jahr) mit aktuellen Produktinformationen, Einladungen zu kostenlosen Community-Veranstaltungen sowie Vergünstigungen bei unseren öffentlichen Seminaren zu .NET und zur PowerShell.
Die Beispiele sind in der Archivdatei (.zip) organisiert nach den Buchteilen und innerhalb der Buchteile nach Kapitelnamen nach folgendem Schema:
Buchteilname\Kapitelname\Dateiname
Die Namen sind zum Teil etwas verkürzt (z. B. „Einsatzgebiete“ statt „PowerShell im Praxiseinsatz“), da sich sonst zu lange Dateinamen ergeben.
In diesem Buch wird für den Zugriff auf die Skriptdateien das x:-Laufwerk verwendet. Bitte legen Sie entweder ein Laufwerk x: an oder ändern Sie den Laufwerksbuchstaben in den Skripten.
Verzeichnisstruktur der Beispielsammlung mit vier Hauptordnern entsprechend den vier Buchteilen
Inhalt eines der Hauptordner aus der vorherigen Abbildung, d. h. eines Buchteils
Im Buch werden Sie außerdem noch Zugriffe auf ein w:-Laufwerk finden. Dies sind Dateisystemordner mit Dokumenten, die in den Skripten verarbeitet werden. Sofern die Dateien einen bestimmten Inhalt haben müssen (Eingabedateien für Skripte), dann finden Sie diese Eingabedateien auch in der Archivdatei in dem Ordner, wo sich das Skript befindet (oder einem Unterordner). In einigen Fällen sind die konkreten Dateiinhalte aber gar nicht relevant (z. B. für ein Skript, das die Größen von Dateien ermittelt). In diesem Fall können Sie anstelle des w:-Laufwerks jedes beliebige Ihrer eigenen Laufwerke verwenden.
Während ich in einigen Medien und Softwareprodukten (z. B. dem virtuellen Klassenraum https://VK.IT-Visions.de) das Gendern bereits verwende, habe ich in diesem Buch aufgrund der Lesbarkeit und des notwendigen Umfangs der Änderungen darauf verzichtet. Selbstverständlich spreche ich aber alle Personen jeglichen Geschlechts gleichermaßen an.
Grundsätzlich stehe ich dem Gendern offen gegenüber, bin aber sehr gespannt, wie sich die offiziellen Gesetzes- und Rechtschreibregeln in den kommenden Jahren entwickeln werden.
Ich versichere Ihnen, dass die Befehls- und Skriptbeispiele auf mindestens zwei meiner Systeme liefen, bevor ich sie per Kopieren & Einfügen in das Manuskript zu diesem Buch übernommen und auf der Leser-Website zum Download veröffentlicht habe. Zudem haben einige Tausend Leser die bisherigen Auflagen verwendet, und Feedback dieser Leser habe ich in das Buch eingearbeitet.
Dennoch gibt es leider Gründe, warum die Beispiele bei Ihnen als Leser dieses Fachbuchs nicht laufen könnten:
Eine abweichende Systemkonfiguration (in der heutigen komplexen Welt der vielen Varianten und Versionen von Betriebssystemen und Anwendungen nicht unwahrscheinlich). Es ist einem Fachbuchautor nicht möglich, alle Konfigurationen durchzutesten.
Änderungen, die sich seit der Erstellung der Beispiele ergeben haben (mittlerweile gibt es sehr regelmäßig umfangreiche Breaking Changes in den Microsoft-Produkten, insbesondere beim Versionsnummernwechsel an der ersten Stelle, d. h. Windows PowerShell 5.1 und PowerShell 6.0 sowie PowerShell 6.2 und PowerShell 7.x).
Schließlich sind auch menschliche Fehler des Autors möglich. Bitte bedenken Sie, dass das Fachbuchschreiben nur ein Hobby ist. Es gibt nur sehr wenige Menschen in Deutschland, die hauptberuflich als Fachbuchautor arbeiten und so professionell Programmcodebeispiele erstellen und testen können wie kommerziellen (bezahlten) Programmcode.
Wenn Beispiele bei Ihnen nicht laufen, kontaktieren Sie mich bitte mit einer sehr genauen Fehlerbeschreibung (Systemumgebung, Skriptcode, vollständiger Fehlertext usw.). Bitte verwenden Sie dazu das Kontaktformular auf www.powershell-doktor.de. Ich bemühe mich, Ihnen binnen zwei Wochen zu antworten. Im Einzelfall kann es wegen dienstlicher oder privater Abwesenheit aber auch länger dauern.
Nicht nur wenn Sie Fehler in den Befehls- und Skriptbeispielen finden, sondern auch wenn Sie allgemeine Verbesserungsvorschläge für die nächste Auflage haben, können Sie sich gerne bei mir melden. Vielleicht sind Ihnen noch Bugs in der PowerShell aufgefallen? Oder Sie haben noch eine funktionelle Anomalie der PowerShell bemerkt, die im Buch nicht erwähnt ist? Oder es gibt ein Feature, das erwähnt werden sollte?
Es kann sein, dass ich einige Punkte bewusst weggelassen habe. Es kann aber auch sein, dass ich diesen Bug, diese Anomalie bzw. dieses Feature selbst noch nicht bemerkt bzw. verwendet habe. Bitte bedenken Sie, dass kein Mensch jemals alle PowerShell-Befehle (einige Tausend) bzw. .NET-Programmierschnittstellen (einige Hunderttausend, wenn man alle Methoden und Eigenschaften einzeln zählt) in der Praxis benutzt hat oder bis zu seinem Lebensende benutzen wird.
Ich freue mich immer über konstruktives Feedback und Verbesserungsvorschläge. Bitte verwenden Sie dazu das Kontaktformular unter www.powershell-doktor.de/Leserfeedback.
Von meinen selbst verlegten Fachbüchern sind Sie es gewohnt, dass ich in kurzen Abständen von mehreren Wochen neue Versionen des Buchs veröffentliche.
Bitte beachten Sie, dass ständig neue Auflagen dieses Fachbuchs leider nicht möglich sind, da der Carl Hanser Verlag längere Produktionsprozesse hat und Bücher auf Vorrat für einen längeren Zeitraum druckt. Zwischen zwei Auflagen dieses Buchs lagen in der Vergangenheit daher immer ein bis zwei Jahre.
Unter der E-Mail-Adresse [email protected] stehen Ihnen mein Team und ich für Anfragen bezüglich Schulung, Beratung und Entwicklungstätigkeiten zur Verfügung – nicht nur zum Thema PowerShell und .NET/.NET Core, sondern zu fast allen modernen Techniken der Entwicklung und des Betriebs von Software in großen Unternehmen. Wir besuchen Sie gerne in Ihrem Unternehmen an einem beliebigen Standort oder unterstützen Sie per Videokonferenz.
Folgenden Personen möchte ich meinen ausdrücklichen Dank für ihre Mitwirkung an diesem Buch aussprechen:
meinem Kollegen Peter Monadjemi, der rund 100 Seiten mit Beispielen zu der 3. Auflage dieses Buchs beigetragen hat und dessen Inhalte zum Teil noch im Buch enthalten sind (Themen: Workflows, Bitlocker, ODBC, Hyper-V, DNS-Client, Firewall und Microsoft SQL Server-Administration),
meinem Kollegen André Krämer, der die PowerShell 7 auf macOS getestet hat, da ich selbst kein macOS-Gerät besitze,
Frau Sylvia Hasselbach, die mich schon seit 20 Jahren als Lektorin begleitet und die dieses Buchprojekt beim Carl Hanser Verlag koordiniert und vermarktet,
Frau Sandra Gottmann, die meine Tippfehler gefunden und sprachliche Ungenauigkeiten eliminiert hat,
den Lesern Alexander Grober und Mario Severing für ihre ausführlichen Hinweise auf von den Korrektoren früherer Auflagen nicht gefundene Tippfehler sowie inhaltliche Optimierungsmöglichkeiten in der Vorauflage,
meiner Frau und meinen Kindern dafür, dass sie mir das Umfeld geben, um neben meinem Hauptberuf an Büchern wie diesem zu arbeiten.
. . . wünsche ich Ihnen viel Spaß und Erfolg mit der PowerShell!
Dr. Holger Schwichtenberg
Essen, im Dezember 2023
Studienabschluss Diplom-Wirtschaftsinformatik an der Universität Essen
Promotion an der Universität Essen im Fachgebiet komponentenbasierter Softwareentwicklung
Seit 1996 in der IT tätig als Softwareentwickler, Softwarearchitekt, Berater, Dozent und Fachjournalist
Fachlicher Leiter des Expertenteams bei www.IT-Visions.de in Essen
Über 90 Fachbücher bei verschiedenen Verlagen, u. a. Carl Hanser Verlag, O’Reilly, APress, Microsoft Press, Addison Wesley sowie im Selbstverlag
Mehr als 1500 Beiträge in Fachzeitschriften und Online-Portalen
Gutachter in den Wettbewerbsverfahren der EU gegen Microsoft (2006 – 2009)
Ständiger Mitarbeiter der Zeitschriften iX (seit 1999), dotnetpro (seit 2000) und Windows Developer (seit 2010) sowie beim Online-Portal heise.de (seit 2008)
Regelmäßiger Sprecher auf nationalen und internationalen Fachkonferenzen (z. B. enterJS, BASTA!, Microsoft TechEd, Microsoft Summit, Microsoft IT Forum, OOP, IT Tage, .NET Architecture Camp, Advanced Developers Conference, Developer Week, DOTNET Cologne, MD DevDays, Community in Motion, DOTNET-Konferenz, VS One, NRW.Conf, Net.Object Days, Windows Forum, Container Conf)
Zertifikate und Auszeichnungen von Microsoft:
Microsoft Most Valuable Professional (MVP), kontinuierlich ausgezeichnet seit 2004
Microsoft Certified Solution Developer (MCSD)
Thematische Schwerpunkte:
Softwarearchitektur, mehrschichtige Softwareentwicklung, Softwarekomponenten
Visual Studio, Continuous Integration (CI) und Continuous Delivery (CD) mit Azure DevOps
Microsoft .NET (.NET Framework, .NET Core), C#, Visual Basic
.NET-Architektur, Auswahl von .NET-Techniken
Einführung von .NET, Migration auf .NET
Webanwendungsentwicklung und Cross-Plattform-Anwendungen mit HTML/CSS, JavaScript/TypeScript und C# sowie Webframeworks wie Angular, Vue.js, Svelte, ASP.NET (Core) und Blazor
Verteilte Systeme/Webservices mit .NET, insbesondere WebAPI, gRPC und WCF
Relationale Datenbanken, XML, Datenzugriffsstrategien
Objektrelationales Mapping (ORM), insbesondere ADO.NET Entity Framework und Entity Framework Core
PowerShell
Architektur- und Code-Reviews
Performance-Analysen und -Optimierung
Entwicklungsrichtlinien
Ehrenamtliche Community-Tätigkeiten:
Vortragender für die International .NET Association (INETA) und .NET Foundation
Betrieb diverser Community-Websites:www.dotnet-lexikon.de, www.dotnetframework.de, www.windows-scripting.de, www.aspnetdev.de u. a.
Firmenwebsite: www.IT-Visions.de
Weblog: www.dotnet-doktor.de
HINWEIS:
Kontakt für Anfragen zu Schulung und Beratung sowie Softwareentwicklungsarbeiten:[email protected], Telefon 0201/64 95 90 – 50
Kontakt für Feedback zu diesem Buch:www. dotnet-doktor.de/Leserfeedback
Dieser Buchteil informiert über die Basiskonzepte der PowerShell, insbesondere Commandlets, Pipelines, Navigation und Skripte. Außerdem werden am Ende dieses Teils Werkzeuge vorgestellt.
In diesem Kapitel lernen Sie erste Schritte mit der PowerShell – zunächst mit der Windows PowerShell 5.1 und dann mit der plattformneutralen PowerShell 7.
2.1Windows PowerShell herunterladen und auf anderen Windows-Betriebssystemen installierenDie Windows PowerShell 5.1 ist in Windows 10 (ab Anniversary Update), Windows 11 und Windows Server 2016/2019/2022 (einschließlich den Zwischenversionen 1709/1909) bereits im Standard installiert.
Wenn Sie nicht Windows 10/11 oder einen der oben genannten aktuellen Windows Server benutzen, müssen Sie die PowerShell 5.1 erst installieren.
Die nachträgliche Installation der Windows PowerShell 5.1 ist auf folgenden Betriebssystemen möglich:
Windows Server 2012 R2
Windows Server 2012
Windows 2008 R2
Windows 8.1
Windows 7
Die Windows PowerShell 5.1 wird auf diesen Betriebssystemen als Teil des Windows Management Framework 5.1 (WMF) installiert [http://www.microsoft.com/en-us/download/details.aspx?id=54616].
Bei der Installation ist zu beachten, dass jeweils das .NET Framework 4.5.2 oder höher vorhanden sein muss. Auch mit .NET Framework 4.6.x und 4.7 funktioniert die PowerShell 5.1.
Das WMF-5.1-Installationspaket betrachtet sich als Update für Windows (KB3191566 für Windows 7 und Windows Server 2008 R2 bzw. KB3191564 für Windows 8.1 und Windows Server 2012 R2 sowie KB3191565 für Server 2012).
Bild 2.1Installationspaket für PowerShell 5.1 als Erweiterung
Die Windows PowerShell installiert sich in folgendes Verzeichnis: %systemroot%\system32\ WindowsPowerShell\V1.0 (für 32-Bit-Systeme).
ACHTUNG: Dabei ist das V1.0 im Pfad tatsächlich richtig: Microsoft hat dies seit Version 1.0 nicht verändert. Geplant war wohl eine „Side-by-Side“-Installationsoption wie beim .NET Framework. Doch später hat sich Microsoft dazu entschieden, dass eine neue PowerShell immer die alte überschreibt.
Auf 64-Bit-Systemen gibt es die PowerShell zweimal, einmal als 64-BitVersion in %systemroot%\ system32\WindowsPowerShell\V1.0 und einmal als 32-Bit-Version. Letztere findet man unter %systemroot%\Syswow64\WindowsPowerShell\V1.0. Die 32-Bit-Version braucht man, wenn man eine Bibliothek nutzen will, für die es keine 64Bit-Version gibt, z. B. für den Zugriff auf Microsoft-Access-Datenbanken.
Es handelt sich auch dabei nicht um einen Tippfehler: Die 64-Bit-Version befindet sich in einem Verzeichnis, das „32“ im Namen trägt, und die 32-Bit-Version in einem Verzeichnis mit „64“ im Namen!
Die 32-Bit-Version und die 64-Bit-Version der PowerShell sieht man im Startmenü: Die 32-Bit-Version hat den Zusatz „(x86)“. Die 64-Bit-Version hat keinen Zusatz. Auch den Editor „ISE“ gibt es in einer 32- und einer 64-Bit-Version.
Bild 2.2PowerShell-Einträge im Windows-10-Startmenü
TIPP: Unter Windows 8.x empfiehlt sich der Einsatz der Erweiterung www.classicshell.net, die das klassische Startmenü in Windows 8.x zurückbringt. Der Rückgriff auf ein Startmenü hat nicht nur mit Nostalgie zu tun, sondern auch ganz handfeste praktische Gründe: Der kachelbasierte Startbildschirm von Windows 8.x findet leider zum Suchbegriff „PowerShell“ weder die PowerShell ISE noch die 32-Bit-Variante der PowerShell.
Bild 2.3Versagen auf ganzer Linie: Der kachelbasierte Startbildschirm von Windows 8.x findet leider zum Suchbegriff „PowerShell“ weder die ISE noch die 32-Bit-Variante der PowerShell. Seit Windows 10 ist das behoben.
Unter Windows 8.x geht es mit Classic Shell:
Bild 2.4Die Classic Shell findet alle Einträge zur Windows PowerShell.
Durch die Installation der PowerShell wird in Windows auch ein neues Ereignisprotokoll „PowerShell“ angelegt, in dem die PowerShell wichtige Zustandsänderungen protokolliert.
Bild 2.5Ereignisprotokoll „Windows PowerShell“
Falls man die PowerShell deinstallieren möchte, muss man dies in der Systemsteuerung unter „Programme und Funktionen/Installierte Updates anzeigen“ tun und dort das „Microsoft Windows Management Framework“ deinstallieren.
Bild 2.6Deinstallation der PowerShell durch Deinstallation des WMF
Dieses Kapitel stellt einige Befehle vor, mit denen Sie die PowerShell-Funktionalität ausprobieren können. Die PowerShell verfügt über zwei Modi (interaktiver Modus und Skriptmodus), die hier getrennt behandelt werden.
2.2.1PowerShell im interaktiven ModusDer erste Test verwendet die PowerShell im interaktiven Modus.
Starten Sie bitte die PowerShell. Es erscheint ein leeres PowerShell-Konsolenfenster. Auf den ersten Blick ist kein großer Unterschied zur herkömmlichen Konsole zu erkennen. Allerdings steckt in der PowerShell mehr Kraft – im wahrsten Sinne des Wortes.
Bild 2.7