Inhaltsverzeichnis
Aufruf von PowerShell Scripten
Angelegt 2012/08/10
Per default können PowerShell Scripte nicht automatisch aufgerufen werden.
Wie aber nun ein solches Skript z.B über einen Job aufrufen?
1. Sicherheit ausschalten
Mit „get-ExecutionPolicy“ kann der interne Sicherheitsmechanismus abgeschaltet werden: (Aufruf im Administrativen Modus!)
#Aktuelle Einstellung get-Executionpolicy -list #Auf den Scope achten zb. set-ExecutionPolicy -scope CurrentUser RemoteSigned
2. Per Shortcut aufrufen
Mit dem Aufrufparameter „-ExecutionPolicy Bypass“ kann die Sicherheit ausgeschaltet werden.
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -NoLogo -NoProfile -NonInteractive -File d:\PowerShell\myscript.ps1
3. Code signieren
Im ersten Schritte wird ein Zertifikat benötigt. Das Zertifikat kann mit MakeCert angelegt werden. Makecert ist Teil des Windows SDK's.
A) Download Microsoft Windows SDK for Windows 7 and .NET Framework 4
Link: SDK Installer
Installer starten und nur die Tools auswählen
B) Lokales Root Zertifikat erstellen
Aufruf von makecert um eine lokale „authority“ zu erstellen.
Dazu die PowerShell im administrativen Modus starten!
cd "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin" .\makecert -n "CN=GPI Local Certificate" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr localMachine
In der Kennwort Box die Kennworte für das root zertifikat vergeben.
Zertifikat erstellen
.\makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer
Obiges Kennwort eingeben.
In der PowerShell anzeigen lassen
Get-ChildItem cert:\CurrentUser\My -codesign
Das Script kann nun signiert werden
Set-AuthenticodeSignature .\myscript.ps1 @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Die Ausführung von signierten Scripten erlauben
Set-ExecutionPolicy –scope CurrentUser AllSigned
Das signierte Script aufrufen.
Falles es nicht funktioniert, aktuelle Einstellungen prüfen mit:
get-executionpolicy -list
Auf den richtigen Scope achten!
Quellen: