CTP-Version der PowerShell: Nummer 3 kommt!

9. November 2011

Auf der BUILD-Konferenz, die im September in Anaheim in Kalifornien stattfand, hat Microsoft nicht nur das kommende Betriebssystem Windows 8 vorgestellt, sondern auch die nächste Generation der Automatisierungsplattform vorgestellt, die mit diesem System immer wichtiger wird: Windows PowerShell 3.0. Dmitry Sotnikov, als „Director of Cloud Solutions“ bei Quest Software tätig und ausgewiesener PowerShell-Experte ,hat für uns einen Blick auf die Neuerung geworfen, die dieses Release den IT-Professionals bringt.

Bild 1. Für englische Windows-Systemen steht die Software bereits zum Test bereit: Die CTP-Version der PowerShell 3.

Es gibt unter IT-Profis ein Sprichwort, das besagt: „Windows-Plattformen werden in der Version 3 erwachsen“. Die PowerShell wurde in der letzten Jahreshälfte 2006 auf den Markt gebracht. Mit dieser Software stellte Microsoft den Anwendern und Administratoren erstmals eine moderne Scripting-Sprache auf der Kommandozeile zur Verfügung. Diese Sprache ist dabei weitaus mächtiger als bisherige Script-Sprachen, wurde für die zu verwaltenden Windows-Systeme vereinheitlicht und ist dabei doch weit gehend kompatibel zu bisherigen Techniken wie WMI (Windows Management Instrumentation), COM (Component Object Model) und .NET.

Mit der Bereitstellung von Windows 7 brachten die Microsoft-Entwickler auch die Version 2.0 der PowerShell auf den Markt. Diese Version stellt den Anwendern so wichtige Funktionalitäten wie Remote-Arbeiten, Hintergrund-Jobs, Scripts mit „Reach-Funktionalität“ für kompilierte Cmdlets, eine Umgebung mit grundlegenden Funktionen für das Debugging und Bearbeiten von PowerShell-Scripts sowie die Möglichkeit, das Verhalten der PowerShell mittels Proxy-Funktionen neu zu definieren.

Neue Generation: PowerShell 3 für aktuelle Windows-Versionen

Die Version 3 der PowerShell soll dann im Jahr 2012 mit Windows 8 und dem Windows Server 8 zur Verfügung stehen. Sie wird aber mindestens auch für direkten Vorgänger des Betriebssystems, also für Windows 7 und den Windows Server 2008 R2 zur Verfügung stehen. Tatsächlich steht diese Version schon als sogenannte CTP-Version (Community Technology Preview) zum direkten Download bereit.

Bild 2. Auch die Entwicklungsumgebung ISE wurde mit der PowerShell 3.0 deutlich erweitert und verbessert.
Bild 3. Erweiterte und verbesserte Hilfeoptionen erleichtern auch Anfängern deutlich den Einstieg in die Arbeit mit der PowerShell.

Test sind möglich: Windows 7 und Server 2008 werden unterstützt

Wer diese Version ausprobieren will, muss dazu unbedingt ein Windows 7 oder Windows Server 2008 R2 mit installiertem Service Pack 1 verwenden. Ein weitere Einschränkung betrifft die Sprache des Betriebssystems: Die CTP-Version kann nur auf einem englischen Windows oder einem Windows-System mit vorhandener Sprachunterstützung für „Englisch“ installiert werden.

Natürlich haben die Microsoft-Entwickler noch eine Menge Zeit, um weitere Funktionalitäten hinzuzufügen und die bereits vorhandenen Eigenschaften der neuen PowerShell zu erweitern und zu verbessern. Administratoren und Anwender, die diese Version testen, sollten sich über wieder vor Augen führen, dass eine solche CTP-Version noch vor einem Beta zur Verfügung gestellt wird, also sicher nicht als endgültig oder „mit allen Features ausgestattet“ bezeichnet und betrachtet werden kann. Trotzdem ist schon jetzt eine ganze Reihe an Fortschritten und Erweiterungen zu sehen, die wir hier im Überblick vorstellen wollen.

Viel mehr Cmdlets und Plattform-Erweiterungen

Das sind zunächst einmal die Cmdlets: Waren es schon bisher hunderte sind es tausende von PowerShell-Schnittstellen, die Teil des kommenden Windows Server sein werden. Dazu gehören unter anderem neue Module für DNS, DHCP und für die Datei– und Druckdienste. So basiert die gesamte Oberfläche des neuen Server Managers auf PowerShell-Scripts und ermöglicht es dem Administrator nicht nur den lokalen, sondern auch andere Server in der entsprechenden Systemumgebung mit ihrer Hilfe zu verwalten. Das ist sicher ein Beweis dafür, wie vielseitig die APIs der PowerShell im kommenden Server-Release sein werden.

Aber auch bei der PowerShell-Plattform an sich haben die Entwickler viele Erweiterungen integriert. Die PowerShell besitzt nun die Fähigkeit mit integrierten Arbeitsabläufen, mit Workflows zu arbeiten. Was bedeutet das vor allen Dingen für die IT-Administratoren? Es heißt, dass PowerShell-Scripts nun auch Reboot-Vorgänge einer Maschine „überleben“ und danach weiterarbeiten können. Die Scripts können durch diese Erweiterung zudem auf vielen Maschinen laufen und sich „schlafen legen“, während sie auf ein Ereignis wie eine Rückmeldung von einem Anwender warten, um dann ihre Funktion wieder aufzunehmen.

Sicher wird diese Workflow-Funktionalität nicht zu den Funktionen gehören, die jeder Anwender sofort und auf der Stelle in seiner IT-Umgebung einsetzen wird. Aber Microsoft hat diese Fähigkeit auch ganz offensichtlich deshalb mit eingebaut, damit die Verwaltbarkeit vieler Maschinen, wie sie in Cloud-Umgebungen wie Azure oder auch in privaten Clouds benötigt wird, mit Hilfe der PowerShell gegeben ist.

Die Hintergrundprogramme (Background Jobs) wurden nun mit den geplanten Aufgaben (Scheduled Tasks) vereint: Die Administrator sind dadurch dazu in der Lage, Scripts zu definieren, die beim Logon ebenso wie beim Start des Systems wie auch an bestimmten Tagen oder zu bestimmten Uhrzeiten ausgeführt werden. Sowohl die Background Jobs als auch die geplanten Aufgaben erscheinen dann in der Standard-Aufgabenplanung des Windows-Systems, während ihre Ergebnisse auch von einem normalen PowerShell-Script empfangen und verarbeitet werden können.

Bild 4. Ebenfalls deutlich erweitert: Die Unterstützung und der Zugriff auf Remote-Systeme und -Server mit Hilfe der PowerShell.

Mehr Stabilität und vor allen Dingen: Robustheit

Auch an der Stabilität und Robustheit der PowerShell haben die Entwickler gearbeitet: Bisher war es so, dass PowerShell-Sitzungen einfach beendet waren, wenn der Anwender die Verbindung unterbrach. Nun kann der Administrator sie so konfigurieren, dass sie persistent sind und weiterlaufen. So wird es für den Anwender möglich, eine Task zu starten, die Verbindung abzubrechen und sich dann von einem anderen Gerät aus wieder mit der Task zu verbinden. Dabei wird er dann mit der gleichen Umgebung weiterarbeiten, weil ja auch die Task weiterarbeitet, ganz gleich ob der Anwender mit ihr verbunden ist oder nicht.

Im Bereich der Web-Unterstützung sind ebenfalls Erweiterungen und Verbesserungen zu vermelden. Die PowerShell besitzt nun die eingebaute Fähigkeit sehr leicht und direkt mit Web-Diensten (Web Services) wie beispielsweise RSS (Really Simple Syndication) zu interagieren. Zudem besitzt sie nun ein vollständiges PowerShell-Webinterface, das der Administrator auf jedem Windows Web-Server einsetzen kann, so dass er dann über ein Programm oder über eine im Browser dargestellte Kommandozeile zugreifen kann.

Verbesserungen an der Oberfläche: Poliert und besser einzusetzen

Vergleicht man die aktuelle PowerShell-Entwicklungsumgebung ISE (Integrated Scripting Environment) mit den Möglichkeiten und Fähigkeiten, die von den Werkzeugen der Drittanbieter wie beispielsweise der PowerGui angeboten werden, so hat die integrierte Entwicklungsumgebung noch einigen Rückstand aufzuholen. Aber auch an diesem Punkt haben die Entwickler in Redmond gearbeitet und stellen bei der PowerShell 3 nun die „intellisense“-Fähigkeit zur Verfügung.Dadurch werden automatisch Dropdown-Menüs mit den zur Verfügung stehen Kommandos und Parametern angezeigt, wenn der Anwender entsprechende Eingaben macht.

Was gerade vielen Administratoren gefallen wird, die nicht so häufig und regelmäßig mit der PowerShell arbeiten, ist eine Erweiterung bei den PowerShell-Bibliotheken (Libraries oder Modules): Die Module werden nun automatisch geladen, wenn ein Anwender eine ihrer Funktionalitäten nutzt.

Ruft er beispielsweise ein Cmdlet für das DNS-Management auf, so wird es automatisch nachgeladen. Aktuell ist es beim Einsatz der PowerShell 2 noch so, dass der Anwender selbst dafür verantwortlich ist festzustellen, welches bestimmte Modul notwendig ist und per Hand geladen werden muss, damit das gewünschte Cmdlet zur Verfügung steht.

Viele Kritiker der PowerShell werden es kaum glauben können: Aber bei der PowerShell 3 haben es die Entwickler geschafft, die Kompatibilität zur Version 2 vollständig beizubehalten und die Sprache an sich dabei einfacher zu gestalten! So müssen die Anwender nun keine geschweiften Klammern mehr nutzen, wenn sie die Ausgabe eines Cmdlets filtern wollen. Weiterhin ist nun möglich, auch beim dir-Kommando möglich, reguläre Ausdrücke zu verwenden. Das sind zwar nur kleine Änderungen — von denen es eine ganze Reihe gibt —, die aber schon das Erlernen der PowerShell deutlich erleichtern.

Sowohl bei WMI als auch beim WinRM (Windows Remote Management) gibt es eine ganze Reihe von Verbesserungen und Erweiterungen, die es für Anwender und Administratoren deutlich einfacher machen, diese Schnittstellen sowohl auf Windows- als auch auf Nicht-Windows-Systemen einzusetzen.

Insgesamt machen die Veränderungen, die Microsoft mit der PowerShell 3 bereitstellen möchte, schon jetzt einen sehr guten Eindruck. Man sieht sehr deutlich, dass die Microsoft-Ingenieure weiterhin bestrebt sind, die Automatisierung und damit die Verwaltbarkeit der Windows-Plattform und damit auch der Windows-Server-Systeme weiter voranzutreiben. (fms)

Unser Autor: Dimitry Sotnikov

Dimitry Sotnikov ist als „Director of Clouds Solutions“ bei der Softwarefirma Quest tätig. Seine Erfahrungen umfassen mehr als 10 Jahre intensiver Arbeit im Windows-Umfeld. Er ist einer der MVPs (Most Valuable Professionals) von Microsoft, hat zahlreiche Whitepapers veröffentlicht und tritt immer wieder als Gastredner auf Veranstaltungen wie der TechED, der WinHEC, der VMworld oder dem IT Forum auf. Er führt einen eigenen Blog zum Thema Powershell der hier zu erreichen ist:

Dimitry’s Powerblog: PowerShell and beyond

Lesen Sie auch