使用Wmi win32_Process进行远程进程执行 - 获取进程的标准输出

时间:2012-04-25 12:21:09

标签: c# wmi

您好我能够使用Wmi执行远程进程,并且能够获得进程的返回值和进程ID。有没有办法获得由Wmi开始的过程输出。例如。如果我启动一个exe在控制台中打印的东西,我将能够使用此Api获取这些值。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分: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之类的服务器以读取标准输出结果。

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

答案 1 :(得分: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