Praxis & Tipps | FAQ

Hajo Schulz

Windows PowerShell

Antworten auf die häufigsten Fragen

Power-Was?

Was ist eigentlich die Windows PowerShell? Brauche ich die?

Die Windows PowerShell ist der Nachfolger der guten alten Eingabeaufforderung, die auch als Kommandozeile oder „DOS-Box“ bekannt ist. Neben einer Unzahl neuer Befehle – sogenannter Cmdlets – bietet sie vor allem eine Skriptsprache, die ihren Namen verdient: mit einem kompletten Satz an Kontrollstrukturen wie if-Abfragen und Schleifen, der Möglichkeit, eigene Funktionen zu definieren, arithmetischen Operationen sowie regulären Ausdrücken zum Auseinandernehmen von Zeichenketten.

Wie mit der Eingabeaufforderung kann man aus der PowerShell heraus beliebige (Konsolen- und Windows-)Programme starten. Weil die PowerShell aber im Kern objektorientiert ist, stehen ihr auch sämtliche auf dem System installierten COM-Server und -Objekte sowie alle .NET-Klassen zu Gebote. Außerdem bringt sie von Haus aus den Zugriff auf die Windows Management Instrumentation (WMI) mit, über den man ausführliche Informationen zu Systemzustand und -performance abrufen kann.

Wegen der Scripting-Möglichkeiten und der Fähigkeit, Befehle und Skripte übers Netzwerk auf anderen Rechnern ausführen zu können, ist die PowerShell vor allem bei Administratoren beliebt. Nach ein wenig Eingewöhnung können aber auch normale Anwender von ihr profitieren und etliche Dinge schneller erledigen als mit Mausklicks.

Fehlersuche in Skripten

Gibt es einen Debugger für PowerShell-Skripte?

Ja, und er ist sogar schon im Lieferumfang enthalten: im „Windows PowerShell ISE“. Die Abkürzung steht für „Integrated Scripting Environment“. Es enthält einen Editor, der das Bearbeiten von Skripten erleichtert, indem er Schlüsselwörter hervorhebt und ebenso wie die eigentliche PowerShell Befehle und Dateinamen komplettiert, wenn man die Tab-Taste drückt.

In seinem Menü „Debug“ finden sich Befehle, um Haltepunkte zu setzen, das Skript im Debugger zu starten und nach dem Unterbrechen schrittweise fortzusetzen. Den Inhalt von Variablen zeigt der Debugger an, indem man einfach den Mauszeiger eine Sekunde lang über einem Variablennamen im Skript-Quelltext schweben lässt.

Auch wenn man mit Scripting nichts am Hut hat und die PowerShell nur interaktiv nutzt, ist das ISE einen Blick wert. Die Zusammenarbeit mit der Windows-Zwischenablage ist hier komfortabler gelöst als im textbasierten PowerShell-Fenster, außerdem kommt man schneller an weitergehende Informationen: Wenn der Textcursor auf oder direkt hinter einem Befehlsnamen blinkt und man F1 drückt, öffnet sich die Hilfe und springt direkt zu dem Artikel über diesen Befehl.

Woher nehmen?

Welche Version der PowerShell ist derzeit aktuell? Woher bekomme ich sie?

Zurzeit ist die PowerShell-Version 2.0 die neueste. Wenn Sie Windows 7 oder Server 2008 R2 einsetzen, haben Sie sie bereits – dort ist sie im Lieferumfang enthalten.

Beim Windows Server 2008 ist die PowerShell in Version 1.0 dabei. Dafür sowie für Windows Vista, XP und den Server 2003 (jeweils mit aktuellem Service Pack) gibt es die PowerShell 2.0 als Bestandteil des Windows Management Framework zum kostenlosen Download (siehe c’t-Link).

Skript-Ausführung deaktiviert

Sobald ich versuche, in der PowerShell ein Skript auszuführen, bekomme ich eine Fehlermeldung, die Ausführung von Skripten sei auf meinem System deaktiviert. Was soll das?

In der Tat verhindert die sogenannte Execution Policy (zu Deutsch Ausführungsrichtlinie) im Auslieferungszustand das Ausführen von PowerShell-Skripten. Das soll böswillige Skripte davon abhalten, Schaden anzurichten, trifft aber auch harmlose Exemplare.

Damit Windows Ihnen wenigstens das Ausführen selbst geschriebener Skripte erlaubt, können Sie in einer mit Administratorrechten gestarteten PowerShell den Befehl

Set-ExecutionPolicy RemoteSigned

ausführen. Er bewirkt, dass die PowerShell alle Skripte erlaubt, die nicht als aus dem Internet stammend gekennzeichnet sind, also zum Beispiel lokal erzeugte. Fremde Skripte müssen eine vertrauenswürdige Signatur tragen, damit sie akzeptiert werden.

Sollte Ihnen das als systemweite Einstellung zu unsicher erscheinen, können Sie einzelne Skripte trotzdem ausführen, indem Sie sie jeweils an eine neue Instanz der PowerShell verfüttern, für die Sie die gewünschte Execution Policy explizit setzen:

powershell -ep RemoteSigned -file MyScript.ps1

Symbolische Verknüpfungen

Ich möchte per Skript symbolische Verknüpfungen im NTFS-Dateisystem erstellen, habe aber keinen passenden Befehl dafür gefunden. Kann es sein, dass er der PowerShell wirklich fehlt?

Erstaunlicherweise ja. Sie können die Befehle zum Umgang mit NTFS-Spezialitäten aber recht einfach nachrüsten, indem Sie sich die PowerShell Community Extensions (PSCX) herunterladen und installieren (siehe c’t-Link).

Außer Befehlen für symbolische Links und alternative Datenströme enthalten die PSCX insgesamt über 80 weitere Cmdlets zu so unterschiedlichen Themen wie der Windows-Zwischenablage, ZIP-Archiven oder „Lorem ipsum“-Blindtext.

Wie weiter?

Ich habe das Gefühl, ich sollte mich mit der PowerShell mal näher beschäftigen. Wo finde ich weitergehende Informationen?

Der letzte größere c’t-Artikel zur Einführung in die PowerShell stand in Heft 3/10, Seite 82. In c’t 4/10, Seite 118, und c’t 10/12, Seite 148, haben wir umfangreiche Skripte zum automatischen Herunterladen von Dokumenten aus dem Web und zum Überwachen der Ereignisprotokolle von Windows-Rechnern vorgestellt.

Auf Microsofts Webserver ist die beste Anlaufstelle das Script Center, auf Englisch unter www.microsoft.com/powershell und auf Deutsch unter http://technet.microsoft.com/de-de/scriptcenter/dd742419.aspx. Hier gibt es unter anderem ein Script Repository mit an die 2000 Skript-Beispielen für alle möglichen Zwecke, das lesenswerte Blog „Hey, Scripting Guy!“, in dem regelmäßig Musterlösungen vorgestellt werden, sowie einen PowerShell-Spickzettel im MS-Word-Format zum Ausdrucken und neben die Tastatur Legen. (hos)

Artikel kostenlos herunterladen

weiterführende Links

Anzeige