I’m trying to start a PowerShell script from python like this:
psxmlgen = subprocess.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
'./buildxml.ps1',
arg1, arg2, arg3], cwd=os.getcwd())
result = psxmlgen.wait()
The problem is that I get the following error:
File
C:\Users\sztomi\workspace\myproject\buildxml.ps1
cannot be loaded because the execution of scripts is disabled on this
system. Please see “get-help about_signing” for more details.
DESPITE the fact that I did enable running scripts in Powershell a long time ago by typing Set-ExecutionPolicy Unrestriced in an administrator-ran PS terminal (and did again, just to make sure). The powershell executable is the same that the shortcut in start menu points to. Get-ExecutionPolicy correctly reports Unrestricted no matter if I ran PowerShell as admin or not.
How can I execute a PS script correctly from Python?
First,
Set-ExecutionPolicy Unrestricedis on a per user basis, and a per bitness basis (32-bit is different than 64-bit).Second, you can override the execution policy from the command line.
Apparently you can access the 64-bit PowerShell from 32-bit PowerShell with this path (thanks to @eryksun in comments):