Bisher habe ich unter Windows immer VBScript für Scripting Aufgaben verwendet. VBScript läuft zwar noch immer einwandfrei, aber da Microsoft jetzt schon seit Jahren VBScript abgekündigt hat, möchte ich mich jetzt mal auf die PowerShell von Microsoft umstellen. Geht auch wirklich gut, nur leider lassen sich erstellte Scripts nicht einfach ausführen.
Standardmäßig ist Windows nämlich so konfiguriert, dass gar keine Scripts ausgeführt werden können und die Shell nur interaktiv genutzt werden kann.
Diese Einstellungen kann mit dem Befehl:
Set-ExecutionPolicy Unrestricted
geändert werden. Der Nachteil ist, dass mit dieser Einstellung alle Scripts auch potentiell bösartige ausgeführt und man ein unsicheres System hat.
Besser ist eine Änderung der Einstellung auf den Wert AllSigned.
Mit dieser Einstellung werden dann ausschließlich signierte Scripts ausgeführt:
Um seine Skripte zu signieren benötigt man natürlich ein Zertifikat. Erstellt habe ich dieses mit der Anleitung unter http://www.hanselman.com/blog/SigningPowerShellScripts.aspx.
Leider haben aber die Befehle zum Signieren in dieser Beschreibung nicht funktioniert.
Die richtigen Befehle zum Signieren in der interaktiven Powershell lauten:
Laden des Zertifikats in die Variable $cert
$cert=Get-ChildItem -Path cert:\CurrentUser\My -CodeSigningCert
Zertifizieren eines Powershell Skripts
Set-AuthenticodeSignature -FilePath c:\scripts\vpn.ps1 -Certificate $cert
ad