猿问

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

现在我正在创建一个 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


万千封印
浏览 190回答 2
2回答

慕莱坞森

PowerShell 内置了将可执行文件作为命令运行的功能。要运行app.exe并捕获它的输出,您所要做的就是$output = app.exePowerShell 负责所有底层进程管理。

蝴蝶刀刀

如果你想要更复杂的东西,你可以直接与程序集互操作,而不是使用 EXE[System.Reflection.Assembly]::LoadFile("E:\MyClass.dll")$MyCompObj = New-Object MyClass.Student
随时随地看视频慕课网APP
我要回答