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)
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.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
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:
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