Tierney - stock.adobe.com
Schnelleinstieg in das Arbeiten mit PowerShell-Skripten
Die PowerShell ist ein mächtiges Werkzeug, um wiederkehrende Aufgaben zu erledigen. Packt man Befehle in ein Skript, vereinfacht das die Automatisierung deutlich.
Viele wiederkehrende Aufgaben von Administratoren lassen sich einfach per PowerShell-Befehl erledigen. Werden diese in entsprechende Skripte verpackt, erleichtert dies die Ausführung ungemein. Die meisten Administratoren beginnen den Umgang mit der PowerShell durch die Eingabe von Cmdlets auf der Befehlszeile. Sobald man mit der Ausführung der Befehle vertraut ist, kann man sich mit Objekten und der PowerShell-Pipeline beschäftigen, um nachfolgend Befehle zu einem Skript zusammenzufügen.
Der Umstieg von der einfachen Befehlseingabe zum Anlegen von Skripten ist nicht kompliziert. Man kann sich ein Skript einfach als einen besonders langen Befehl vorstellen. Per Skript werden ein oder mehrere PowerShell-Befehle ausgeführt, um eine bestimmte Aufgabe zu erledigen. Dieser Praxisartikel soll PowerShell-Interessierte dabei unterstützen, die ersten Gehversuche mit eigenen Skripten zu machen. Exemplarisch widmen wir uns einer systemnahen Windows-Abfrage.
So legt man ein PowerShell-Skript an
In unserem ersten Beispiel soll geklärt werden, welche Windows-Dienste auf einem Windows Server laufen und eine entsprechende Abfrage erfolgen. Das Cmdlet Get Service zeigt alle Dienste an, die auf einem lokalen Windows-Computer ausgeführt werden. Möchte man alle angehaltenen Dienste ermitteln und versuchen, diese neu zu starten sowie einige Protokollfunktionen hinzufügen, dann ist ein entsprechendes PowerShell-Skript das richtige Werkzeug.
Das folgende Beispiel-Skript enthält mehr als eine PowerShell-Zeile, verwendet eine Schleife und verweist auf mehrere Befehle:
services = Get-Service | Where-Object {$_.Status -eq 'Stopped'}
foreach ($service in $services) {
Add-Content -Path 'C:\ScriptLog.log' -value "Attempting to start $($_.DisplayName)…"
$service | Start-Service
}
Man kann das Skript einfach im mit Windows mitgelieferten Editor PowerShell ISE (Integrated Scripting Environment) erstellen. Hierfür öffnen Sie den PowerShell-ISE-Editor, kopieren den Code hinein und speichern das Ganze als Start-StoppedServices.ps1. PowerShell-Skripte sind stets mit der Erweiterung ps1 versehen, so dass die Umgebung diese ausführt.
Ein PowerShell-Skript ausführen
Indem mehrere Aufrufe und Befehle zu einem Skript zusammengefasst werden, genügt es, dieses als einzigen Befehl auszuführen. Eine Eingabe von Start-StoppedServices.ps1 in der PowerShell ist nun ausreichend, um den gesamten Code auszuführen. PowerShell-Skripte lassen sich auch an der Eingabeaufforderung (cmd.exe) ausführen oder aus einer Batch-Datei aufrufen. Prinzipiell lassen sich PowerShell-Skripte von überall aus aufrufen.
Im folgenden Beispiel wird der Parameter File verwendet, um das Skript an die PowerShell zu übergeben, ohne die PowerShell-Konsole zu öffnen.
powershell -File C:\Start-StoppedServices.ps1
Best Practices zur Erstellung von PowerShell-Skripten
Wenn man sich mit den PowerShell-Cmdlets und deren Skriptsprache vertraut gemacht hat, eröffnen sich unzählige Möglichkeiten, bei denen sich Aufgaben per Skript lösen lassen. Dabei sollten beim Anlegen von Skripten stets nicht zu kompliziert vorgehen. Betrachten Sie ein Skript als etwas, das ein ganz konkretes, einzelnes Problem löst. In unserem Beispiel startet das Skript alle angehaltenen Dienste. Von derart grundlegenden Skripten können Administratoren profitieren, da sich wiederholende Aufgaben einfach automatisieren lassen.
Achten Sie beim Anlegen von Skripten darauf, dass Sie diese möglichst wenig verändern oder anpassen müssen. Wenn sich ein Skript um genau eine Aufgabe kümmert, lassen sich mehrere Skripte im Bedarfsfall gut kombinieren. Halten Sie ihre Skripte modular. Wenn Sie mit Variablen arbeiten, können Sie gegebenenfalls während der Ausführung verschiedene Werte übergeben.
Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!