© DrHitch/Shutterstock.com
PowerShell

1 PowerShell für .NET-Entwickler


Für viele .NET-Entwickler ist die PowerShell noch immer ein Buch mit sieben Siegeln und wird oft in die Sysadmin-Ecke verstoßen. Schade eigentlich, denn die PowerShell hat das Potenzial, den Entwickleralltag um einiges produktiver und angenehmer zu gestalten. Mal schnell sieben Frontend-Webserver neustarten? Eine virtuelle Maschine in Azure hochfahren? Aus den Services im Backend eine HTML-Datei generieren? Ein Back-up einer SQL-Server-Datenbank erstellen? Auf der Webserverfarm einen neuen Application Pool einrichten? Mit dem wachsenden DevOps-Bedürfnis, welches nach dem Verschmelzen von Entwicklung und Betrieb strebt, wird die PowerShell in Zukunft auch für Entwickler stark an Bedeutung gewinnen.

Die PowerShell ist ein Kommandozeileninterpreter für Windows und kann als Alternative zur klassischen Kommandozeile (cmd.exe) betrachtet werden. Seit Windows 7 ist die PowerShell fester Bestandteil des Windows-Betriebssystems. Es geht aber noch besser: In den letzten Jahren hat sich die PowerShell zum Werkzeug der Wahl für die Administration des Betriebssystems und eine Vielzahl von Windows-Produkten und -Anwendungen etabliert. In Folge dessen bringen Produkte wie Team Foundation Server, SQL Server, Exchange Server, BizTalk, SharePoint, IIS, System Center Operations Manager, Microsoft Azure und viele weitere ihre eigenen PowerShell-Skripte bereits mit. Eine umfassende Beschreibung der PowerShell gibt es in Wikipedia [1], eine gute Einführung bietet das kostenfreie E-Book von Keith Hill (in Englisch) [2]. Weitere Informationen sowie vorgefertigte PowerShell-Skripte gibt es auf der offiziellen PowerShell-Seite [3] und in der PowerShell Gallery [4].

Die Möglichkeiten der PowerShell sind beinahe unbegrenzt. Da die PowerShell objektorientiert arbeitet und auf dem .NET Framework basiert, kann die Funktionalität aus sämtlichen .NET-Klassen direkt aus der Shell benutzt werden. Neben .NET bietet die PowerShell Schnittstellen zur Windows Management Instrumentation (WMI) und dem Component Object Model (COM). Weiter kann über so genannte PowerShell-Provider auf das Dateisystem, den Zertifikat-Store oder die Registry zugegriffen werden. Die entsprechenden Berechtigungen vorausgesetzt, können PowerShell-Befehle auch auf Remote-Maschinen ausgeführt werden, ohne dass zuvor eine Remote-Desktop-Verbindung aufgebaut werden muss.

Hilfe, wie gehts los?

Bevor es um die Syntax der PowerShell geht, soll aufgezeigt werden, wie man sich helfen kann, wenn mal nichts mehr geht. Der wichtigste Befehl ist Get-Help. Get-Help erklärt, wie die Hilfefunktion in PowerShell benutzt werden kann. Da die PowerShell ohne Hilfedateien ausgeliefert wird, muss mit Update-Help die aktuellste Version der Hilfe auf den lokalen Rechner heruntergeladen oder auf die Onlineseiten ausgewichen werden.

Die Kombination von Get-Help mit einem Befehl, in PowerShell-Sprache Commandlet oder Cmdlet genannt, erklärt dessen Verwendung. Get-Help Get-Process beispielsweise zeigt die Hilfeseite von Get-Process inklusive Syntaxbeispielen und Kommentaren an. Die erweiterte Hilfeseite kann mit dem Befehl Get-Help Get-Process –Detailed abgerufen werden. Mit Get-Help Get-Process –Online wird die Onlinehilfeseite aus Technet geöffnet, die neben den Grundlagen auch viele Anwendungsbeispiele enthält.

Mit dem Cmdlet Get-Command lässt sich herausfinden, welche Cmdlets überhaupt vorhanden sind. Dabei kann mit Wildcards, wie dem Stern *, gearbeitet werden. Der Befehl Get-Command *AppPool* listet alle Cmdlets auf, die mit dem IIS Application Pool zu tun haben (Listing 1.1). Als Alternative zu Get-Command kann auch die PowerShell-Skripting-Umgebung Integrated Scripting Environment (ISE) benutzt werden, die eine Suchfunktion für Cmdlets zur Verfügung stellt (Kasten: „PowerShell.exe und das Integrated Scripting Environment (ISE)“).

PS C:\> Get-Command *AppPool*
CommandType Name Version Source
---------------- ------ -------- -------
Cmdlet Get-IISAppPool 1.0.0.0 IISAdministration
Cmdlet Get-WebAppPoolState 1.0.0.0 WebAdministration
Cmdlet New-WebAppPool 1.0.0.0 WebAdministration
Cmdlet Remove-WebAppPool 1.0.0.0 WebAdministration
Cmdlet Restart-WebAppPool 1.0.0.0 WebAdministration
Cmdlet Start-WebAppPool 1.0.0.0 WebAdministration
Cmdlet Stop-WebAppPool 1.0.0.0 WebAdministration

Listing 1.1: Suche nach Cmdlets

PowerShell.exe und das Integrated Scripting Environment (ISE)

Unter Windows gibt es zwei eingebaute Tools, die PowerShell-Code ausführen können. Einerseits natürlich die klassische PowerShell.exe, auf der anderen Seite das Integrated Scripting Environment oder kurz ISE.

Die Eingabeaufforderung PowerShell.exe eignet sich besonders dazu, einzelne Cmdlets aufzurufen. Für komplexere Aufrufe oder das Schreiben von Skripten ist die ISE angenehmer. Unter anderem lassen sich in der ISE mehrere Dateien öffnen, und der Entwickler wird mit Intellisense und Funktionen zum Skript-Debugging unterstützt.

Neben unzähligen kostenfreien und kostenpflichtigen Anwendungen für die Entwicklung von PowerShell-Skripten gibt es auch die Möglichkeit, in Visual Studio PowerShell-Code zu schreiben. Es sei dafür auf die „PowerShell Tools for Visual Studio 2015“ verwiesen [5].

An dieser Stelle ist es Zeit für zwei besonders hilfreiche Funktionen für den PowerShell-Einsteiger. Mit Get-Help Get-Process –ShowWindorw wird die Hilfeseite in einem zusätzlichen Fenster geöffnet und kann so neben dem PowerShell-Fenster gelesen werden, während in der Eingabeaufforderung die Befehle ausprobiert werden.

De...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang