Mobile-Menu

Definition Was ist PowerShell?

Aktualisiert am 09.12.2025 Von Dipl.-Ing. (FH) Stefan Luber 6 min Lesedauer

PowerShell ist ein plattformübergreifend nutzbares Framework von Microsoft mit Befehlszeilenshell und Skriptsprache, mit der sich Aufgaben automatisieren und Systeme verwalten lassen. Die objektorientiert arbeitende PowerShell ist wesentlich mächtiger als die Windows-Eingabeaufforderung und bietet einen deutlich größeren und tiefer in das Betriebssystem integrierten Funktionsumfang.

Mit der PowerShell lassen sich kommandozeilen- oder skriptbasiert Aufgaben automatisieren und Systeme oder Konfigurationen verwalten.(Bild:  ChatGPT / KI-generiert)
Mit der PowerShell lassen sich kommandozeilen- oder skriptbasiert Aufgaben automatisieren und Systeme oder Konfigurationen verwalten.
(Bild: ChatGPT / KI-generiert)

PowerShell ist der Name eines von Microsoft entwickelten Frameworks mit Befehlszeilen-Shell und Skriptsprache. Das Framework wurde im Jahr 2006 in der Version 1.0 als Windows PowerShell erstmals für Rechner mit Windows-Betriebssystem als kostenloser Download unter proprietärer Lizenz veröffentlicht.

Mit den nachfolgenden Versionen wurde die PowerShell fester Bestandteil der Windows- und Windows-Server-Betriebssysteme. Die Version 5.1 der Windows PowerShell war die letzte Version, die ausschließlich für Windows-Rechner nutzbar war. Seit der Version 6.0 aus dem Jahr 2016 heißt das Framework nicht mehr Windows PowerShell, sondern nur noch PowerShell und ist plattformübergreifend als Open-Source-Projekt unter MIT-Lizenz auch für andere Betriebssysteme wie Linux oder macOS nutzbar. Die aktuelle Version ist PowerShell 7.

Die PowerShell ist aufgrund ihres plattformübergreifenden Charakters mittlerweile zu einem universell einsetzbaren Werkzeug für Administratoren geworden. Mithilfe der Befehlszeilenshell und der Skriptsprache lassen sich Aufgaben automatisieren und Systeme oder Konfigurationen verwalten. Die PowerShell arbeitet objektorientiert und wird interaktiv per Tastatur und Texteingaben gesteuert. Es können aber auch komplexe Skriptprogramme mit der eigens dafür entwickelten Skriptsprache geschrieben und ausgeführt werden. PowerShell bietet einen mächtigen, tief integrierten Funktionsumfang, der mit vielen systeminternen Funktionen eines Computers interagieren kann.

Wichtige Merkmale der PowerShell sind:

  • Kommandozeilenoberfläche zur Interaktion mit dem Computer und zur Automatisierung von Aufgaben
  • umfangreiche Befehlssammlung (Cmdlets)
  • Erweiterung des Befehlssatzes mit eigenen Befehlen möglich
  • Zugang zu sämtlichen Systemobjekten des .NET Frameworks, der COM-Bibliotheken und Windows Management Instrumentation (WMI)
  • objektorientierte Arbeitsweise
  • Pipeline-Prinzip zur Verkettung von Befehlen
  • eigene Skriptsprache mit umfangreichen Logik- und Steuerfunktionen für das Erstellen komplexer Skripte
  • Scripting-Umgebung mit Funktionen für das Debugging und die Verfolgung des Skriptablaufs
  • in die Konsole integriertes Hilfesystem
  • fester Bestandteil der Windows- und Windows-Server-Betriebssysteme
  • plattformübergreifend auch für Rechner mit Linux oder macOS einsetzbar

Kurze Abgrenzung zur Windows-Eingabeaufforderung

Die PowerShell kann als eine Weiterentwicklung und als Nachfolger der Windows-Eingabeaufforderung (cmd.exe) verstanden werden. Neben der PowerShell ist aber auch die Eingabeaufforderung nach wie vor fester Bestandteil des Windows-Betriebssystems. Fast alle Befehle der Eingabeaufforderung können mit der PowerShell ausgeführt werden. Die PowerShell ist aber wesentlich mächtiger als die Windows-Eingabeaufforderung und bietet deutlich mehr Möglichkeiten. Die folgende Tabelle stellt die wichtigsten Merkmale kurz gegenüber:

Merkmal Windows-Eingabeaufforderung (cmd.exe) PowerShell
Grundtyp klassische Befehlszeile moderne Befehlsshell und Skriptsprache
unterstützte Plattform nur Windows Windows, Linux und macOS
Befehlssyntax einfach komplex
Scripting-Fähigkeiten eingeschränkt umfangreich
Architektur textbasiert objektbasiert
Pipeline-Konzept Übergabe von Text Übergabe von Objekten mit Eigenschaften
Automatisierungsfähigkeiten begrenzt umfangreich und leistungsfähig
Remote-Ausführung keine native Unterstützung integriert
Flexibilität und Erweiterbarkeit begrenzt hochgradig erweiterbar mit Modulen, Bibliotheken sowie benutzerdefinierten Funktionen und Befehlen
Zielgruppe Administratoren und Anwender IT-Profis und Systemadministratoren
Weiterentwicklung praktisch eingestellt kontinuierliche Weiterentwicklung

Prinzipielle Funktionsweise und Funktionskomponenten der PowerShell

Grundsätzlich können Befehle und Skripte lokal oder über ein Netzwerk hinweg auf fremden Rechnern ausgeführt werden. Dadurch eignet sich die Shell bestens für Remote-Administrationsaufgaben in einem Rechnernetz. Die Shell verbindet die objektorientierte Programmierung mit den von Unix-Shells bekannten Pipe- und Filterfunktionen. Anwender der Shell können sowohl einfache Kommandozeilenbefehle ausführen und miteinander verknüpfen als auch komplexe Skripte programmieren.

Das PowerShell Framework besteht aus verschiedenen Funktionskomponenten. Im Folgenden ein kurzer Überblick über die wichtigsten Funktionskomponenten:

PowerShell Engine:
Die PowerShell Engine ist der Kommandozeileninterpreter. Er verarbeitet die Eingaben und bildet quasi das Herz der PowerShell.

PowerShell Host
Beim PowerShell Host handelt es sich um die Benutzerschnittstelle zur PowerShell Engine. Sie wird bei Windows-Rechnern in Form der powershell.exe und der powershell_ise.exe bereitgestellt. Windows PowerShell ISE (Integrated Scripting Environment) stellt die Scripting-Umgebung mit Skripteditor und Debugger der PowerShell dar.

Cmdlets (Commandlets)
Die Cmdlets sind die Befehle der PowerShell-Umgebung. Sie sind aus einem Verb und einem Substantiv zusammengesetzt, zum Beispiel Get-Help, Stop-Process, Select-Object, Move-Item oder Copy-Item oder Sort-Object. Die Anzahl vorinstallierter Cmdlets ist mit jeder PowerShell-Version gestiegen. Das Cmdlet Get-Command gibt eine Liste der Cmdlets aus. Im Command Line Interface werden unvollständig eingegebene Kommandos wie "Get-It" durch Drücken der Tabulator-Taste vervollständigt (in diesem Fall zu Get-Item). Dank der strikten und exakt definierten Syntax und der sauberen Namenskonventionen der Cmdlets sind Skripte und Befehle relativ einfach lesbar und gut strukturiert.

Für Cmdlets lassen sich Aliase hinterlegen. Das stellt die Kompatibilität zum Beispiel zur Windows-Eingabeaufforderung oder zu alten Skripten sicher. Standardmäßig sind zahlreiche Cmdlets bereits mit Aliasen belegt. So kann für das Cmdlet Set-Location zum Beispiel der Befehl cd oder chdir, für das Cmdlet Get-Process der Kurzbefehl gps oder ps oder für Get-ChildItem dir verwendet werden.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Netzwerktechnik, IP-Kommunikation und UCC

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Die Ausgaben der Cmdlets erfolgen in Form von Objekten und können über eine Pipe von anderen Cmdlets entgegengenommen und weiterverarbeitet werden. Hierfür ist es erforderlich, die beiden Cmdlets über den Pipe-Operator (das Zeichen "|") miteinander zu verbinden. Beispielsweise ist es mit Pipelining möglich, Dateien eines Verzeichnisses abhängig von ihrer Größe sortiert auszugeben. Die Kommandozeile in der Shell muss hierfür folgendermaßen aussehen:

> Get-ChildItem -Recurse | Sort-Object Length -Descending | Select-Object Fullname, Length -First 3

In dieser Befehlszeile sind die Cmdlets für das Auslesen des Verzeichnisses (Get-ChildItem), das Sortieren des Ergebnisses (Sort-Object) und das Auswählen der ersten drei Dateinamen mit Größenangabe (Select-Object) per Pipe miteinander verbunden. Da die Ausgabe der einzelnen Befehle jeweils objektorientiert und nicht als reiner Daten-String erfolgt, ist die jeweils nachfolgende Verarbeitung durch das nächste Kommando sehr einfach zu realisieren. Im Vergleich zu rein textbasiert arbeitenden Shells entfällt der zusätzliche Aufwand für das Parsen und Manipulieren der Textausgaben.

PowerShell Scripting Language (PSL)
Die PowerShell Scripting Language (PSL) ist die eigens für die PowerShell entwickelte Skriptsprache. Sie basiert auf dem IEEE-1003.2-POSIX-Shell-Standard. Ihre Syntax orientiert sich an der Programmiersprache C#. Für die Erstellung von Skripten ist ein umfassender Satz von Kontroll- und Logikstrukturen wie Schleifen oder IF-Abfragen, regulären Ausdrücken, Befehlen zur Zeichenverarbeitung oder von arithmetischen Funktionen vorhanden. Skripte bestehen aus den Cmdlets und zugehörigen Logikfunktionen und -ausdrücken. Aufgrund der objektorientierten Arbeitsweise der PowerShell stehen beispielsweise alle COM-Objekte und das gesamte .NET-Framework zur Verfügung. Auch der Zugriff auf Windows Management Instrumentation (WMI), mit der sich umfassende Systeminformationen abfragen lassen, ist möglich.

Typische Anwendungsbereiche der PowerShell

Beispiele für typische Anwendungsbereiche der PowerShell sind:

  • Automatisierung administrativer Aufgaben, zum Beispiel von Systemaktualisierungen oder Backups
  • Konfigurieren von Systemeinstellungen
  • Verwalten von Systemkonfigurationen
  • Verwalten von Diensten, Prozessen und Dateisystemen
  • Steuern von Netzwerkkonfigurationen und Netzwerkfunktionen
  • Anlegen von Benutzern
  • Anwenden von Registrierungsänderungen auf mehreren Systemen
  • Fernwartung von Rechnern
  • Arbeiten mit Cloud Services und Bereitstellung von Ressourcen, Automatisierung von Workflows oder Überwachung von Cloud-Infrastrukturen
  • Durchsuchung von Ereignisprotokollen für Fehlerdiagnosen

Kurze Einführung in die Nutzung der PowerShell und ein paar einfache Beispielbefehle

Zum besseren Verständnis der Funktionsweise und der Nutzungsmöglichkeiten der PowerShell, werden im Folgenden beispielhaft einige einfache Befehle vorgestellt.

Starten lässt sich die PowerShell durch Drücken der Tastenkombination Windows + R und die anschließende Eingabe des Befehls "powershell". Alternativ kann im Suchfenster oder nach Betätigen der Windows-Taste der Befehl powershell eingeben werden. Das Suchergebnis zeigt "Windows PowerShell". Die Shell lässt sich anschließend als Anwender oder als Administrator öffnen. Es erscheint ein Kommandozeilenfenster zur Eingabe von Befehlen. Geschlossen wird es mit dem Befehl "exit".

Die Scripting-Umgebung lässt sich über die Tastenkombination Windows + R und die anschließende Eingabe des Befehls powershell_ise starten, alternativ natürlich auch über das Windows-Suchfenster.

Beispielbefehle für die PowerShell:

  • > Get-Help Get-ChildItem
    Zeigt die Hilfe zum Befehl Get-ChildItem an
  • > $PSVersionTable
    Gibt Versionsinformationen zur PowerShell aus
    > Write-Host "Hallo das ist eine Testausgabe"
    Gibt den Text "Hallo das ist eine Testausgabe" aus
  • > Get-ChildItem C:\Windows
    Listet den Inhalt des Verzeichnisses C:\Windows
  • > Get-ChildItem -Hidden
    Listet alle versteckten Dateien auf
  • > Set-Location -Path C:\Windows
    Setzt das aktuelle Verzeichnis der PowerShell auf C:\Windows
  • > Get-Process -Name "firefox"
    Listet die Prozesse mit dem Namen "firefox"
  • > Get-Process | where { $_.WS -gt 100MB }
    Gibt alle Prozesse aus, die mehr als 100 MB Hauptspeicher verwenden
  • > Get-Service | Where-Object { $_.Status -eq 'Running' }
    Listet alle Dienste mit dem Status running auf
  • > Get-Clipboard
    Gibt den Text der Zwischenablage aus
  • > Get-Clipboard | measure -Character -Line
    Gibt die Anzahl der Zeilen und Zeichen der Zwischenablage an
  • > 65*7
    Zeigt das Ergebnis der Berechnung 65*7 an
  • > Get-History
    Zeigt die Befehlschronik an
  • > Get-WmiObject Win32_Processor
    Zeigt Informationen über die CPU an
  • > Get-WmiObject -Class Win32_ComputerSystem
    Zeigt Marke und Modell des Computers an
  • > Restart-Service DHCP
    Startet den DHCP-Service neu
  • > Get-NetIPAddress | Select-Object IPAddress
    Gibt eine Liste aller dem Rechner zugewiesenen IP-Adressen aus

(ID:44959925)