0

我有一个 powershell 脚本,它调用一个可执行文件来进行一些数据处理,并且该脚本需要从可执行文件中检索结果。想知道我对这种进程间通信有哪些选择

  • 我可以让可执行文件直接返回一个字符串数组或一个对象吗(我认为这是不可能的)?
  • exe文件设置和powershell脚本读取的可变变量?
  • 在可执行文件中生成一个临时的 .Net 远程处理服务器,并让 powershell ping 该服务器以获取结果
4

2 回答 2

1

您可以将 EXE 中的结果以 XML 或 CSV 格式输出到标准输出,然后让 PowerShell 通过强制转换为 [xml] 或 ConvertFrom-Csv 来处理它。

于 2013-01-24T16:33:00.347 回答
0

可执行文件是用 .NET 编写的,这没有什么区别:它将是一个单独的进程,因此只有将数据从一个进程传递到另一个进程的机制(两者都没有特定支持可用:

  • exe的返回值:一个整数。
  • exe 的标准输出:一个字符串(通常通过换行符分割成单独的行,因此被视为一个数组)。

(理论上也可以使用标准错误,但这会滥用它而没有额外的功能。)

标准输出方法最简单:在 exe 中使用Console.WriteLine(这是 的快捷方式Console.Out.WriteLine),然后在 PowerShell 中解析字符串:

MyExe | Foreach-Object {
  # Do something with $_ which will be a string
}

显然,可以使用任何可以编码为字符串的数据格式。此外,调用脚本可以将整个输出累积成一个值并一次处理它。

于 2013-01-24T10:55:49.987 回答