使用python获取powershell resu

2024-10-01 07:28:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想设计一个GUI程序来回调一些powershell的命令结果。 问题是当选择了cb_option_a并单击executebotton时,调用powershell并运行命令就成功了。在

但文本框没有成功回调的结果:

CalledProcessError: Command 'get-itemproperty
HKLM:\SOFTWARE\Microsoft\InetStp\  | select setupstring,versionstring'
returned non-zero exit status 255

cmd命令的另一个选项,如ipconfig是成功回调。我该怎么解决呢? 课程代码:

^{pr2}$

Tags: 命令程序getguisoftwarecommandmicrosoftoption
1条回答
网友
1楼 · 发布于 2024-10-01 07:28:58

那条线

subprocess.call(["powershell.exe", command_gen()])

无法工作,因为command_gen()输出被视为唯一的参数,实际上它是多个参数。所以subprocess.call引用了参数,而不是您想要的。在

此外,您使用的是|,因此您必须激活shell=True

那条线

^{pr2}$

不会工作,因为您没有给它加前缀powershell.exe(另外:TRUE应该是True

无论如何,subprocess行是多余的:

output = subprocess.call(["powershell.exe", command_gen()])
output = subprocess.check_output(callpowershell, stderr=subprocess.STDOUT, shell=True)

您只需要执行一个调用,检索输出:

def runpowershellcommand(callpowershell):
    output = subprocess.check_output("powershell.exe "+callpowershell, stderr=subprocess.STDOUT, shell=True)

这是可行的,因为参数中没有空格。在

旁白:这里要小心:

    command = "get-itemproperty HKLM:\SOFTWARE\Microsoft\InetStp\  | select setupstring,versionstring"

有用,但你很幸运。它应该以原始字符串作为前缀,以避免python解释转义序列:

   command = r"get-itemproperty HKLM:\SOFTWARE\Microsoft\InetStp\  | select setupstring,versionstring"

相关问题 更多 >