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

C# 使用Wmi win32_进程执行远程进程-获取进程的标准输出,c#,wmi,C#,Wmi,嗨,我能够使用Wmi执行远程进程,并且能够获取进程的返回值和进程Id。是否有任何方法可以获取Wmi启动的进程的输出。如果我启动一个exe,在控制台中打印一些东西,我就可以使用这个Api获取这些值。感谢您的帮助 必须将输出重定向到文件,然后通过网络读取该文件 使用CMD.EXE/S/C选项执行此操作 运行Program.exe的命令行示例: CMD.EXE /S /C " "c:\path\to\program.exe" "argument1" "argument2" > "c:\path

嗨,我能够使用Wmi执行远程进程,并且能够获取进程的返回值和进程Id。是否有任何方法可以获取Wmi启动的进程的输出。如果我启动一个exe,在控制台中打印一些东西,我就可以使用这个Api获取这些值。感谢您的帮助

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

使用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
以读取stdout结果


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

您可以使用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

任何试图从WMI
Win32\u进程获取输出的其他人的注意事项
-注意上面命令中的额外引号!这些都非常重要。有关报价处理的详细信息,请阅读
cmd.exe/?