首页 > 解决方案 > 无法使用 python 脚本从 powershell 命令获取输出

问题描述

我有一个带有 OutFile 的 powershell 命令。当我直接从 powershell 控制台运行时,它工作得很好。它在文本文件中捕获输出。但是当我尝试使用 python 脚本运行相同的命令时,它没有给出任何错误,但它正在生成一个空文本文件。我能得到这个问题的解决方案吗?我正在使用子流程方法。

代码是这样的:

import subprocess,;
process=subprocess.run(["powershell", "-ExecutionPolicy", "Unrestricted", "<Powershell command> | Out-File C:\PythonScripts\out.txt"],stdout=subprocess.PIPE, text=True);
print(process.stdout)

标签: pythonpowershell

解决方案


如果你想捕捉stdout,你必须写一些东西来stdout。管道Tee-Object将同时写入stdout和文件:

import subprocess
process=subprocess.run(["powershell", "-ExecutionPolicy", "Bypass", r"'Hello World!' | Tee-Object -FilePath C:\PythonScripts\out.txt"],stdout=subprocess.PIPE);
print(process.stdout)

输出:

b'Hello World!\r\n'

还有一个包含“Hello World!”的文件。

如果您不需要该文件,只需写入stdout

import subprocess
process=subprocess.run(["powershell", "-ExecutionPolicy", "Bypass", r"'Hello World!'"],stdout=subprocess.PIPE);
print(process.stdout)

输出:

b'Hello World!\r\n'

推荐阅读