2013-01-23 32 views
0

我有一个powershell脚本,调用可执行文件来执行一些数据处理,脚本需要从可执行文件中检索结果。想知道我有什么选择,我在板上进行这个进程间通信从.Net EXE返回数据到Powershell

  • 可以让我的可执行文件直接返回一个字符串数组或对象(我不认为这是可能的)?
  • exe文件设置和powershell脚本读取的易变变量?
  • 菌种的可执行文件中的临时.Net远程服务器,并有PowerShell的平认为服务器得到的结果
+0

管道是为进程间通信而设计的,尽管我不知道powershell脚本是否可以进行这种通信 –

+0

另请参阅此主题:http://stackoverflow.com/questions/8506404/capture-return-value -of-an-net-exe-in-an-bat-file –

+0

加上这个:http://social.microsoft.com/Forums/sl-SI/Offtopic/thread/691128c5-72a5-48c1-971e-50c6bccd8165 Man ,你没有长时间的Google解决方案,对吗?这两个结果都出现在第一个谷歌页面下的“.net exe结果”:) –

回答

1

您可以将EXE的结果吐出到XML或CSV格式的标准输出中,并让PowerShell将其转换为[xml]或ConvertFrom-Csv。

0

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

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

(也可以使用理论上标准误差,但是这将是滥用它对于没有附加功能)

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

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

很明显,可以使用任何可以编码为字符串的数据格式。调用脚本也可以将整个输出积累到一个单一的值,并一次处理所有的输出。