Lange Zeit konnte Microsoft keine wirkliche Alternative zu der von Linux und Unix Systemen bekannten Shell, wie der Bash, bieten. Dies hat Microsoft vor einigen Jahren erkannt und mit der Entwicklung einer komplett neuen Befehlszeilenumgebung begonnen. Die PowerShell ist in der Version 2.0 seit einiger Zeit verfügbar und lässt sich auf den meisten Betriebssystemen installieren.
Die Windows PowerShell ist eine flexible, objektorientierte Skriptsprache. Der Aufbau ähnelt der Linux/UNIX Shell und sie ist mit dem .Net Framework stark verbunden. Auch tauchen an vielen Stellen SQL-Statement ähnlichen Befehle auf. Funktionale bzw. prozedurale Programmierkonzepte sind natürlich ebenfalls implementiert.
Bei Windows 7 und Windows Server 2008R2 ist die PowerShell 2.0 bereits installiert. Bei Windows XP SP3, Windows Vista SP1 (Powershell 1.0), Windows Server 2003 mit SP2, Windows Server 2008 SP1 (Powershell 1.0) lässt Sie sich nachinstallieren. Die Installation kann über den in Firmennetzwerken ohnehin vorhandenen WSUS-Server (Windows Server Update Services) automatisch verteilt werden. Für einzelne PCs und Server kann die Installation auch über Windows Update erfolgen. Weiterhin steht die Windows PowerShell 2.0 auch als Download zur manuellen Installation zur Verfügung.
Bei der Windows PowerShell hat Microsoft ein strukturiertes und sprechendes Befehlsnamen- Schema eingeführt. Die meisten Befehle beginnen mit get, set, add, remove. An dieses Namensschema halten sich auch die meisten Anbieter für zusätzliche cmdlets. CmdLet oder auch Commandlet ist der für die eigentlichen Befehle. Microsoft hat mittlerweile cmdlets für viele seiner Produkte implementiert. Als wichtigste Produkte seien hier Exchange, SQL-Server und IIS erwähnt. Bei einigen Produkten ist die grafische Oberfläche meist nur eine „einfache“ Möglichkeit Windows PowerShell Befehle abzusetzen. Aus dem Grund der Abwärtskompatibilität wurden praktisch alle „DOS-Befehle“ als Alias implementiert. Sodass Befehle wie „dir“, „cd“ weiterhin verwendbar sind. Dieses einheitliche Namensschema erleichtert das Erlernen der Sprache enorm.
Beispiel:
Set-location c:\windows wechselt in das Verzeichnis im Dateisystem, genauso lässt sich aber auch in der Registry (set-location HKLM:software), oder im Active Directory (set-location „DC=contoso,DC=com“) navigieren.
Wichtigste Merkmale:
- Pipeline:
- Integrierte Scripting Umgebung:
- Module:
- Hintergrundaufträge:
- Remoteverwaltung:
- Grafische Oberfläche:
- Integrierte Hilfe/Dokumentation:
Die Pipeline ist bei Linux/UNIX ja ein „alter Hut“. Neu ist aber, das die Pipeline der Windows PowerShell ist objektbasiert. Der Programmieren muss sich nicht darum kümmern, welche Daten der erste Befehl an den 2. übergibt. Bei der PowerShell sind es immer Objekte.
Bei der PowerShell 2.0 kommt auch der ISE (Integrated Scripting Environment) mit. Hierbei handelt es sich um einen schlanken Skript Editor mit Features wie Syntax- Hervorhebung und Debugging.
Mittels Modulen ist es möglich neue Funktionalitäten in unabhängigen, eigenständigen Einheiten zu strukturieren und an andere Systeme zu verteilen.
Mittels Threads lassen sich auch mehrere parallele Aufgaben abarbeiten. Sehr schön ist auch die Möglichkeit diese Aufgaben remote auf einem anderen Rechner ausführen zu können.
Mit der Windows PowerShell ist es möglich Befehle nicht nur lokal auszuführen, sondern auch auf hunderten entfernten Rechnern. Dies vereinfacht die Administration immens. Sehr praktisch ist es auch, dass die lokale PowerShell Session remote Befehle ausführen kann, die nur auf dem Remotesystem mittels Snap-In installiert sind.
Da .Net die Basis der PowerShell ist, können durch das Ansprechen der Windows Forms auch grafische Oberflächen entwickelt werden.
Zu jedem cmdlet sind sämtliche Optionen, mit zahlreichen Beispielen, dokumentiert. Dieses kennt man auch von den Linux Man Pages. Auch hier ist der Aufbau einheitlich strukturiert. Der Aufruf erfolgt mit “get-help”
Gerade die Objektorientierung der PowerShell bringt massive Vorteile gegenüber der klassischen zeichenkettenbasierten Linux Shell. Der Einsatzzweck der Powershell ist sehr vielfältig. Angefangen vom Datenaustausch zwischen ERP –System und dem Active Dirctory, über Migrationen von Servern und Diensten, Verwalten von Objekten im Active Directory, managen von virtuellen Infrastrukturen, Auswertungen von Leistungsdaten, dem Erstellen von Reporten, oder dem Erstellen von grafischen Oberflächen. Die Funktionalität der Windows PowerShell muss ich nicht hinter klassischen Programmiersprachen wie C++ , C# verstecken. Im Gegenteil, die Powershell bietet durch die zusätzlichen Funktionen deutlich mehr Komfort beim Erstellen von Skripten/Progammen ohne die Komplexität zu erhöhen.
