我有一个 powershell 脚本,它调用一个可执行文件来进行一些数据处理,并且该脚本需要从可执行文件中检索结果。想知道我对这种进程间通信有哪些选择
- 我可以让可执行文件直接返回一个字符串数组或一个对象吗(我认为这是不可能的)?
- exe文件设置和powershell脚本读取的可变变量?
- 在可执行文件中生成一个临时的 .Net 远程处理服务器,并让 powershell ping 该服务器以获取结果
我有一个 powershell 脚本,它调用一个可执行文件来进行一些数据处理,并且该脚本需要从可执行文件中检索结果。想知道我对这种进程间通信有哪些选择
您可以将 EXE 中的结果以 XML 或 CSV 格式输出到标准输出,然后让 PowerShell 通过强制转换为 [xml] 或 ConvertFrom-Csv 来处理它。
可执行文件是用 .NET 编写的,这没有什么区别:它将是一个单独的进程,因此只有将数据从一个进程传递到另一个进程的机制(两者都没有特定支持)可用:
(理论上也可以使用标准错误,但这会滥用它而没有额外的功能。)
标准输出方法最简单:在 exe 中使用Console.WriteLine
(这是 的快捷方式Console.Out.WriteLine
),然后在 PowerShell 中解析字符串:
MyExe | Foreach-Object {
# Do something with $_ which will be a string
}
显然,可以使用任何可以编码为字符串的数据格式。此外,调用脚本可以将整个输出累积成一个值并一次处理它。