Windows PowerShell-Sprachspezifikation 3.0

Die Windows PowerShell-Sprachspezifikation 3.0 wurde im Dezember 2012 veröffentlicht und basiert auf PowerShell 3.0. Das Spezifikationsdokument ist im Microsoft Download Center als Microsoft Word-Dokument verfügbar unter: https://www.microsoft.com/download/details.aspx?id=36389.

Dieses Word-Dokument wurde für die Präsentation hier (auf docs.microsoft.com) konvertiert. Dabei wurden einige redaktionelle Änderungen zur Anpassung an die Formatierung der Dokumentationsplattform vorgenommen. Kleinere Rechtschreibfehler wurden korrigiert.

Wichtig

Der Inhalt dieser Dokumentation stellt möglicherweise nicht den aktuellen Stand von PowerShell in der derzeitigen Version dar. Eine Aktualisierung auf die aktuelle Version ist nicht geplant. Diese Dokumentation soll als Verlaufsreferenz bestehen bleiben.

1. Einführung

PowerShell ist eine speziell für Systemadministratoren entwickelte Befehlszeilenshell und Skriptsprache.

Die meisten Shells führen in einem neuen Prozess einen Befehl oder ein Hilfsprogramm aus und geben dem Benutzer Ergebnisse in Form von Text zurück. Diese Shells verfügen auch über integrierte Befehle, die im Shellprozess ausgeführt werden. Wegen der geringen Anzahl integrierter Befehle wurden zur Ergänzung viele Hilfsprogramme erstellt. PowerShell ist da ganz anders. Die Shell verarbeitet keinen Text, sondern Objekte. Zudem enthält PowerShell eine Vielzahl integrierter Befehle, die jeweils über eine konsistente Oberfläche verfügen und zusammen mit benutzerdefinierten Befehlen verwendet werden können.

Ein Objekt ist eine Datenentität mit Eigenschaften (Merkmalen) und Methoden (Aktionen, die für das Objekt ausgeführt werden können). Alle Objekte desselben Typs verfügen über die gleichen grundlegenden Eigenschaften und Methoden. Doch jede Instanz eines Objekts kann unterschiedliche Eigenschaftswerte aufweisen.

Ein großer Vorteil der Verwendung von Objekten besteht darin, dass Befehle deutlich einfacher über Pipelineverbindungen gesendet werden können. Dabei wird die Ausgabe eines Befehls als Eingabe eines anderen Befehls verwendet. (In einer herkömmlichen Befehlszeilenumgebung muss die Textausgabe eines Befehls vor der Weitergabe bearbeitet werden, um die Formatanforderungen der Eingabe für den anderen Befehl zu erfüllen.)

PowerShell bietet eine sehr umfangreiche Skriptsprache, die Konstrukte für Schleifen, Bedingungen, Flusssteuerung und Variablenzuweisung unterstützt. Die in PowerShell verwendeten Syntaxfeatures und Schlüsselwörter ähneln denen der Programmiersprache C# (§ C.).

In PowerShell gibt es vier Arten von Befehlen: Skripts, Funktionen und Methoden, Cmdlets und native Befehle.

  • Eine Datei mit Befehlen wird als Skript bezeichnet. Standardmäßig verfügt ein Skript über die Dateinamenerweiterung „.ps1“. Ein Skript stellt die oberste Ebene eines PowerShell-Programms dar und kann wiederum andere Befehle aufrufen.

  • PowerShell unterstützt die modulare Programmierung mithilfe von benannten Prozeduren. Eine in PowerShell geschriebene Prozedur wird Funktion genannt, eine von der Ausführungsumgebung zur Verfügung gestellte externe Prozedur (die in der Regel in einer anderen Sprache geschrieben wird) wird als Methode bezeichnet.

  • Ein Cmdlet (kurz für „Commandlet“) ist ein einfaches Befehlszeilentool mit nur einer Aufgabe. Cmdlets können zwar eigenständig verwendet werden, doch ihr volles Potenzial entfalten sie erst, wenn sie zur Ausführung komplexer Aufgaben kombiniert werden.

  • Ein nativer Befehl ist ein Befehl, der in die Hostumgebung integriert ist.

Bei jeder neuen Ausführung der PowerShell-Laufzeitumgebung wird eine Sitzung gestartet. Im Kontext dieser Sitzung werden dann die Befehle ausgeführt.

In dieser Spezifikation werden die PowerShell-Sprache, die integrierten Cmdlets und die Verwendung von Objekten über Pipelines beschrieben.

Anders als die meisten Shells, in denen Text akzeptiert und zurückgegeben wird, setzt Windows PowerShell auf der .NET Framework Common Language Runtime (CLR) und auf .NET Framework auf und akzeptiert .NET Framework-Objekte bzw. gibt .NET Framework-Objekte zurück.