Próbuję uruchomić skrypt PowerShell z pytona takiego:Wywoływanie skryptu PowerShell z Pythonem
psxmlgen = subprocess.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
'./buildxml.ps1',
arg1, arg2, arg3], cwd=os.getcwd())
result = psxmlgen.wait()
Problemem jest to, że pojawia się następujący błąd:
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.
pomimo faktu, że umożliwiłem uruchamianie skryptów w Powershell dawno temu, wpisując Set-ExecutionPolicy Unrestriced
w uruchamianym przez administratora terminalu PS (i zrobiłem to ponownie, aby się upewnić). Plik wykonywalny powershell jest taki sam, jak wskazuje skrót w menu start. Get-ExecutionPolicy
poprawnie zgłasza Unrestricted
, niezależnie od tego, czy uruchomiłem PowerShell jako administrator, czy nie.
Jak mogę poprawnie wykonać skrypt PS z Pythona?
Wow, to świetnie, dziękuję! Właściwie to właśnie odkryłem, że problem spowodowany jest niesławnym przekierowaniem systemu plików Windows 7 x64. (Miałem nieograniczoną politykę w wersji x64, ale nie w x86, a python nie był przekierowywany na to). –
Nie jestem do końca pewien, jak wywołać taki plik wykonywalny z podprocesu, ale aby wyjaśnić, jest "./buildxml.ps1" faktyczne polecenie, które jest wywoływane? –
@ ktoś-lub-inny buildxml.ps1 to plik skryptowy typu powershell, a plik wykonywalny (jeśli to właśnie masz na myśli przy komendzie) to "C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe". Wszystkie pozycje na poniższej liście są parametrami, które są przekazywane do tego pliku wykonywalnego. –