6

嗨,我能够使用 Wmi 执行远程进程,并且能够获取进程的返回值和进程 ID。有什么方法可以获得由 Wmi 启动的进程的输出。例如。如果我启动一个在控制台中打印某些内容的 exe,我将能够使用此 Api 获取这些值。任何帮助表示赞赏。

4

2 回答 2

4

您必须将输出重定向到一个文件,然后通过网络读取该文件。

使用 CMD.EXE /S /C 选项来执行此操作。

要运行的示例命令行Program.exe

CMD.EXE /S /C " "c:\path\to\program.exe" "argument1" "argument2"  > "c:\path\to\stdout.txt" 2> "c:\path\to\stderr.txt" "

然后像这样连接到服务器\\servername\c$\path\to\stdout.txt以读取标准输出结果。

注意:请注意要运行的命令周围的额外引号。这些对于确保正确解释命令行是必要的。

于 2012-04-25T13:11:49.763 回答
0

您可以使用psexec执行 program.exe 并通过管道获取标准输出

p = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while p.poll() is None:
    line = p.stdout.readline()
    line = line.strip().decode('gbk')
    if line:
        print('Subprogram output: [{}]'.format(line))
if p.returncode == 0:
    print('Subprogram success')
    return True
else:
    print('Subprogram failed')
    return False
于 2019-04-04T07:59:51.613 回答