Auf die Dauer hilft nur Power bzw. PowerShell!

 PowerShell ist ein geniale Erfindung von Microsoft. Damit kann man Windows-Systeme hervorragend über die Kommandozeile verwalten.

Windows PowerShell – eine kurze Einführung

Microsofts bisherige Versuche mit Kommandozeilen-Shells waren eher unerfreulich. Die alte COMMAND.COM mag für die ersten Versionen von MS DOS adäquat gewesen sein, doch den wachsenden Betriebssystemfunktionen hielt sie nicht stand. Die mit Windows NT eingeführte CMD.EXE Shell stellte da schon mehr Möglichkeiten bereit. Im Vergleich mit gängigen Unix-Shells wie der Bash zieht Microsofts Kommandozeile aber deutlich den Kürzeren.

Das hat Microsoft mit der der Windows PowerShell (vormals Monad Shell, MSH) komplett geändert. Mit der PowerShell gibt der Software-Konzern Administratoren auch unter Windows eine Shell an die Hand, mit der sie ganz nach Herzenslust Scripts schreiben und ihr System kontrollieren können. Dabei verfolgt die Windows PowerShell ein von Grund auf anderes Konzept, als das bei textorientierten Shells wie der Bash oder auch CMD.EXE der Fall ist.

Ziele beim Entwurf von Windows PowerShell

Windows PowerShell ist eine neue Windows-Befehlszeilenshell, die speziell für Systemadministratoren entwickelt wurde. Die Shell umfasst eine interaktive Eingabeaufforderung und eine Skriptumgebung, die einzeln oder zusammen verwendet werden können. Im Gegensatz zu den meisten Shells, die Text akzeptieren und zurückgeben, basiert Windows PowerShell auf einem Objektmodell, welches durch das .NET Framework zur Verfügung gestellt wird. Diese grundlegende Änderung in der Umgebung ermöglicht völlig neue Tools und Verfahren für die Verwaltung und Konfiguration von Windows.

Mit Windows PowerShell wird das Konzept von Cmdlets eingeführt (ausgesprochen Command-let). Ein Cmdlet ist ein einfaches Befehlszeilentool, das in der Shell integriert ist und eine einzelne Funktion ausführt. Obwohl Sie Cmdlets einzeln verwenden können, wird deren Leistungsfähigkeit besonders sichtbar, wenn Sie diese einfachen Tools kombiniert einsetzen, um komplexe Aufgaben auszuführen. Windows PowerShell enthält mehrere Hundert Basis-Cmdlets, und Sie können zusätzlich eigene Cmdlets schreiben und an andere Benutzer weitergeben. Wie viele andere Shells bietet Windows PowerShell Zugriff auf das Dateisystem des Computers. Darüber hinaus haben Sie über Windows PowerShell-Anbieter genauso leicht Zugriff auf andere Datenspeicher, z. B. auf die Registrierung und auf Speicher für digitale Signaturzertifikate.

Von Texten, Parsern und Objekten in PowerShell

Die PowerShell arbeitet vollständig objektorientiert. Anders als bei üblichen Shells handelt es sich bei den Ergebnissen jedes Kommandos der PowerShell also nicht um einen Text, sondern um ein Objekt. Ähnlich wie bei bisher bekannten Shells gibt es allerdings eine Pipeline, in der die Resultate der einzelnen Befehle weitergereicht und weiterverarbeitet werden können. Nur sind die Eingabewerte sowie die Resultate eben Objekte und keine Texte.

Die Objekte der PowerShell unterscheiden sich nicht von denen eines C++- oder C#-Programms. Sie können sich ein Objekt als Dateneinheit mit Eigenschaften (Merkmalen) und Methoden vorstellen. Methoden sind Aktionen, die für das Objekt ausgeführt werden können.

Wenn Sie beispielsweise einen Dienst oder Service in Windows PowerShell abrufen, verwenden Sie eigentlich ein Objekt, das diesen Dienst darstellt. Wenn Sie Informationen über einen Dienst anzeigen, zeigen Sie die Eigenschaften des zugehörigen Dienstobjekts an. Und wenn Sie einen Dienst starten, d. h. die Status-Eigenschaft des Dienstes auf „started“ festlegen, verwenden Sie eine Methode des Dienstobjekts. Mit zunehmender Erfahrung werden Sie die Vorteile der Objektverarbeitung besser verstehen und bewusst mit den Objekten arbeiten.

Das objektorientierte Konzept der PowerShell macht das von Unix-Shells bekannte dauernde Parsen (Analysieren / Auswerten) von textbasierten Informationen mit all seinen Fehlermöglichkeiten damit überflüssig.

Eine neue Skriptsprache für PowerShell

Für Windows PowerShell wird keine der bestehenden Sprachen, sondern eine eigene Sprache verwendet. Dafür gibt es folgende Gründe:

  • Für Windows PowerShell wurde eine Sprache für die Verwaltung von .NET-Objekten benötigt.
  • Die Sprache musste komplexe Aufgaben unterstützen, ohne einfache Aufgaben unnötig kompliziert zu machen.
  • Die Sprache musste den Konventionen anderer bei der .NET- Programmierung verwendeter Sprachen wie C# entsprechen.

Jede Sprache hat nun seine eigenen Befehle. Bei Windows PowerShell hat man darauf geachtet, dass diese Befehle alle einer gewissen Logik beim Aufbau und der Benennung folgen. Ein Cmdlet ist ein spezialisierter Befehl, der Objekte in Windows PowerShell bearbeitet. Sie können Cmdlets an ihrem Namen erkennen: ein Verb und ein Substantiv, immer in Einzahl, getrennt durch einen Bindestrich (-): Get-Help, Get-Process und Start-Service. In Windows PowerShell sind die meisten Cmdlets sehr einfach und sind für die Verwendung zusammen mit anderen Cmdlets vorgesehen.

Windows-Befehle und-Dienstprogramme mit der PowerShell

Gewisse Befehle hat man sich im Laufe der Zeit angeeignet. Eine neue Sprache, die dies nicht berücksichtigte, würde schnell störend wirken und so auf keine große Akzeptanz stoßen. Sie können in Windows PowerShell daher auch herkömmliche Windows-Befehlszeilenprogramme ausführen und Windows- Programme starten, die über eine grafische Benutzeroberfläche verfügen, beispielsweise Editor (Notepad) und Rechner (Calculator). Außerdem können Sie wie in CMD.EXE Textausgaben von Programmen erfassen und diese Texte in der Shell verwenden. Auch wenn Befehle wie dir, ls oder cd nicht der offiziellen Syntax von Windows PowerShell folgen, so funktionieren sie doch auch weiterhin und können getrost weiterverwendet werden.

Die interaktive PowerShell-Umgebung

Wie andere Shells unterstützt Windows PowerShell eine vollständig interaktive Umgebung. Wenn Sie einen Befehl an der Eingabeaufforderung eingeben, wird der Befehl verarbeitet, und die Ausgabe wird im Shellfenster angezeigt. Sie können die Ausgabe eines Befehls an eine Datei oder einen weiteren PowerShell-Befehl weitergeben. Wie andere Shells unterstützt Windows PowerShell eine vollständig interaktive Umgebung.

PowerShell-Skriptunterstützung

Wenn Sie immer wieder bestimmte Befehle oder Befehlsfolgen ausführen, empfiehlt es sich, die Befehle nicht einzeln an der Eingabeaufforderung einzugeben, sondern in einer Datei zu speichern und diese Befehlsdatei auszuführen. Eine solche Datei mit Befehlen wird als Skript bezeichnet. Neben der interaktiven Oberfläche bietet Windows PowerShell auch eine vollständige Skriptunterstützung. Sie können ein Skript ausführen, indem Sie den Namen des Skripts an der Eingabeaufforderung eingeben. Die Dateierweiterung für Windows PowerShell-Skripts lautet .ps1, die Angabe der Dateinamenerweiterung ist aber optional.

Obwohl Skripts sehr nützlich sind, können Sie gleichzeitig auch zur Verbreitung von bösartigem Code verwendet werden. Daher können Sie über die Sicherheitsrichtlinie in Windows PowerShell (auch als Ausführungsrichtlinie bezeichnet) festlegen, welche Skripts ausgeführt werden dürfen und ob diese über eine digitale Signatur verfügen müssen. Um unnötige Risiken zu vermeiden, ist es in keiner der Ausführungsrichtlinien in Windows PowerShell zulässig, ein Skript durch Doppelklicken auf dessen Symbol auszuführen, wie Sie es z.B. mit den guten alten .bat, .cmd oder .vbs Dateien können.

Windows PowerShell-Schulungen

Wie Sie PowerShell optimal einsetzen und alle Möglichkeiten der PowerShell nutzen, erfahren Sie in den PowerShell Schulungen der GFU:

Machen Sie sich u.a. mit Techniken wie der Erstellung von Filtern und dem Arbeiten mit Pipes sowie den objektorientierten Features von PowerShell vertraut. Trainieren Sie unter der Anleitung erfahrener PowerShell-Experten zudem die Entwicklung komplexer PowerShell-Skripte, um Anwendungen von Windows automatisiert zu steuern und Verwaltungsaufgaben automatisch ablaufen zu lassen.

Schnuppern Sie mit dem Seminar PowerShell Grundlagen in die PowerShell-Welt hinein oder starten Sie direkt mit dem Gesamtpaket PowerShell Komplett

Für PowerShell-Spezialisten

Für Umsteiger von VBS/WSH auf PowerShell

Praxistipps zu PowerShell: PowerShell-Tip-of-the-Day!

Täglich finden Sie auf PowerShell.com Tricks und Kniffe, um Ihre Arbeit mit PowerShell zu optimieren: http://powershell.com/cs/blogs/tips/. Ein Blick lohnt sich auf jeden Fall!

Viel Spaß mit der PowerShell!