===== 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 [[http://msdn.microsoft.com/en-us/library/windows/desktop/aa386968(v=vs.85).aspx| MakeCert]] angelegt werden. Makecert ist Teil des Windows SDK's. == A) Download Microsoft Windows SDK for Windows 7 and .NET Framework 4 == Link: [[http://www.microsoft.com/en-us/download/details.aspx?id=8279| 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: * [[http://msdn.microsoft.com/en-us/windows/hardware/gg487309.aspx| Microsoft Code-Signing Best Practices]]