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