显式调用程序创建新窗口,并且不起作用

时间:2018-06-20 14:37:22

标签: powershell

我需要获取Maven二进制文件的版本,但是使用对该程序的显式调用会带来一个辅助窗口,并且不起作用。

在这种情况下,它会产生一个新窗口并且什么也不返回:

# spawns a new window with an error
# wanted to be more explicit in my call to the program
Write-Host "Maven..."
$x = & 'C:\path\to\maven\bin\mvn' '-version' 2>&1
Write-Host "out: "$x

在这种情况下,它可以按预期工作,但是我必须假定已配置环境变量:

# works as intended
# implies path is set
Write-Host "Maven..."
$x = & 'mvn' '-version' 2>&1
Write-Host "out: "$x

为什么会这样?理想情况下,我希望第一种方法有效。

编辑#1

使用开始过程(来自Capturing standard out and error with Start-Process)尝试以下操作

Try {
    $pinfo = New-Object System.Diagnostics.ProcessStartInfo
    $pinfo.FileName = "C:\path\to\maven\bin\mvn"
    $pinfo.RedirectStandardError = $true
    $pinfo.RedirectStandardOutput = $true
    $pinfo.UseShellExecute = $false
    $pinfo.Arguments = "-version"
    $p = New-Object System.Diagnostics.Process
    $p.StartInfo = $pinfo
    $p.Start() | Out-Null
    $stdout = $p.StandardOutput.ReadToEnd()
    #$stderr = $p.StandardError.ReadToEnd()
    #$exitCode = $p.ExitCode  
    $p.WaitForExit()

    Write-host "out: "$stdout
}
Catch {
    Write-Host  $_.Exception.Message
}

我收到此错误:

  

使用“ 0”参数调用“开始”的异常:“指定的   可执行文件不是此操作系统平台上的有效应用程序。”

0 个答案:

没有答案