Python 子进程与 Powershell 和 Pipeline Operators 通信

问题描述 投票:0回答:1

我正在寻找我的 Windows 计算机上所有 chrome 实例的启动时间。在 powershell 中,我可以通过

get-process chrome | Format-Table StartTime
来完成此操作。

我想在 python 脚本中执行此操作并使用其输出。我的代码如下:

import subprocess
call = "powershell get-process chrome | powershell Format-Table ProcessName, StartTime"
process = subprocess.Popen(call, stdout=subprocess.PIPE, stderr=None, shell=True)
outputs = process.communicate()
print(outputs)

即使打开了 chrome,此命令的输出也是

['']

观察结果

如果我将

call
更改为

call = "powershell get-process chrome"

这将按预期输出表格。我认为该错误与管道运算符有关。

python powershell subprocess
1个回答
0
投票

您需要转义管道运算符,才能使其在子进程中与 powershell 良好配合。将

call
更改为

call = "powershell get-process chrome ^| Format-Table ProcessName, StartTime"

解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.