Zu diesem Buch – sowie zu vielen weiteren O’Reilly-Büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei oreilly.plus+: www.oreilly.plus |
Das komplette Praxiswissen für Administratoren und IT-Profis
Dr. Tobias Weltner
Lektorat: Ariane Hesse
Lektoratsassistenz: Anja Weimer, Julia Griebel
Korrektorat: Sibylle Feldmann, www.richtiger-text.de
Satz: Gerhard Alfes, mediaService, www.mediaservice.tv
Herstellung: Stefanie Weidner
Umschlaggestaltung: Michael Oreal, www.oreal.de, unter Verwendung eines Fotos von iStock by Getty Images von querbeet, Stock-Fotografie-ID184997148
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.
ISBN:
Print 978-3-96009-163-9
PDF 978-3-96010-479-7
ePub 978-3-96010-480-3
mobi 978-3-96010-481-0
1. Auflage 2021
Copyright © 2021 dpunkt.verlag GmbH
Wieblinger Weg 17
69123 Heidelberg
Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«. O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.
Hinweis:
Dieses Buch wurde auf PEFC-zertifiziertem Papier aus nachhaltiger Waldwirtschaft gedruckt. Der Umwelt zuliebe verzichten wir zusätzlich auf die Einschweißfolie.
Schreiben Sie uns:
Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: kommentar@oreilly.de.
Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.
Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.
Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.
5 4 3 2 1 0
Vorwort
Wie Sie dieses Buch nutzen
Achtung
Noch mehr Unterstützung
1PowerShell: Erste Schritte
PowerShell installieren
Windows-Betriebssystem
PowerShell nachrüsten: macOS und Linux
Kompatibilität der PowerShell
PowerShell einrichten
Vorsicht mit Administratorrechten!
Interaktive Befehle eingeben
Autovervollständigung: Tippfehler vermeiden
Befehlszeilen erneut verwenden
Groß- und Kleinschreibung
Unvollständige und mehrzeilige Eingaben
PowerShell-Hilfe aus dem Internet nachladen
Skriptausführung erlauben
Weitere PowerShell-Einschränkungen
Wichtige PowerShell-Werkzeuge
PowerShell-ISE-Editor
VSCode (Visual Studio Code)
Windows-Terminal
Codebeispiele automatisch herunterladen
Befehl zum Herunterladen von Codebeispielen nachrüsten
Beispielcode in Zwischenablage kopieren
Beispielcode sofort ausführen
Profilskripte: PowerShell dauerhaft anpassen
Einzelne Profilskripte verwenden
Fragen stellen
Alle Skripte herunterladen
Zusammenfassung
Ausführungsrichtlinie festlegen
Hilfe nachrüsten
Windows PowerShell aktualisieren
Hilfsbefehle zum Download von Beispielcode
»Fehlende Befehle« verstehen
Zusätzliche Werkzeuge
2Überblick: Was PowerShell leistet
Befehle lösen Aufgaben
Literale
Text
Zahlen
Datum und Zeit
Kommentare
Cmdlets: die PowerShell-Befehle
Nach Tätigkeitsbereich suchen (»Noun«)
Nach Tätigkeit suchen (»Verb«)
Nach Herkunft suchen
Standardisierte Verben
Cmdlets per Fenster suchen
Syntax verstehen
Ausführliche Hilfe und Beispiele
Anwendungsprogramme (Applications)
Applications starten
Applications finden
Systembefehle nutzen
Hilfe für Applications abrufen
.NET-Methoden
Methoden verwenden
Hilfe für Methoden
Noch mehr Methoden
Methoden: vielseitiger, aber kleinteiliger
Operatoren
Operatoren nachschlagen
Vergleichsoperatoren
Textoperatoren
Zuweisungen und Pipeline
Zahlenreihen
Befehle verbinden
Das Türchen-Modell
Normalfall: »Türchen 3«
Modernes Pipeline-Streaming: »Türchen 1«
Klassische Variablen: »Türchen 2«
Neue Befehle nachrüsten
Beispiel 1: QR-Codes generieren
Beispiel 2: Automatische HTML-Reports
Beispiel 3: Musik spielen
Zusammenfassung
3Skripte und Funktionen
PowerShell-Skripte verstehen
Skriptcode eingeben
Skripte mit dem ISE-Editor entwickeln
Neues Skript anlegen
Skripte mit dem VSCode-Editor entwickeln
Neue Skripte anlegen
Skripte ausführen
Skripte innerhalb von PowerShell starten
Skripte außerhalb von PowerShell starten
Skripte automatisch starten
Skriptstart durch Task Scheduler
Profilskripte – die Autostartskripte
Profilskript anlegen und öffnen
Typische Profilskriptaufgaben durchführen
Neue Befehle: Funktionen
Schritt 1: Nützlicher Code
Schritt 2: Als Funktion verpacken
Schritt 3: Parameter definieren
Schritt 4: Funktionen dauerhaft verfügbar machen
Funktionen im Modul permanent verfügbar
Die gemeinsame Grundlage: der Skriptblock
Skripte sind gespeicherte Skriptblöcke
Funktionen sind vorgeladene Skriptblöcke
Module laden Funktionen bei Bedarf in den Speicher
Skript oder Funktion?
4Cmdlets – PowerShell-Befehle
Parameter steuern Cmdlets
Argumente an Parameter übergeben
Parameter machen Cmdlets vielseitig
Politisch inkorrekt: positionale Argumente
Gratiszugabe: »Common Parameters«
Auf Fehler reagieren
Vielseitigkeit durch Parametersätze
»Schmal, aber tief« – Cmdlets sind Spezialisten
Mehrere Parametersätze: noch mehr Vielseitigkeit
Praxis: Ereignisse aus dem Ereignislogbuch lesen
»ISA/HASA« – wie Cmdlets in der Pipeline funktionieren
Das »ISA/HASA«-Prinzip
Praxisnutzen
Vorteile des Pipeline-Streamings
5Die PowerShell-Pipeline
Aufbau der PowerShell-Pipeline
Befehle reichen Ergebnisse weiter
Pipeline steuert Befehle
Prinzipieller Aufbau der Pipeline
Die sechs wichtigsten Pipeline-Befehle
Select-Object
Detailinformationen festlegen
Unsichtbare Eigenschaften sichtbar machen
Eine bestimmte Eigenschaft auswählen: -ExpandProperty
Selbst festlegen, welche Informationen wichtig sind
Weitere Informationen anfügen
-First, -Last und -Skip
Berechnete Eigenschaften
Where-Object
Clientseitiger Universalfilter
Leere Elemente aussortieren
Fortgeschrittene Syntax bietet mehr Möglichkeiten
Out-GridView: das »menschliche« Where-Object
Sort-Object
Cmdlet-Ergebnisse sortieren
Sortierung mit anderen Cmdlets kombinieren
Datentyp der Sortierung ändern
Mehrere Spalten in umgekehrter Sortierung
Group-Object
Häufigkeiten feststellen
Daten gruppieren
Berechnete Gruppierungskriterien
Measure-Object
Statistische Berechnungen
Ordnergrößen berechnen
Foreach-Object
Grundprinzip: eine Schleife
Format-Cmdlets
Gefährlich: Format-Cmdlets verändern Objekte
Mehrspaltige Anzeigen
Tabellenausgabe mit Gruppierung
6Arrays und Hashtables
Arrays verwenden
Auf Array-Elemente zugreifen
Eigene Arrays (und einige Fallen)
Automatische Array-Erzeugung
Manuelle Array-Erzeugung
Hashtables – »sprechende Arrays«
Hashtables in Objekte umwandeln
Neue Objekte mit Eigenschaften initialisieren
7PowerShell-Laufwerke
Dateisystemaufgaben meistern
Cmdlets für das Dateisystem finden
Erste Schritte
Ordner anlegen
Dateien anlegen und Informationen speichern
Encoding von Textdateien
Encodings sichtbar machen
Dateien finden
Dateien und Ordner kopieren
Dateien umbenennen
Dateien und Ordner löschen
Größe eines Laufwerks ermitteln
Größe eines Ordners ermitteln
Umgebungsvariablen
Alle Umgebungsvariablen auflisten
Auf einzelne Umgebungsvariablen zugreifen
Umgebungsvariablen ändern
Windows-Registrierungsdatenbank
Schlüssel suchen
Werte lesen
Neue Registry-Schlüssel anlegen
Registry-Schlüssel löschen
Werte hinzufügen, ändern und löschen
Virtuelle Laufwerke und Provider
Neue PowerShell-Laufwerke
Ohne Laufwerksbuchstaben direkt auf Provider zugreifen
-Path oder -LiteralPath?
Existenz eines Pfads prüfen
Pfadnamen auflösen
8Operatoren und Bedingungen
Operatoren – Aufbau und Namensgebung
Wie Operatornamen aufgebaut sind
Unäre Operatoren
Zuweisungsoperatoren
Vergleichsoperatoren
Ternary-Operator
Unterscheidung zwischen Groß- und Kleinschreibung
Unterschiedliche Datentypen vergleichen
Vergleiche umkehren
Vergleiche kombinieren
Vergleiche auf Arrays anwenden
Bedingungen
if-Bedingung
switch-Bedingung
Where-Object
Null-Koaleszenz-Operatoren
Pipeline-Verkettungsoperatoren
9Textoperationen und reguläre Ausdrücke
Texte zusammenfügen
Doppelte Anführungszeichen lösen Variablen auf
Der Formatierungsoperator -f
Array-Elemente in Text umwandeln
Textstellen finden und extrahieren
Texte splitten
Informationen in Texten finden
Reguläre Ausdrücke: Textmustererkennung
Erste Schritte: Textmuster basteln
Eigene reguläre Ausdrücke konzipieren
Textstellen ersetzen
Einfache Ersetzungen
Sichere Ersetzungen mit -replace
Mehrere Zeichen durch eins ersetzen
Split und Join: eine mächtige Strategie
Dateipfade ändern
X500-Pfade auslesen
10Anwendungen und Konsolenbefehle
Programme starten
Optionen für den Programmstart festlegen
Argumente an Anwendungen übergeben
Hilfe für Konsolenbefehle anzeigen
Beispiel: Lizenzstatus von Windows überprüfen
Ergebnisse von Anwendungen weiterverarbeiten
Error Level auswerten
Fragen an Benutzer stellen mit choice.exe
Rückgabetext auswerten
Laufende Programme steuern
Feststellen, ob ein Prozess läuft
Auf einen Prozess warten
Einstellungen laufender Prozesse ändern
Prozesse vorzeitig abbrechen
11Typen verwenden
Typumwandlungen
Geeignete Datentypen auswählen
Explizite Umwandlung
Deutsches Datumsformat mit dem Operator -as
Verkettete Umwandlungen
Typen: optimale Informationsbehälter
Implizite Umwandlung
Typisierte Variablen
Parameter und Argumente
Vergleichsoperationen
Statische Methoden eines Typs verwenden
Dateiextension ermitteln
Mathematische Funktionen
Zahlenformate konvertieren
DNS-Auflösung
Umgebungsvariablen
Pfade zu Systemordnern finden
Konsoleneinstellungen
Spezielle Datumsformate lesen
Statische Eigenschaften verwenden
Neue .NET-Typen finden
Type Accelerators untersuchen
Typen nachladen
Assembly-Namen feststellen
Aktuell geladene Assemblies auflisten
Zusätzliche Assembly nachladen
Assembly aus Datei nachladen
12Mit Objekten arbeiten
Objekte kennenlernen
Objekte funktionieren wie beschriftete Schubladen
Typisierte Variablen
Objekteigenschaften erforschen
Eigenschaften lesen
Eigenschaften ändern
Methoden verwenden
Zusammenfassende Systematik
Eigenschaften
Methoden
Hilfe finden
Neue Objekte herstellen
Konstruktoren verstehen
Ein Credential-Object zur automatischen Anmeldung
Eigene Objekte erstellen
13Eigene Typen und Attribute
Typen (Klassen) selbst herstellen
Einen eigenen Typ erfinden
Neue Objekte eines Typs generieren
Konstruktoren hinzufügen
Methoden zum Typ hinzufügen
Vererbung von Typen
Konstruktoren werden nicht geerbt
Philips Hue Smart Home mit Typen steuern
Kontakt zur Philips Hue Bridge herstellen
Lampen- und Schalterinventar
Lampen und Steckdosen ansprechen
Attribute erstellen
SecureString-Transformationsattribute
Auf API-Funktionen zugreifen
API-Funktion einsetzen
Wiederverwertbare PowerShell-Funktion herstellen
14Parameter für Fortgeschrittene
Argumentvervollständigung
Statische Autovervollständigung
Autovervollständigung über Enumerationsdatentyp
Eigene Enumerationsdatentypen erstellen
Autovervollständigung über ValidateSet
Dynamische Argumentvervollständigung
Zuweisungen mit Validierern überprüfen
ValidateSet
ValidateRange
ValidateLength
ValidatePattern
ValidateCount
ValidateScript
Nullwerte und andere Validierer
Parameter in ParameterSets einteilen
Gegenseitig ausschließende Parameter
Binding über Datentyp
Parameter in mehreren Parametersätzen
Simulationsmodus (-WhatIf) und Sicherheitsabfrage (-Confirm)
Festlegen, welche Codeteile übersprungen werden sollen
Weiterleitung verhindern
Gefährlichkeit einer Funktion festlegen
Dynamische Parameter
Dynamische Parameter selbst definieren
Splatting: Argumente an Parameter binden
Splatting im Alltag einsetzen
Übergebene Parameter als Hashtable empfangen
Mit Splatting Parameter weiterreichen
15Pipeline-fähige Funktionen
Anonyme Pipeline-Funktion
Prototyping
Pipeline-fähige Funktion erstellen
Benannte Parameter
Where-Object durch eine Funktion ersetzen
Kurzes Resümee
Parameter und Pipeline-Kontrakt
ISA-Kontrakt: Pipeline-Eingaben direkt binden
HASA-Kontrakt: Objekteigenschaften lesen
HASA und ISA kombinieren
CSV-Dateien direkt an Funktionen übergeben
Aliasnamen für Parameter
16PowerShellGet und Module
PowerShellGet – die PowerShell-Softwareverteilung
Grundlage »PackageManagement«
PowerShellGet – Softwareverteilung per Cmdlets
Wo PowerShell Module lagert
Unterschiede zwischen Windows PowerShell und PowerShell
Installierte Module untersuchen
Module mit PowerShellGet nachinstallieren
Module finden und installieren
Modul herunterladen
Modul testweise ausführen
Modul dauerhaft installieren
Module aktualisieren
Side-by-Side-Versionierung
Eigene Module veröffentlichen
Eigene Module herstellen
Neue Manifestdatei anlegen
Neue Moduldatei anlegen
Modul testen
Nächste Schritte
Eigene Module verteilen
Netzwerkfreigabe
Modul in Repository übertragen
Modul aus privatem Repository installieren
17Fehlerhandling
Fehlermeldungen unterdrücken
Bestimmen, wie Cmdlets auf Fehler reagieren
Fehler mitprotokollieren lassen
Erfolg eines Befehlsaufrufs prüfen
Fehlerhandler einsetzen
Lokaler Fehlerhandler: try…catch
Globaler Fehlerhandler: Trap
18Windows PowerShell-Remoting
PowerShell-Remoting aktivieren
Zugriff auch auf Windows-Clients
Remoting-Verbindung überprüfen
NTLM-Authentifizierung erlauben
PowerShell-Remoting überprüfen
Erste Schritte mit PowerShell-Remoting
Befehle und Skripte remote ausführen
Kontrolle: Wer besucht »meinen« Computer?
Remotefähigen Code entwickeln
Argumente an Remote-Code übergeben
Ergebnisse vom Remote-Code an den Aufrufer übertragen
Fan-Out: integrierte Parallelverarbeitung
ThrottleLimit: Parallelverarbeitung begrenzen
Double-Hop und CredSSP: Anmeldeinfos weiterreichen
Eigene Sitzungen verwenden
Eigene Sitzungen anlegen
Parallelverarbeitung mit PSSessions
SSH-basiertes Remoting
SSH-Remoting aktivieren
Enter-PSSession über SSH
Invoke-Command über SSH
Unbeaufsichtigte Ausführung und Parallelbearbeitung
19Grafische Oberflächen gestalten
Eigene Fenster herstellen
GUI mit Code definieren
GUI mit XAML definieren
Beispiel: Dienststopper-Anwendung
Index
PowerShell begann vor 15 Jahren als Windows Powershell. Heute ist diese Shell plattformübergreifend auf Windows, Linux und macOS verfügbar und wird begeistert von einer immer größeren Anwendercommunity genutzt.
In diesem Buch werden Sie Schritt für Schritt erfahren, was PowerShell eigentlich ist und was diese Shell alles für Sie tun kann. Ob Sie Administrator »on-premise« sind und lokale Server betreuen, Ihr Unternehmen in der Cloud verwalten oder ob Sie heterogene Umgebungen »unter einen Hut« bringen wollen – PowerShell bietet die Werkzeuge dafür.
Aber auch zu Hause und in der Schule lässt es sich hervorragend einsetzen: PowerShell ist es nämlich egal, ob Sie damit eine Unternehmens-IT administrieren, Ihre Philips-Hue-Homeautomation verwalten oder Sonnenkollektoren steuern. Ob Sie den eigenen NAS-Server auf dem Dachboden sichern, automatisiert Dateien aus dem Internet laden oder vielleicht bloß Matherätsel knacken wollen.
Und genau deshalb ist PowerShell auch in Ausbildung und Schulen spannend: Kaum eine andere kostenlose Programmierumgebung und Shell unterstützt so viele Programmierkonzepte auf so vielen Plattformen – angefangen von Befehlsaufrufen über moderne Programmiertechniken wie den Einsatz von Funktionen und Objekten bis hin zu nativer Klassenunterstützung, Vererbung und universellem Netzwerk-Remoting. Kaum eine andere Umgebung bietet so unmittelbares Feedback wie PowerShell. Ideal also, um im Unterricht und in der Ausbildung anhand von nachvollziehbaren Praxisbeispielen die Funktionsweisen moderner IT auszuprobieren und zu vertiefen.
Dieses Buch bietet zahlreiche Praxisbeispiele aus den unterschiedlichsten Einsatzbereichen und demonstriert schrittweise die vielfältigen Möglichkeiten der PowerShell.
So schlüpfen Sie zu Anfang des Buches in die Rolle des einfachen PowerShell-Anwenders. Sie generieren mit Einzeilern Excel- und HTML-Reports und können mit wenigen Schritten Cloud-Systeme steuern oder Notenblätter aus dem Internet herunterladen und als PDF exportieren.
Von diesen ersten Fingerübungen inspiriert lernen Sie den Minimal-Wortschatz der PowerShell kennen und fügen mehrere Befehle zu eigenen größeren Automationslösungen zusammen.
Die Anwendungsbeispiele werden immer komplexer, und Sie lernen schrittweise alle weiteren wichtigen Konzepte der PowerShell kennen. Dazu gehören Remotezugriffe, direkte Betriebssystemaufrufe, das Erstellen grafischer Oberflächen sowie eigene PowerShell-Befehle und -Module.
Am Ende dieses Buches beherrschen Sie dann eine der modernsten Automationssprachen, die für Windows, Linux und macOS kostenfrei zur Verfügung stehen, und haben sich privat wie beruflich vom einfachen Anwender zum versierten IT-Automatisierer qualifiziert.
Damit Sie auf dieser Reise nicht allzuviel eintippen müssen, automatisiert PowerShell in diesem Buch auf Wunsch natürlich auch das Eintippen der Beispiele für Sie. Schon im ersten Kapitel lernen Sie den passenden Befehl kennen: durch Eingabe der jeweiligen Listingnummer fügt PowerShell den Quellcode aus dem Buch automatisch ein.
Dieses Buch setzt keinerlei Grundkenntnisse voraus, wenn Sie von vorn zu lesen beginnen – und das ist auch empfehlenswert. Die Kapitel bauen aufeinander auf. Am Anfang jedes Kapitels finden Sie eine kurze Zusammenfassung, falls es einmal eilig ist.
Die PowerShell-Beispiele im Buch sind jeweils in einer anderen Schriftart formatiert. Damit Sie leichter erkennen, welche Eingaben von Ihnen erwartet werden, wird bei allen Eingaben die PowerShell-Eingabeaufforderung PS> (einschließlich der Leerstelle hinter dem >) vorangestellt. Diese Eingabeaufforderung kann bei Ihnen auch anders aussehen und sollte in den Beispielen natürlich nicht mit eingegeben werden.
Bitte verwenden Sie die Begleitmaterialien immer im Kontext des entsprechenden Buchkapitels. Viele der Beispiele funktionieren nur, wenn Sie die entsprechenden Vorarbeiten im Kapitel beachtet haben, oder können auch unerwartete Resultate liefern, wenn man die Beispiele aus dem Zusammenhang des Kapitels reißt.
Falls trotz aller Sorgfalt einmal Fragen offenbleiben oder Sie weitere Ideen und Themenwünsche haben, besuchen Sie einfach das interaktive Leserforum zu diesem Buch: https://github.com/TobiasPSP/OReilly/discussions
Damit bleibt mir an dieser Stelle nur noch, Ihnen viel Spaß zu wünschen bei der Lektüre dieses Buchs und bei der Arbeit mit der faszinierenden PowerShell! Ich würde mich freuen, von Ihnen im Diskussionsforum zu hören.
Herzlichst,
Tobias Weltner
In diesem Kapitel:
PowerShell installieren
PowerShell einrichten
Wichtige PowerShell-Werkzeuge
Codebeispiele automatisch herunterladen
Profilskripte: PowerShell dauerhaft anpassen
Zusammenfassung
Ausführlich werden in diesem Kapitel die folgenden Aspekte erläutert:
Wenn Sie es eilig haben und die Grundlagen der PowerShell schon kennen, dürfen Sie diesen Einleitungsteil selbstverständlich überspringen. Sie sollten aber in jedem Fall wenigstens den Abschnitt »Zusammenfassung« am Ende dieses Kapitels beachten. Dort werden wichtige Grundeinstellungen besprochen, die die Voraussetzung für viele Beispiele in den folgenden Kapiteln sind.
PowerShell ist eine verblüffend flexible und machtvolle plattformunabhängige Automationssprache, die mit geringem Aufwand ein enormes Spektrum von Aufgaben automatisieren kann.
Dazu zählen typische IT-Administrationsaufgaben ebenso wie völlig andere Einsatzbereiche aus Mathematik, Forschung und Lehre, in der Büroautomation und nicht zuletzt in Hobby und Tüftelei: Schon im nächsten Kapitel werden wir uns kurz der Musikkomposition und Steuerung von MIDI-Musikinstrumenten widmen, und in Kapitel 13 erfahren Sie zum Beispiel, wie PowerShell sogar Lampen und Steckdosen in Ihrem Zuhause fernsteuert. Die Grundlagen und Strategien sind dabei indes immer dieselben.
Bei all diesen Beispielen geht es also ausschließlich um zweierlei: kurzweilig und verständlich möglichst viele Einsatzszenarien der PowerShell vorzustellen, um Ideen zu wecken und eine breite Leserschicht anzusprechen, und die stets gleichen allgemeinen Mechanismen zu verstehen, die dabei zum Einsatz kommen.
Denn mit dem Wissen, das Sie beispielsweise in der Musikkomposition oder auch bei der Fernsteuerung von Elektrogeräten benötigen, können Sie natürlich auch Server aufsetzen oder Drittanbietersoftware für Backup-Lösungen steuern – und umgekehrt. Hier wird deutlich, dass PowerShell ebenfalls eine ideale Plattform für Ausbildung und Schule ist, denn alle modernen IT-Grundlagen lassen sich damit anschaulich und unterhaltsam vermitteln.
Zunächst aber muss PowerShell vollständig eingerichtet werden, und genau darum geht es in diesem ersten Kapitel. Dabei werden auch einige wichtige Sicherheitseinstellungen besprochen, und der Unterschied zwischen PowerShell und Windows PowerShell wird Ihnen schnell klar werden.
Danach folgt ein kleiner Exkurs zu den wichtigsten kostenlosen PowerShell-Tools, mit denen Sie Ihren Computer in eine moderne PowerShell-Entwicklungsumgebung verwandeln.
Zum Abschluss des Kapitels erfahren Sie, wie die vielen Hundert Skriptbeispiele in diesem Buch ohne Tipparbeit direkt von PowerShell aus dem Internet heruntergeladen und ausgeführt werden und wie offengebliebene Fragen unmittelbar an den Autor gerichtet werden können.
In diesem Buch wird das Wort »PowerShell« immer dann kursiv gesetzt, wenn spezifisch die neue plattformübergreifende PowerShell gemeint ist. Der nicht kursiv gesetzte Begriff »PowerShell« bezieht sich allgemein auf die Sprache PowerShell und gilt sowohl für Windows PowerShell als auch für PowerShell.
Schon in diesem Kapitel wird Ihnen bereits PowerShell-Code begegnen, der aber hier als reines »Werkzeug« für die Einrichtung Ihres Computers dient. Sie können den Code natürlich bereits neugierig mustern, aber bitte brüten Sie nicht zu lange über einzelnen Codebeispielen. Es kommt in diesem Kapitel nur auf die Ergebnisse der Codebeispiele an, nicht auf den Code selbst und seine Mechanismen. Diese stehen ab dem zweiten Kapitel im Vordergrund und werden dort dann auch systematisch besprochen.
PowerShell ist plattformunabhängig und kann auf verschiedenen Betriebssystemen ausgeführt werden, zum Beispiel Windows, Linux oder macOS.
Historisch ist PowerShell allerdings als Teil des Windows-Betriebssystems entstanden und dort als sogenannte Windows PowerShell immer automatisch enthalten. Seit 2016 ist diese Fassung in Version 5.1 fertiggestellt, wird auf diesem Stand gehalten und weiter von Microsoft gewartet.
Alle Entwicklungsarbeit geht seit 2016 in die neue, plattformunabhängige PowerShell, bei Drucklegung dieses Buchs in Version 7.2, die bei allen Betriebssystemen zuerst nachinstalliert werden muss. Wie das geschieht, erfahren Sie jetzt, und zwar in separaten Abschnitten für die jeweiligen Betriebssysteme.
In allen Windows-Betriebssystemen ab Server 2008 und Windows 7 ist die PowerShell bereits fester Bestandteil – genauer gesagt die Windows PowerShell. Hier könnten Sie also sofort loslegen, sollten aber wenigstens prüfen, ob Ihre Windows PowerShell auf dem aktuellen Stand ist (dazu gleich mehr).
Noch empfehlenswerter ist es, zusätzlich zur integrierten Windows PowerShell auch die neue PowerShell hinzuzuinstallieren. Beide laufen friedlich parallel nebeneinander, und so können Sie sich ein eigenes Bild von den Unterschieden machen.
Sie starten die Windows PowerShell mit dem Befehl powershell.exe (oder kurz powershell) – wie jedes andere Programm auch. Drücken Sie zum Beispiel + , um das Dialogfeld Ausführen zu öffnen (siehe Abbildung 1.1), und geben den Befehl powershell ein. Dann klicken Sie auf OK.
In der Taskleiste erscheint ein blaues Symbol, das Sie per Rechtsklick und An Taskleiste anheften am besten dauerhaft dort anpinnen. Ein Rechtsklick auf das Symbol öffnet die sogenannte Sprungliste, sozusagen das Cockpit der Windows PowerShell (siehe Abbildung 1.2).
Abbildung 1.1: Windows PowerShell starten
Von hier aus können Sie die PowerShell zum Beispiel mit vollen Administratorrechten starten, und auch der in Windows PowerShell integrierte Editor ISE (Integrated Script Environment) steht hier bereit.
Abbildung 1.2: Sprungliste der Windows PowerShell
Die Windows PowerShell selbst erscheint als blaue oder schwarze Konsole, in die Sie Befehle eingeben können (siehe Abbildung 1.3). Auch wenn es Ihnen bereits in den Fingern juckt: Verschieben Sie Ihre Experimente bitte noch einen Moment – was Sie alles mit PowerShell tun können, veranschaulicht der Rundkurs im nächsten Kapitel.
Lassen Sie uns zunächst alles einsatzbereit machen.
Abbildung 1.3: Die in Windows integrierte Windows PowerShell
Falls Sie Windows 10 oder Server 2016 (und besser) verwenden, ist alles gut: Diese Betriebssysteme enthalten Windows PowerShell in Version 5.1, der letzten und ausgereiften Version. Diese Version wird über die gesamte Laufzeit von Windows 10 weitergepflegt und automatisch aktualisiert.
Wer ein älteres Windows-Betriebssystem nutzt, muss Windows PowerShell manuell aktualisieren. Das ist sinnvoll, weil die Codebeispiele dieses Buchs die aktuelle Windows Power-Shell 5.1 voraussetzen. Es ist aber vor allem wichtig, weil Updates stets auch Programmfehler und Sicherheitslücken berichtigen. Schauen Sie also in Ihrer Windows PowerShell kurz nach, welche Version Sie verwenden (siehe Abbildung 1.4). Geben Sie ein:
PS> $PSVersionTable.PSVersion
Zurückgeliefert wird die Version der PowerShell. Bei Versionen kleiner als 5.1 (Major: 5, Minor: 1) ist es Zeit für ein Update.
Abbildung 1.4: Version der PowerShell bestimmen
Weil Windows PowerShell ein fester Teil von Windows ist, kann man sie nur über spezielle Update-Pakete aktualisieren. Diese stehen kostenlos bei Microsoft als sogenannte msu-Pakete zum Download bereit. Bei Drucklegung dieses Buchs fand man das sogenannte Windows Management Framework 5.1 hier: https://www.microsoft.com/en-us/download/details.aspx?id=54616 (siehe Abbildung 1.5).
Links ändern sich, und sollte der genannte Link nicht mehr funktionieren, googeln Sie nach »Windows Management Framework 5.1 Download«.
Bitte beachten Sie auf der Downloadseite die Installationshinweise am Ende der Seite, insbesondere wenn Sie noch das alte Windows 7 verwenden. Windows PowerShell erfordert übrigens das .NET Framework 4.5 oder besser, das bei sehr alten Windows-Systemen gegebenenfalls vor dem Update nachinstalliert werden muss.
Bei Clients ist ein Update der Windows PowerShell schnell erledigt. Bei Servern sollten Sie sich dagegen vor dem Update unbedingt genauer informieren: Serversoftware wie Microsoft Exchange kann auf eine ganz bestimmte Windows PowerShell-Version festgelegt sein. Entweder aktualisieren Sie in so einem Fall Windows PowerShell gemeinsam mit den übrigen Serverkomponenten, die davon abhängen, oder Sie installieren, wenn Ihnen das zu heikel oder zu aufwendig ist, parallel zu Windows PowerShell kurzerhand die neue moderne PowerShell und arbeiten künftig einfach mit dieser, während Sie Windows PowerShell unverändert lassen.
Abbildung 1.5: Windows PowerShell ist Teil des Windows Management Framework.
Weil Windows PowerShell in das Windows-Betriebssystem fest integriert ist, kann sie – wie Sie gerade erlebt haben – nur relativ umständlich aktualisiert werden. Erst recht steht sie nicht auf anderen Betriebssystemen zur Verfügung. Deshalb hat das Microsoft-Entwicklungsteam um Steve Lee im Jahr 2016 die Entwicklung der Windows PowerShell abgeschlossen.
Alle folgenden Versionen der PowerShell wurden fundamental anders entwickelt: Sie sind nicht mehr Bestandteil von Windows, sondern eigenständige portable Anwendungen, die fortan auf dem neuen plattformunabhängigen .NET Framework Core basieren. So kann Power-Shell nun auch auf Linux, macOS und anderen Betriebssystemen eingesetzt werden.
Die neue PowerShell heißt auch nicht länger Windows PowerShell, sondern nur noch Power-Shell, die Anwendung pwsh.exe anstelle von powershell.exe.
Darüber hinaus ist PowerShell quellcodeoffen (Open Source) und portabel. Sie kann also beliebig oft und in beliebigen Versionen parallel existieren, und wenn Sie möchten, könnten Sie sie sogar wie ein persönliches Werkzeug auf einem USB-Stick bei sich tragen und vom Stick aus starten.
So ist die neue PowerShell sogar für Windows-Anwender interessant. Installieren Sie sie parallel zur vorhandenen Windows PowerShell, können Sie wahlweise Windows PowerShell über den Befehl powershell starten oder eben PowerShell über den Befehl pwsh.
Das wirft in Unternehmen häufig die Frage auf, ob (und, wenn ja, wie) man unternehmensweit von Windows PowerShell auf PowerShell umsteigen sollte. Schließlich ist die Windows PowerShell ja inzwischen »veraltet« und wird nicht länger weiterentwickelt. Stimmt das?
Nein. Windows PowerShell ist keineswegs abgekündigt und wird bis ans Ende der Laufzeit von Windows 10 weiter voll von Microsoft unterstützt. Auch etwaige Sicherheitslücken, sollten sie denn auftreten, werden weiterhin behoben, und Windows PowerShell ab Version 5.1 wird über das automatische Windows Update automatisch gepflegt.
Deshalb spricht nichts dagegen, Windows PowerShell auch weiterhin einzusetzen. Windows PowerShell hat gegenüber PowerShell sogar zwei unternehmenskritische Vorteile:
Wenn Sie also nicht unbedingt auf bestimmte neue Funktionalitäten in PowerShell angewiesen sind, spricht überhaupt nichts dagegen, im Unternehmen auch weiterhin flächendeckend Windows Power-Shell einzusetzen. Spezialisten und PowerShell-Entwickler können davon unbenommen auf ihren eigenen Entwicklungssystemen und in eigener Regie natürlich dennoch bereits die neue PowerShell einsetzen, wenn sie ihnen Vorteile bietet.
Am einfachsten funktioniert die Installation der PowerShell über den Microsoft Store. Öffnen Sie ihn, indem Sie im Windows-Startmenü nach »Store« suchen.
In vielen Unternehmensumfeldern ist der Zugang zum Microsoft Store abgeschaltet. Hier installieren Sie die neue PowerShell manuell (siehe unten). Besondere Administratorrechte sind für die Installation nicht notwendig.
Natürlich kann auch die Windows PowerShell den Store für Sie öffnen (denn PowerShell kann alles, was auch per Maus zu bewerkstelligen ist – sofern Sie die passenden Befehle kennen):
Start-Process shell:appsFolder\Microsoft.WindowsStore_8wekyb3d8bbwe!App
Wenn Sie die Codebeispiele aus dem Buch nicht von Hand eingeben wollen, rüsten Sie den Befehl L mit dieser Zeile nach:
PS> Invoke-RestMethod -Uri https://tinyurl.com/codeAusBuch -UseBasicParsing | New-Item -Path
function: -Name L -Force | Out-Null
Geben Sie hinter dem Befehl die Listing-Nummer an, beispielsweise:
PS> L 1.1
Listing 1.1 liegt in der Zwischenablage. Fügen Sie es mit STRG+V in Konsole oder Editor ein.
Mehr zum Befehl L, welche sonstigen Tricks er auf Lager hat und wie Sie den Befehl dauerhaft verfügbar machen, erfahren Sie ab Seite 63.
Klicken Sie im Microsoft-Store-Fenster auf Suchen und geben Sie als Suchwort »PowerShell« ein. Klicken Sie auf PowerShell Preview und dann auf Installieren (siehe Abbildung 1.6).
Abbildung 1.6: PowerShell 7 als Preview über den Microsoft Store installieren
Die Preview-Fassung der PowerShell enthält jeweils die allerneuesten Funktionen und eignet sich besonders gut zum Experimentieren und Kennenlernen. Darüber hinaus steht im Store neuerdings auch die Produktionsversion ohne den Zusatz »Preview« zur Verfügung.
Falls der Store Sie übrigens um Anmeldedaten bittet oder dazu drängen will, ein Benutzerkonto anzulegen, lehnen Sie dankend ab. Eine Anmeldung ist zum Herunterladen und Installieren nicht nötig.
Nach der Installation wird die neue PowerShell über den Befehl pwsh gestartet. Drücken Sie also zum Beispiel + und geben Sie den Befehl pwsh ins Dialogfeld Ausführen ein. Dann klicken Sie auf OK.
Die neue PowerShell öffnet ein Konsolenfenster mit schwarzem Hintergrund (bei Windows PowerShell ist der Hintergrund blau). Auch das Symbol der neuen PowerShell ist schwarz und nicht blau. In der Titelleiste des Konsolenfensters lesen Sie außerdem den Pfad, unter dem die neue PowerShell installiert wurde.
Klicken Sie das Symbol der neuen PowerShell in der Taskleiste mit der rechten Maustaste an und wählen Sie An Taskleiste anheften. So bleibt es dauerhaft sichtbar, und Sie können künftig bequem per Mausklick die passende PowerShell öffnen (siehe Abbildung 1.7).
Abbildung 1.7: Windows PowerShell und PowerShell lassen sich in Windows parallel betreiben.
Die angehefteten Symbole der Taskleiste befinden sich übrigens in einem separaten versteckten Ordner, den Sie über den folgenden Befehl öffnen können:
PS> explorer "$env:appdata\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar"
Wenn Sie die Version der neuen PowerShell durch Eingabe von $PSVersion überprüfen, offenbaren sich erste Unterschiede (siehe Abbildung 1.8):
Abbildung 1.8: Eine als »App« über den Microsoft Store installierte PowerShell 7.1
PSVersion meldet die neue Version, und PSEdition zeigt Core. Bei Windows PowerShell steht hier Desktop.