Tôi đang cố gắng để bắt đầu một kịch bản PowerShell từ trăn như thế này:Gọi một kịch bản PowerShell từ Python
psxmlgen = subprocess.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
'./buildxml.ps1',
arg1, arg2, arg3], cwd=os.getcwd())
result = psxmlgen.wait()
Vấn đề là tôi nhận được lỗi sau:
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.
Mặc dù thực tế mà tôi đã cho phép chạy các kịch bản trong Powershell một thời gian dài trước đây bằng cách gõ Set-ExecutionPolicy Unrestriced
trong một thiết bị đầu cuối PS quản trị viên chạy (và đã làm một lần nữa, chỉ để chắc chắn). Các thực thi PowerShell là giống như các phím tắt trong trình đơn bắt đầu trỏ đến. Get-ExecutionPolicy
báo cáo chính xác Unrestricted
cho dù tôi có chạy PowerShell với tư cách quản trị viên hay không.
Làm cách nào để thực thi tập lệnh PS chính xác từ Python?
Thật tuyệt vời, cảm ơn bạn! Trên thực tế, tôi đã chỉ ra rằng vấn đề là do sự chuyển hướng hệ thống tập tin khét tiếng của Windows 7 x64. (Tôi đã có chính sách không hạn chế trong phiên bản x64, nhưng không phải trong x86, và python không chuyển hướng đến nó). –
Tôi không hoàn toàn chắc chắn làm thế nào để gọi một thực thi như vậy với subprocess, nhưng chỉ để làm rõ, là './buildxml.ps1' lệnh thực tế đang được gọi là? –
@ ai đó hoặc khác buildxml.ps1 là một tập tin kịch bản PowerShell và thực thi (nếu đó là những gì bạn có nghĩa là bằng lệnh) là '' C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe''. Tất cả các mục trong danh sách theo sau là các tham số được truyền cho tệp thực thi này. –