Skriptfehler PowerCLI

Bei der Ausführung von Powershell oder PowerCLI Skripten kann es zu einem Problem mit der Signierung kommen. Zur Laufzeit erhält man eine Meldung wie unten dargestellt.

Die Datei <name> kann nicht geladen werden. Die Datei <name> ist nicht digital signiert. Das Skript wird auf dem System nicht ausgeführt. Weitere Informationen erhalten Sie mit “Get-Help about_signing”.

bzw. für englische Ausgabe:

The file <name> cannot be loaded. The file <name> is not digitally signed. The script will not execute on the system. Please see “Get-Help about_signing” for more details.

Die kontrolle der Sicherheitseinstellungen von Powershell ergab, daß sie bereits auf “RemoteSigned” gestellt wurden.

PS C:\Users> get-executionpolicy
RemoteSigned
PS C:\Users>

Was Ist also die Ursache? Das PowerCLI Skript (ein Teil von vCheck) hatte ich kurz zuvor geladen und lokal entpackt. Öffnet man die Eigenschaften des der ps1-Datei so sieht man schnell die Ursache.

Aktiviert man den Button “Zulassen”, so ist das Skript für künftige Ausführung genehmigt und der Fehler tritt nicht mehr auf.

Powershell: Skript als geplanten Task auf Server 2008 R2 starten

Geplante Tasks waren schon immer eine feine Sache. Meist wurden in der Vergangenheit Batchdateien ausgeführt. Viel komfortabler lassen sich Vorgänge jedoch mit Powershell programmieren. Der Aufruf mit dem Taskplaner geht nicht direkt auf das Shellscript, sondern es muß zunächst Powershell aufgerufen werden.

Auf der Kommandozeile sieht das etwa so aus:

powershell.exe -Noninteractive -Command "&{<Pfad zum Skript>}"

Im Taskplaner ist das ähnlich, lediglich die Argumente müssen in andere Felder verteilt werden.

Verwaltung > Aufgabenplanung

Unter Programm wird Powershell.exe aufgerufen. Ggf. kann es nötig sein den Pfad zu Powershell.exe anzugeben. Er lautet

%SystemRoot%\system32\WindowsPowerShell\v1.0\

Achtung: Auch bei Powershell 2.0 ist der Pfad \v1.0\

Der Pfad zur Powershell Skriptdatei wird in den Argumenten übergeben. Da das Anzeigefeld sehr klein geraten ist hier nochmal die kompletten Argumente.

-noninteractive -command "&{<Pfad zum Skript>}"

Die Argumente NonInteractive und Command sind in diesem Artikel im Microsoft Technet erklärt.