Start-Process重定向输出为$ null

时间:2018-03-20 02:27:35

标签: powershell

我正在开始这样的新流程:

import React from 'react'

const Home = () => (
  <div>
    <h1>Welcome to the Tornadoes Website!</h1><p>{this.props.num}</p>
  </div>
)

export default Home

我的可执行文件打印到控制台很多。有可能不显示我的exe输出吗?

我尝试添加$p = Start-Process -FilePath $pathToExe -ArgumentList $argumentList -NoNewWindow -PassThru -Wait if ($p.ExitCode -ne 0) { Write-Host = "Failed..." return } 标记,但由于-RedirectStandardOutput $null不接受RedirectStandardOutput,因此无效。我还尝试将null添加到| Out-Null函数调用中 - 没有用。是否可以隐藏我在Start-Process中调用的exe的输出?

2 个答案:

答案 0 :(得分:2)

您在同一窗口中调用同步-Wait)和 -NoNewWindow)。

这种执行完全不需要Start-Process - 只需使用调用操作符&直接调用可执行文件 ,它允许您:

  • 使用标准重定向技术来静音输出
  • 并检查退出代码的自动变量$LASTEXITCODE
& $pathToExe $argumentList *> $null
if ($LASTEXITCODE -ne 0) {
  Write-Warning "Failed..."
  return
}

答案 1 :(得分:2)

使用呼叫运算符&| Out-Null是更受欢迎的选择,但可以丢弃Start-Process的标准输出。

显然,NUL in Windows seems to be a virtual path in any folder-RedirectStandardOutput需要非空路径,因此不接受$null参数,但"NUL"是(或任何以\NUL结尾的路径)。

在此示例中,输出被禁止,并且文件未创建

> Start-Process -Wait -NoNewWindow ping localhost -RedirectStandardOutput ".\NUL" ; Test-Path ".\NUL"
False
> Start-Process -Wait -NoNewWindow ping localhost -RedirectStandardOutput ".\stdout.txt" ; Test-Path ".\stdout.txt"
True

-RedirectStandardOutput "NUL"也可以。