Je suis en train de lancer un script PowerShell de python comme ceci:un script PowerShell Invoquer de Python
psxmlgen = subprocess.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
'./buildxml.ps1',
arg1, arg2, arg3], cwd=os.getcwd())
result = psxmlgen.wait()
Le problème est que je reçois l'erreur suivante:
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.
MALGRÉ le fait que j'ai activé l'exécution de scripts dans Powershell il y a longtemps en tapant Set-ExecutionPolicy Unrestriced
dans un terminal PS géré par l'administrateur (et l'ai fait à nouveau, juste pour être sûr). L'exécutable powershell est le même que le raccourci dans le menu Démarrer pointe vers. Get-ExecutionPolicy
rapports correctement Unrestricted
peu importe si j'ai couru PowerShell comme administrateur ou non.
Comment puis-je exécuter un script PS correctement à partir de Python?
Wow qui est génial, merci! En fait, je viens de comprendre que le problème était dû à l'infâme système de fichiers-redirection de Windows 7 x64. (J'avais une politique non restreinte dans la version x64, mais pas dans la x86, et python n'était pas redirigé vers celle-ci). –
Je ne suis pas entièrement sûr de savoir comment appeler un exécutable comme celui-ci avec un sous-processus, mais juste pour clarifier, est-ce que le './buildxml.ps1' est la commande réelle qui est appelée? –
@ quelqu'un-ou-autre buildxml.ps1 est un fichier de script powershell et l'exécutable (si c'est ce que vous voulez dire par commande) est '' C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe''. Tous les éléments de la liste qui suivent sont des paramètres qui sont passés à cet exécutable. –