marabunta
Goto Top

Powershell Set-Executionpolicy klappt nicht

Hallo,

ich versuche die Executionpolicy automatisch an einem neuen Rechner zu setzen und ein Skript auszuführen.
Während das Programm läuft sind Skripte auch erlaubt, aber die Executionpolicy steht im Powershell Fenster weiterhin restricted.

C++ Programm frägt nach Adminrechten und soll das umsetzen:
system("reg add \"HKLM\\SOFTWARE\\Microsoft\\PowerShell\\1\\ShellIds\\Microsoft.PowerShell\" /t REG_SZ /v ExecutionPolicy /d unrestricted /f 2>NUL >NUL");   

danach wird das Powershell-Skript aufgerufen:
system("powershell.exe -command \"& \"$($env:TEMP + '\\exec.ps1')\" ");  

Das Powershell-Skript selbst versucht auch noch die ExecutionPolicy zu setzen (level:Verzweiflung):
Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell -Name ExecutionPolicy -Value unrestricted -Type "String" -Force -ErrorAction silentlycontinue  
Set-ExecutionPolicy unrestricted -Force
Set-ExecutionPolicy unrestricted -Scope Process -Force
Set-ExecutionPolicy unrestricted -Scope CurrentUser -Force

Am Ende ist hier die ExecutionPolicy tatsächlich gesetzt:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ScriptedDiagnostics
Aber nicht da wo es soll:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell


mit RunAs habe ich es probiert, aber mit NoNewWindow verträgt es sich nicht. Jedenfalls nicht so wie ich es probiert habe. Tipps?
Danke.

Content-Key: 299050

Url: https://administrator.de/contentid/299050

Printed on: April 19, 2024 at 18:04 o'clock

Mitglied: 126919
Solution 126919 Mar 13, 2016 updated at 12:30:22 (UTC)
Goto Top
Wozu fest in die Registr eintragen wenn es doch hiermit auch ohne geht:
powershell -Executionpolicy ByPass -command "deinCommand"  
Was auch zu beachten ist ob ein Command in einer 32- oder 64Bit Powerhell läuft! Mit obiger Zeile aber kein Problem solange der Befehl mit Admin-Rechten ausgeführt wird.

Gruß fk
Member: Marabunta
Marabunta Mar 13, 2016 at 12:29:45 (UTC)
Goto Top
für die Zukunft soll es einfach so funktionieren.
Mitglied: 126919
126919 Mar 13, 2016 updated at 12:34:37 (UTC)
Goto Top
Mit obiger Zeile doch kein Problem. Dein Fehler ist das du schon vor der Freischaltung eine PS1 ohne Bypass nutzt!!

Ebenfalls per GPO doch kein Problem...

Und in einer elevated Session ebenfalls problemlos freischaltbar.
Member: Marabunta
Marabunta Mar 13, 2016 at 12:34:15 (UTC)
Goto Top
es ist elevated.
gpo gibts nicht, da keine domäne.
Mitglied: 126919
126919 Mar 13, 2016 updated at 12:37:41 (UTC)
Goto Top
Zitat von @Marabunta:
es ist elevated.
Dein Fehler ist das du schon vor der Freischaltung eine PS1 ohne Bypass nutzt!! Das kann ja nicht funktionieren.

Also mach in der Zeile ein Bypass rein und setze per Set-Executionpolicy die Policy ohne PS1 direkt in den Command, und fertig ist der Lack!!