Jeder Administrator möchte wiederkehrende Aufgaben automatisieren. Während in der Unix- und Linux-Welt schon lange Zeit mächtige Skriptsprachen zur Verfügung stehen, bedeutete Batch-Programmierung unter Windows für lange Zeit das Erstellen von .bat oder .cmd Dateien.
Microsofts Versuch, diese durch den Windows Script Host (wsh) zu ersetzen war von nur geringem Erfolg gekrönt.
Dieses Manko zu beheben wurde die Powershell als komplett neues Werkzeug entwickelt. Ursprünglich sollte sie standardmäßig bereits in Windows Vista installiert sein. Das hat leider nicht geklappt.
Zwar wurde die Powershell mit Windows Exchange Server 2007 ausgeliefert und konnte als separates Paket auch für Vista heruntergeladen werden. Dies kam nur einem kleinen Kreis von Benutzern zu Gute.
Ab dann wurde sie Bestandteil eines jeden MS-Betriebssystems und trat zu einem regelrechtem Siegeszug an.
Windows 7 und Server 2008 bekamen die Version Powershell 2.0, seit Windows 8 und Server 2012 gibt es die Version Powershell 3.0. Letztere kann auch in die beiden Vorversionen Windows 7 und Server 2008 als Teil des Windows Management Frameworks 3.0 nachinstalliert werden. Vista, XP, Server 2003 und noch frühere Versionen bleiben allerdings außen vor.
Powershell ist ein sehr mächtiges Werkzeug mit einer steilen Lernkurve. Wer bereits Erfahrung mit der Erstellung von Skripten in der Unix-Welt hat oder andere Skriptsprachen wie Javascript beherrscht, kann innerhalb kürzester Zeit beindruckende Ergebnisse erzielen.
Die aus der Unix-Welt bekannte Verkettung von Befehlen wird mit Filtern erweitert und streng objektorientiert umgesetzt. Von Haus aus werden unzählige (mehr als 400) Kommandos (sogenannte cmdlets) mitgeliefert. Es gibt eine sehr aktive Community, die weitere Befehle in Form von einfach zu installierenden Libraries entwickelt und zum Download anbietet.
Die PowerShell erlaubt Zugriff auf WMI-Klassen, COM-Objekte sowie auf das gesamte dotNET-Framework. Somit ist beinahe jeder Aspekt von Windows steuerbar, egal ob es sich um das Starten, Stoppen und Überwachen von Prozessen handelt oder ob aus einem Skript auf die Funktionalität des Windows-Explorers zum Zippen von Dateien zugegriffen werden soll.
Im Gegensatz zu bat-Dateien sind Powershell-Skripte sehr einfach zu lesen. Die Syntax bietet keine Überraschungen, die Namen von Cmdlets sind nach dem Schema Verb-Objekt aufgebaut und tun in der Regel, was man dem Namen nach erwartet: Get-Process z.B. liefert alle laufenden Prozesse zurück.
Powershell Skripte können mit jedem Texteditor geschrieben und über die Kommandozeile ausgeführt werden. Es gibt eine integrierte Entwicklungsumgebung (Powershell ISE), die zusätzlich das debuggen ermöglicht. Zahlreiche Drittfirmen bieten eigene Entwicklungsumgebungen an.
Mit der Powershell hat Microsoft in Sachen Scripting zur Unix-Welt aufgeschlossen, wenn nicht sogar an dieser vorbeigezogen.
Schön ist, dass die gesamte Windows-Funktionalität aus den Scripts angesprochen werden kann. Leider ist deswegen an ein Portieren auf andere Betriebssysteme nicht zu denken, weswegen es eine Windows-Only-Lösung bleiben wird.