如何从exe(c#)发送特定的输出值到Power Shell脚本

时间:2018-06-20 00:02:13

标签: c# visual-studio powershell tfsbuild azure-pipelines

现在我正在创建一个vsts构建任务,我的方法是:

  • 运行powershell脚本
  • 在Powershell中,我将运行exe或dll
  • 然后使用输出提取值。

我的问题是:

  • 我做了很多打印工作,我将在最后打印我的值并添加 一些定界符以便能够提取它
  • 但是我觉得这是一个糟糕的设计,我不是Powershell脚本专家,但是
  • 如果有人有更好的设计,请告诉我

不确定脚本代码是否有帮助,但这是

$psi = New-object System.Diagnostics.ProcessStartInfo 
$psi.CreateNoWindow = $true 
$psi.UseShellExecute = $false 
$psi.RedirectStandardOutput = $true 
$psi.RedirectStandardError = $true 
$psi.FileName = "app.exe"
$process = New-Object System.Diagnostics.Process 
$process.StartInfo = $psi 
[void]$process.Start()
$output = $process.StandardOutput.ReadToEnd() 
$process.WaitForExit() 
then process the output

2 个答案:

答案 0 :(得分:2)

PowerShell内置了以命令形式运行可执行文件的功能。要运行app.exe并捕获其输出,您要做的就是

$output = app.exe

PowerShell负责所有基础流程管理。

答案 1 :(得分:1)

如果您想要更复杂的东西,可以直接与程序集互操作,而不是使用EXE

[System.Reflection.Assembly]::LoadFile("E:\MyClass.dll")
$MyCompObj = New-Object MyClass.Student

请参阅:
how to call my dll and use it in powershell script
https://winscp.net/eng/docs/library_powershell