小编Xav*_*eña的帖子

使用 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."
Run Code Online (Sandbox Code Playgroud)

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

  1. 在新的分离线程中打开进程(= 看到打印出的“已完成”+ 看到 PING.EXE 在进程列表中处于活动状态 + CTRL+C 未杀死 PING.exe)[确定]
  2. 收集 ping 进度(即:重定向标准输入和标准错误)到logfile.txt [FAILS] <=此解决方案似乎不适用于我的测试,logfile.txt保持在 0 字节

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

ASPNETCORE_ENVIRONMENT=Production ASPNETCORE_URLS=http://*:5000 dotnet run > ${LOGFILE_PATH}.txt 2>&1 &
Run Code Online (Sandbox Code Playgroud)

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

powershell redirection cmd.exe

6
推荐指数
1
解决办法
7144
查看次数

标签 统计

cmd.exe ×1

powershell ×1

redirection ×1