Zum Hauptinhalt springen

Skripte ausführen

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

skripte ausfuehren

 

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.

106)

-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!