我有一個python腳本,它基於關閉通過休息獲得的輸入來構建命令。 這些命令在打印出來並複製並粘貼到PowerShell時起作用。 我的問題是如何使它實際執行命令?用python編寫命令並在powershell中執行
到目前爲止,我已經嘗試寫命令在同一個目錄中的文件並運行,像這樣:
import subprocess, sys
p = subprocess.Popen(["powershell.exe", "test.ps1"],stdout=sys.stdout)
p.communicate()
但我得到一個錯誤:
Traceback (most recent call last): File "C:/Users/pschaefer/src/python/executePowerShell.py", line 2, in p = subprocess.Popen(["powershell.exe", "test.ps1"],stdout=sys.stdout) File "C:\Python27\lib\subprocess.py", line 703, in init errread, errwrite), to_close = self._get_handles(stdin, stdout, stderr) File "C:\Python27\lib\subprocess.py", line 850, in _get_handles c2pwrite = msvcrt.get_osfhandle(stdout.fileno()) UnsupportedOperation: fileno
更新
刪除,stdout=sys.stdout1
擺脫了以前的錯誤,現在我看到
test.ps1 cannot be loaded because running \r\nscripts is disabled on this system.
我試過將命令切換到".\\test.ps1 Set-ExecutionPolicy -ExecutionPolicy unrestricted"
,仍然有問題。
另外,是否有可能將這些命令構建爲字符串並逐個執行,而不是創建一個.ps1文件?對任何能夠解決這個問題的人都非常讚賞!
你不需要'stdout = sys.stdout'它是默認的。你用'os.system()'試過了嗎?或'subprocess.check_call()'? –
啊刪除'stdout = sys.stdout'停止了我在python shell中看到的錯誤,我簡單地看到了什麼看起來是一個PowerShell窗口彈出式窗口,但是我不知道它是什麼。關於如何阻止它關閉,我可以添加到ps1文件的任何想法?對不起,這裏的powershell –
不要從你的IDE運行它,從標準控制檯運行它 –