PowerShell 7 und Windows PowerShell 5 – das Praxisbuch - Holger Schwichtenberg - E-Book

PowerShell 7 und Windows PowerShell 5 – das Praxisbuch E-Book

Holger Schwichtenberg

0,0
59,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

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:

EPUB

Seitenzahl: 1222

Veröffentlichungsjahr: 2024

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



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

Inhalt

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

Vorwort

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.

Was ist das Thema dieses Buchs?

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.

Wer bin ich?

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.

Wer sind Sie?

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.

Was ist neu in diesem Buch?

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.

Sind in diesem Buch alle Features der PowerShell beschrieben?

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.

Wie aktuell ist dieses Buch?

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.

Welche PowerShell-Versionen werden besprochen?

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.

Warum behandelt das Buch auch noch Version 5.1 und nicht nur Version 7.4?

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.

Welche Betriebssysteme werden besprochen?

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).

Woher bekommt man die Beispiele aus diesem Buch?

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.

Wie sind die Programmcodebeispiele organisiert?

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.

Warum gendern Sie nicht in diesem Buch?

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.

Wie wurde die Qualität gesichert?

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.

Wo kann man Verbesserungsvorschläge melden?

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.

Wann wird die nächste Auflage erscheinen?

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.

Wo kann man sich schulen oder beraten lassen?

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.

Wem ist zu danken?

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.

Zum Schluss dieses Vorworts . . .

. . . wünsche ich Ihnen viel Spaß und Erfolg mit der PowerShell!

Dr. Holger Schwichtenberg

Essen, im Dezember 2023

Über den Autor

       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

ATeil A:PowerShell-Basiswissen

Dieser Buchteil informiert über die Basiskonzepte der PowerShell, insbesondere Commandlets, Pipelines, Navigation und Skripte. Außerdem werden am Ende dieses Teils Werkzeuge vorgestellt.

1Fakten zur PowerShell
2Erste Schritte mit der PowerShell

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 installieren

Die 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

Installationsordner

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.

Ereignisprotokoll „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“

Deinstallation

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

2.2Die Windows PowerShell testen

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 Modus

Der 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