【问题标题】:how to send specific output value from exe (c#) to power shell script如何将特定输出值从 exe (c#) 发送到 powershell 脚本
【发布时间】:2018-11-29 00:14:22
【问题描述】:

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

【问题讨论】:

  • 我投票结束这个问题,因为“我的代码有效,但设计可以​​更好吗?”对于 StackOverflow 来说是题外话,对于 codereview.stackexchange.com 来说是题外话

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


【解决方案1】:

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

$output = app.exe

PowerShell 负责所有底层进程管理。

【讨论】:

    【解决方案2】:

    如果你想要更复杂的东西,你可以直接与程序集互操作,而不是使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 2021-02-12
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多