Skripte ausführen
Es gibt verschiedene Wege, ein Powershell-Skript zu starten. Sie können Skriptdateien z.B. über das Kontextmenü ausführen lassen.

Abbildung 6 - Ein Skript über das Kontextmenü starten
Sie können das Skript auch über die Powershell.exe starten.
powershell.exe -file C:\skripte\config.ps1
Der Powershell.exe können Sie eine Reihe von weiteren Parametern übergeben, die zum Starten des Skripts angewendet werden können.
|
Parameter |
Funktion |
|
-NoExit |
Das Powershell-Fenster wird nach Beendigung des Skripts nicht geschlossen |
|
-NoProfile |
Es werden beim Starten keine Profilskripte geladen (s.Profilskripteauf S. |
|
-ExecutionPolicy |
Die Standard-Ausführungsrichtlinien des Computers und Benutzers können für diesen Aufruf überschrieben werden (benötigt Admin-Rechte) |
|
-WindowStyle |
Legt den Stil der Powershell-Konsole fest, wobei Hidden leider nicht funktioniert |
|
-File |
Der Pfad zur .ps1-Datei |
|
-Command |
Statt einer Datei kann auch ein Skriptblock direkt ausgeführt werden |
|
-EncodedCommand |
Base64-Codierte Scripte können direkt ausgeführt werden. ! Achtung ! Diese Option kann zur Verschleierung von Schadcode verwendet werden. |
Mehr Parameter werden Ihnen angezeigt, wenn Sie Powershell.exe /? an der Kommandozeile eingeben.
Mit geplanten Aufgaben können Sie Powershell-Skripte zeit- oder ereignisgesteuert starten. Geplante Aufgaben können sogar mit Powershell erstellt werden.
$trigger = New-ScheduledTaskTrigger -Once -At (get-date).AddSeconds(30)
$Args = "-ExecutionPolicy Bypass -Command get-date | set-Content -Path C:\demo.txt"
$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument $Args
Register-ScheduledTask -TaskName 'Demo' -User System -Action $Action -Trigger $trigger
Eine Aufgabe benötigt immer einen Auslöser (Trigger). Im Beispiel soll die Aufgabe einmalig in 30 Sekunden ausgelöst werden. Die auszuführende Aktion ist der Start der Powershell.exe mit den angegebenen Argumenten. Danach muss der Task registriert werden. Mit dem Parameter -User kann man ein Startkonto angeben, in diesem Fall das Systemkonto, das mit vollen Admin-Rechten läuft. Diese Variante des Startens von Skripten ist nicht nur hilfreich, wenn man ein Skript zeitgesteuert aufrufen will, sondern kann auch genutzt werden, um Skripte remote auszuführen.
Natürlich können Sie Powershell-Skripte auch aus einer Powershell-Konsole aufrufen. Achten Sie dabei auf ein weiteres Sicherheitsfeature von Powershell – Sie können Programme und Skripte immer nur mit qualifiziertem Namen (also mit Pfadangabe) starten, es sei denn, das Skript liegt in einem Ordner, derin der Pfadvariable hinterlegt sind. Wenn Sie also ein Skript demo.ps1 aus dem Ordner c:\Skripte starten wollen, müssen Sie einen der folgenden Aufrufe verwenden:
.\Demo.ps1
# Wenn Sie sich im Ordner C:\Skripte befinden
C:\Skripte\Demo.ps1 # von überall anders aus
Der direkte Doppelklick auf ein Skript zeigt das Skript im Notepad an, es wird nicht ausgeführt!