Powershell – Kommandozeile und Skriptumgebung Windows-Aufgaben per Skript automatisieren

Autor / Redakteur: Christian Rentrop / Stephan Augsten |

Egal ob Admin oder Programmierer: Systemskripte sind jederzeit praktisch, um lästige, sich wiederholende Aufgaben am Rechner durchzuführen. Microsoft bietet dafür seit geraumer Zeit die Windows Powershell. Und die ist erstaunlich mächtig.

Anbieter zum Thema

Die Powershell ist fester Bestandteil aller modernen Windows-Systeme.
Die Powershell ist fester Bestandteil aller modernen Windows-Systeme.
(Bild: Rentrop / Microsoft)

Vielleicht erinnern Sie sich noch an früher: Wer ein Skript schreiben wollte, bastelte sich unter DOS und frühen Windows-Versionen eine Batch-Datei. Die führte Befehle aus und automatisierte die notwendigsten Aufgaben. Seither ist viel Zeit vergangen.

Nach einem längeren Umweg über das recht glücklose Visual Basic Script und den Windows Script Host führte Microsoft 2006 die Windows Powershell ein. Diese sollte Shell und Skriptumgebung effektiv miteinander verbinden. Der Erfolg gibt Microsoft recht: Die Powershell ist inzwischen eine leistungsstarke Kommandozeile für Windows-Betriebssysteme, die auch die Automatisierung per Skript ermöglicht. Und das ohne größere Lernkurve.

Schneller arbeiten

Wer die Powershell beherrscht, ist in der Lage, wichtige Einstellungen und Funktionen von Windows zu verwenden, ohne sich dafür durch zahlreiche Programme und zum Teil unübersichtliche GUIs klicken zu müssen. Dadurch werden Arbeitsabläufe wie die Konfiguration eines Servers deutlich erleichtert.

Damit eignet sich die Umgebung sowohl für die Administration von Windows-Servern als auch für die Optimierung von Arbeitsplatz-Rechnern: Sie verbindet die aus Unix-Shells bekannte Bedienung mit objektorientierter Programmierung, wodurch sich Skripte zum Beispiel auch miteinander verknüpfen lassen.

Seit Windows 7 Service Pack 1 und Windows Server 2008 R2 Service Pack 2 ist das Powershell-Framework fester Bestandteil eines jeden Windows-Systems. Gestartet wird sie unter Windows 10 ganz einfach durch Eingabe von „Powershell“ im Cortana-Suchfeld. Bei einem Rechtsklick auf das Windows-Startsymbol erscheint das Tool ebenfalls im Menü – sofern es nicht händisch in den Taskleisten-Einstellungen durch die altbekannte MS-DOS-Eingabeaufforderung CMD ersetzt wurde.

Unix-Shell für Windows

Ist Powershell aktiv, können Sie auch schon loslegen: So listet der Befehl „Get-Process“ zum Beispiel alle derzeit laufenden Prozesse im System aus. Mit „Stop-Process“, gefolgt von der Prozess-ID, können Prozesse auch direkt beendet werden. Umgekehrt können Sie über die Shell natürlich auch Prozesse starten. Der Befehl lautet folglich „Start-Process“. Und falls etwas hängt, kann die Powershell auch den Rechner neu starten, der Befehl dafür lautet logischerweise „Restart-Computer“.

Das sind natürlich nur Beispiele dafür, wie schnell die Bedienung der Powershell von der Hand geht. Solche Kleinigkeiten erleichtern die Arbeit mit Windows in vielen Fällen enorm. Natürlich ist mit Start-Stopp-Spielereien längst nicht Schluss: Microsoft bietet auf seiner Website eine vollständige Übersicht sämtlicher Powershell-Befehle, die alle recht simpel gehalten sind. So lassen sich Objekte kopieren, die Zwischenablage auslesen, der Computername ändern, ja sogar der Restore-Prozess anstoßen.

Skripte mit der Powershell

Mit diesen praktischen Befehlen sind Sie dann auch schon mittendrin in der Powershell-Skripterstellung. Auch die ist mit Hilfe der Powershell, genauer gesagt dem Zusatztool Powershell ISE (Integrated Scripting Environment) problemlos möglich. Nach dem Start von Powershell ISE über das Cortana-Suchfeld können Sie hier Skripte basteln. Für die ersten Schritte wollen wir ein einfaches Skript bauen, das „Hallo Welt“ ausgibt. Dafür reicht es, den Befehl „Write-Host“ zu verwenden, der einen definierten Output in der Powershell ausgibt.

Write-Host „Hallo Welt“

Mit Klick auf den grünen Pfeil wird das Skript gestartet, welches den gewünschten Output ausgibt. Der Lesebefehl dafür ist „Read-Host“, um den Wert auszulesen. Richtig interessant wird es aber, wenn Nutzerbestätigungen für echte Aufgaben eingefordert werden.

Durch den einfachen Zusatz „-Confirm“ lässt sich sicherstellen, dass die Powershell ein Skript nicht ohne Rückfrage ausführt.
Durch den einfachen Zusatz „-Confirm“ lässt sich sicherstellen, dass die Powershell ein Skript nicht ohne Rückfrage ausführt.
(Bild: Rentrop / Microsoft)

So gibt es bei vielen Aktionen den Parameter „-Confirm“, der eine Nutzerabfrage auslösen kann. Beispielsweise lässt sich mit wenigen Zeichen Text ein Skript erstellen, das den lokalen PC neu startet, vorher aber nachfragt:

Restart-Computer -Confirm

Daraufhin öffnet sich ein Fenster, in dem Sie die Ausführung bestätigen. Der Computer startet daraufhin neu – oder auch nicht, wenn Sie mit „Nein“ ablehnen. Übrigens – und hier wird die Powershell mächtig – geht das nicht nur mit dem lokalen Computer, sondern auch mit Rechnern im Netzwerk. Sie wollen als Administrator alle PCs im Netzwerk neu starten? Mit Powershell kein Problem: Der Befehl ...

Stop-Computer -ComputerName “PC1“, “PC2“, “PC3“

... fährt die im Netzwerk befindlichen drei Computer mit den entsprechenden Namen herunter. Soll zusätzlich auch der gerade aktive Rechner heruntergefahren werden, kann noch „localhost“ an den String angefügt werden:

Stop-Computer -ComputerName “PC1“, “PC2“, “PC3“, “localhost“

Mit Hilfe dieser Nutzerabfragen lassen sich freilich auch Befehle verketten. Das Skript wird anschließend gespeichert und mit Powershell gestartet, mehrere einzelne Skripte lassen sich auch innerhalb eines übergeordneten Skripts nacheinander abarbeiten.

Macht und Verantwortung

Eben weil die Powershell so mächtig ist, hat sie natürlich einen entscheidenden Nachteil: Skripte können, insbesondere als Administrator ausgeführt, erheblichen Schaden anrichten. Findet zum Beispiel keine Sicherheitsabfrage statt, wird das Skript einfach abgearbeitet.

Falsch verwendet kann schon das Skript zum Neustart des Computers echten Schaden anrichten, wenn es mal eben alle Rechner im Netzwerk neu startet und dadurch den ungespeicherten Arbeitsfortschritt der Kollegen zunichtemacht. Dementsprechend vorsichtig sollten Sie mit Powershell-Skripten umgehen, die Sie aus dem Internet laden oder von Kollegen erhalten: Eine Prüfung des Codes ist Pflicht!

Um Schwierigkeiten mit Skripten zu entgehen, sollten außerdem niemals Passwörter in den Skripten gespeichert werden, da diese im Klartext mit jedem Editor lesbar sind. Dennoch: Mit der Powershell können Administratoren sich viel Arbeit ersparen. Und dank der Skripte lästige wiederkehrende Aufgaben wie die Erstellung von Mitarbeiter-Konten samt Mailbox mit wenigen Handgriffen abarbeiten.

(ID:45587615)