使用 Start-Process 通过 START /B 启动 CMD 时输出重定向失败

使用 Start-Process 通过 START /B 启动 CMD 时输出重定向失败

这是我的test.ps1

Start-Process -FilePath 'CMD.EXE' -NoNewWindow -ArgumentList '/C START /B PING.EXE google.com -t > logfile.txt 2>&1'
echo "Finished."

该测试是向 Google 进行无限 ping,这对于我需要检查的条件来说是一个很好的测试:

  1. 在新的分离线程中打开该进程(= 查看打印出的‘完成’ + 查看进程列表中的 PING.EXE 是否还活着 + CTRL+C 不会终止 PING.exe)[好的]
  2. 收集 ping 进度(即:重定向标准输入和标准错误)到logfile.txt [失败]<=此解决方案在我的测试中似乎不起作用,logfile.txt停留在 0 字节

这是一个复杂的解决方案,尽管我的最终目标相对简单。我最终想要的是在 powershell 中重现这个 linux cmd:

ASPNETCORE_ENVIRONMENT=Production ASPNETCORE_URLS=http://*:5000 dotnet run > ${LOGFILE_PATH}.txt 2>&1 &

Windows 中的困难部分似乎是“真的分离进程”。START /B是我发现的唯一真正能做到这一点的 Windows 功能。但是我遇到了“输出重定向”问题。由于我需要在 .ps1 文件中使用它,因此我需要将其包装在 中Start-Process

答案1

您可能正在寻找以下一项或多项 开始进程 参数:

-重定向标准输出

指定文件。此 cmdlet 将进程生成的输出发送到您指定的文件。输入路径和文件名。默认情况下,输出显示在控制台中。

没有新窗口

在当前控制台窗口中启动新进程。默认情况下,PowerShell 会打开一个新窗口。

相关内容