Windows PowerShell – eine praktische Einführung

Es gibt in der Welt der Technologie nur wenige Werkzeuge, die so leistungsfähig, aber gleichzeitig auch so abschreckend sind wie die Kommandozeile. Bei der Windows PowerShell handelt es sich um so ein Werkzeug. Ihr habt vielleicht schon einmal davon gehört, vielleicht sogar schon einmal eine Befehlszeile davon gesehen und euch gefragt, wie das alles funktioniert. Keine Sorge, in diesem Artikel zeige ich euch die Grundlagen mit einigen praktischen Beispielen.

Letzte Aktualisierung am 30.09.2023 / Affiliate Links / Bilder von der Amazon Product Advertising API

Was ist Windows PowerShell?

Windows PowerShell ist eine von Microsoft entwickelte Shell und Skriptsprache, die hauptsächlich für die Automatisierung von administrativen Aufgaben und die Verwaltung von Windows-basierten Umgebungen verwendet wird. Microsoft hat die PowerShell erstmals 2006 eingeführt und sie ist seitdem zu einem Standardwerkzeug für IT-Profis und Entwickler geworden. Ihr könnt mehr über die Geschichte und Entwicklung der PowerShell in diesem Artikel von Microsoft nachlesen: Geschichte der PowerShell.

Anders als die ältere Kommandozeile (CMD) von Windows ist PowerShell nicht nur eine Befehlszeile, sondern auch eine Skriptsprache, was sie unglaublich mächtig macht. Sie ist nicht nur in der Lage, einfache Befehle auszuführen, sondern kann auch komplexe Skripte erstellen, um Aufgaben zu automatisieren und zu vereinfachen.

Erste Schritte mit PowerShell

Bevor wir in die Details gehen, lasst uns zunächst sicherstellen, dass ihr PowerShell auf eurem Computer habt. Seit Windows 7 ist PowerShell standardmäßig auf jedem Windows-PC installiert, und ihr könnt sie einfach starten, indem ihr “PowerShell” in die Suchleiste eures Startmenüs eingebt und die Anwendung startet. Microsoft bietet eine ausführliche Anleitung dazu an, wie ihr PowerShell startet, die ihr hier findet: So startet ihr PowerShell.

Jetzt, wo ihr PowerShell geöffnet habt, was könnt ihr damit machen? Zunächst einmal könnt ihr mit ihr genau dasselbe tun wie mit der CMD: Ihr könnt Befehle eingeben und ausführen. Aber PowerShell kann noch viel mehr.

Um euch das zu zeigen, beginnen wir mit einem einfachen Beispiel. Gebt folgenden Befehl in die PowerShell ein:

Get-Process

Was ihr gerade ausgeführt habt, ist ein sogenannter Cmdlet (ausgesprochen “Command-let”), ein kleines Skript, das eine spezielle Aufgabe ausführt. In diesem Fall zeigt das Cmdlet “Get-Process” alle laufenden Prozesse auf eurem Computer an.

Ausgabe des Befehls Get-Process in der Windows PowerShell
Ausgabe des Befehls Get-Process in der Windows PowerShell

Cmdlets – Das Herzstück der PowerShell

Cmdlets sind das Herzstück der PowerShell. Sie sind kleine, vordefinierte Skripte, die eine bestimmte Aufgabe erledigen. Jedes Cmdlet folgt einer bestimmten Nomenklatur, nämlich “Verb-Nomen”, was die Aufgabe, die das Cmdlet ausführt, leicht verständlich macht. In unserem Beispiel ist “Get” das Verb, das anzeigt, was das Cmdlet tun wird (etwas abrufen), und “Process” ist das Nomen, das anzeigt, auf was sich das Cmdlet bezieht (Prozesse).

Es gibt Hunderte von Cmdlets, und sie decken eine Vielzahl von Aufgaben ab, von der Dateiverwaltung bis hin zur Netzwerkdiagnose.

Grundlegende Cmdlets

Cmdlets sind die Herzstücke von PowerShell. Sie sind kleine Befehlszeilenprogramme, die spezifische Funktionen ausführen. Ein Cmdlet kann beispielsweise ein Verzeichnis auf eurem Computer auflisten oder einen Prozess auf eurem System starten. Cmdlets folgen einer bestimmten Syntax: Ein Verb gefolgt von einem Bindestrich und einem Substantiv (z. B. Get-Process, Stop-Process). Die Verben beschreiben die Aktion, die das Cmdlet ausführt, und die Substantive beschreiben das Objekt, auf das die Aktion angewendet wird.

Hier sind einige grundlegende Cmdlets, die ihr wahrscheinlich oft verwenden werdet:

  • Get-Command: Zeigt alle verfügbaren Cmdlets und Funktionen an.
  • Get-Help: Zeigt die Hilfe für ein bestimmtes Cmdlet oder eine Funktion an.
  • Set-Location: Wechselt das aktuelle Verzeichnis.
  • Get-Location: Gibt das aktuelle Verzeichnis aus.
  • Copy-Item: Kopiert einen Artikel von einem Ort zum anderen.
  • Remove-Item: Entfernt einen Artikel.

Für eine vollständige Liste der verfügbaren Cmdlets könnt ihr Get-Command in eurer PowerShell-Konsole ausführen.

Eure ersten Skripte

Cmdlets allein sind schon mächtig, aber ihre wahre Stärke zeigt sich, wenn sie in Skripten kombiniert werden. Skripte sind einfach Textdateien, die eine Reihe von Cmdlets enthalten, die in einer bestimmten Reihenfolge ausgeführt werden.

Ein einfaches PowerShell-Skript könnte so aussehen:

Get-Process
Get-Service

Dieses Skript führt zuerst das Cmdlet “Get-Process” aus, das alle laufenden Prozesse anzeigt, und danach das Cmdlet “Get-Service”, das alle laufenden Dienste anzeigt. Ihr könnt dieses Skript in eine Textdatei mit der Endung “.ps1” speichern und es dann in der PowerShell ausführen, um beide Befehle auf einmal auszuführen.

Ein einfaches Windows PowerShell Script
Ein einfaches Windows PowerShell Script geschrieben in Notepad
das Test-Script wird in der Windows PowerShell ausgeführt
das Test-Script wird in der Windows PowerShell ausgeführt. Ich habe es im C:\Temp Ordner gespeichert

Mehr als nur Befehle: Die Skriptsprache PowerShell

Die Skriptsprache PowerShell ist unglaublich mächtig und flexibel. Sie ist objektorientiert, was bedeutet, dass sie mit “Objekten” arbeitet – das sind Datenstrukturen, die sowohl Daten als auch Funktionen enthalten. Das macht sie zu einem hervorragenden Werkzeug für die Automatisierung komplexer Aufgaben.

Ein einfaches Beispiel für die Arbeit mit Objekten ist der folgende Befehl:

$prozesse = Get-Process

Hier haben wir das Ergebnis des Cmdlets “Get-Process” in einer Variablen namens “$prozesse” gespeichert. Jetzt könnt ihr diese Variable verwenden, um mit den gespeicherten Daten zu arbeiten. Ihr könnt beispielsweise alle Prozesse anzeigen, die mehr als 100 MB Arbeitsspeicher verbrauchen, indem ihr den folgenden Befehl eingebt:

$prozesse | Where-Object {$_.WS -gt 100MB}

In diesem Befehl verwenden wir die Pipeline (“|”), um die Ausgabe des vorherigen Befehls an den nächsten Befehl zu übergeben, und das Cmdlet “Where-Object”, um eine Bedingung festzulegen. Der Ausdruck “$_.WS -gt 100MB” ist die Bedingung, die besagt, dass der Arbeitsspeicherverbrauch (WS) größer sein muss (“-gt” steht für “greater than”, also “größer als”) als 100MB.

Letzte Aktualisierung am 30.09.2023 / Affiliate Links / Bilder von der Amazon Product Advertising API

Fehlerbehandlung

Wie in jeder Programmier- oder Skriptsprache kann es auch in PowerShell zu Fehlern kommen. Glücklicherweise bietet PowerShell ausgezeichnete Werkzeuge zur Fehlerbehandlung.

Ein einfacher Ansatz zur Fehlerbehandlung in PowerShell ist die Verwendung von “Try/Catch”-Blöcken. Ein “Try/Catch”-Block ermöglicht es euch, ein Stück Code auszuprobieren (“Try”), und wenn dabei ein Fehler auftritt, könnt ihr bestimmen, was dann passieren soll (“Catch”).

Ein einfaches Beispiel für einen “Try/Catch”-Block sieht so aus:

Try {
    Get-Process nichtExistierenderProzess -ErrorAction Stop
}
Catch {
    Write-Host "Der Prozess konnte nicht gefunden werden."
}

In diesem Beispiel versuchen wir, einen Prozess namens “nichtExistierenderProzess” abzurufen. Da dieser Prozess nicht existiert, wird ein Fehler ausgelöst. Da wir “-ErrorAction Stop” angegeben haben, wird der Fehler sofort gestoppt und der Code im “Catch”-Block ausgeführt. In diesem Fall wird die Nachricht “Der Prozess konnte nicht gefunden werden.” ausgegeben.

Microsoft bietet eine ausführliche Anleitung zur Fehlerbehandlung in PowerShell, die ihr hier findet: Fehlerbehandlung in PowerShell.

Mit Schleifen arbeiten

Schleifen sind ein grundlegender Bestandteil jeder Programmiersprache, und PowerShell bildet hier keine Ausnahme. Mit Schleifen könnt ihr eine bestimmte Aktion mehrmals wiederholen, was besonders nützlich ist, wenn ihr eine Aufgabe auf einer großen Anzahl von Objekten ausführen müsst.

Ein einfaches Beispiel für eine Schleife in PowerShell ist die “For”-Schleife. Hier ist ein Beispiel:

for ($i=0; $i -lt 10; $i++) {
    Write-Host $i
}

In diesem Beispiel wird die Variable “$i” zunächst auf 0 gesetzt. Dann wird eine Bedingung geprüft: Ist “$i” kleiner als 10? Wenn ja, wird der Codeblock innerhalb der geschweiften Klammern ausgeführt (in diesem Fall wird der Wert von “$i” ausgegeben) und “$i” wird um eins erhöht (“$i++”). Dieser Vorgang wird so lange wiederholt, bis “$i” nicht mehr kleiner als 10 ist.

Eigene Cmdlets erstellen

Schließlich könnt ihr mit PowerShell nicht nur vorgefertigte Cmdlets verwenden, sondern auch eure eigenen Cmdlets erstellen. Das ist besonders nützlich, wenn ihr eine bestimmte Aufgabe immer wieder ausführen müsst und kein vorhandenes Cmdlet diese Aufgabe erfüllt.

Um ein eigenes Cmdlet zu erstellen, müsst ihr eine Funktion definieren. Eine Funktion ist einfach ein benannter Codeblock, den ihr später aufrufen könnt. Hier ist ein einfaches Beispiel:

function MeinCmdlet {
    Write-Host "Hallo, Welt!"
}

In diesem Beispiel haben wir eine Funktion namens “MeinCmdlet” erstellt, die die Nachricht “Hallo, Welt!” ausgibt. Ihr könnt diese Funktion jetzt wie ein normales Cmdlet aufrufen, indem ihr “MeinCmdlet” in die PowerShell eingebt.

wir erstellen ein eigenes cmdlet
wir erstellen ein eigenes cmdlet. Dieses kann “Hallo Welt” ausgeben

Microsoft bietet eine detaillierte Anleitung zur Erstellung eigener Cmdlets, die ihr hier findet: Erstellen eigener Cmdlets.

Arbeiten mit Dateien und Verzeichnissen

PowerShell macht es einfach, mit Dateien und Verzeichnissen zu arbeiten. Ihr könnt Dateien und Verzeichnisse erstellen, löschen, verschieben und kopieren, und ihr könnt Dateien lesen und in sie schreiben. Hier sind einige Beispiele für Cmdlets, die ihr zum Arbeiten mit Dateien und Verzeichnissen verwenden könnt:

  • New-Item: Erstellt eine neue Datei oder ein neues Verzeichnis.
  • Remove-Item: Löscht eine Datei oder ein Verzeichnis.
  • Move-Item: Verschiebt eine Datei oder ein Verzeichnis.
  • Copy-Item: Kopiert eine Datei oder ein Verzeichnis.
  • Get-Content: Liest den Inhalt einer Datei.
  • Set-Content: Schreibt in eine Datei.

Zum Beispiel, um eine neue Datei zu erstellen, könnt ihr den folgenden Befehl verwenden:

New-Item -Path C:\temp\meineDatei.txt -ItemType File

Dieser Befehl erstellt eine neue Datei namens “meineDatei.txt” im Verzeichnis “C:\temp”. Wenn das Verzeichnis “C:\temp” noch nicht existiert, wird es ebenfalls erstellt. Ihr könnt den Pfad und den Namen der Datei natürlich nach euren Wünschen ändern.

Microsoft bietet eine detaillierte Anleitung zum Arbeiten mit Dateien und Verzeichnissen in PowerShell, die ihr hier findet: Arbeiten mit Dateien und Verzeichnissen.

PowerShell für Dummies*
  • Dittfurth, Andreas (Autor)

Letzte Aktualisierung am 30.09.2023 / Affiliate Links / Bilder von der Amazon Product Advertising API

Fazit

Die PowerShell ist ein unglaublich mächtiges Werkzeug, und obwohl sie auf den ersten Blick einschüchternd wirken mag, wird sie mit ein wenig Übung und Geduld schnell zu einem unverzichtbaren Bestandteil eurer IT-Werkzeugkiste. Viel Spaß beim Coden!

Beitrag teilen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Consent Management Platform von Real Cookie Banner