我有一个函数,我在其中调用一个应用程序&
操作员。该应用程序生成几行命令行输出,下载一些文件,并返回一个字符串:
& "app.exe" | Out-Host
$var = ...
return $var
看来,控制台上出现了由app.exe
仅在那之后app.exe
终止。用户没有任何实时信息正在下载哪个文件。有没有办法在时持续更新控制台app.exe
在跑?
许多控制台应用程序会缓冲其输出流(如果已知会重定向)。实际上,这是 C 库的标准行为。所以,缓冲是在app.exe
,因为重定向,但不是由Out-Host
.
解决方案是不重定向输出app.exe
,即使外部命令重定向。因为你应该知道exactPowerShell 执行时的条件not重定向控制台应用程序的输出流,并将其直接链接到自己的输出流,这将是交互式控制台PowerShell.exe
会议。条件是:
- 命令是管道中的最后一项。
- 命令通过管道传送到
Out-Default
.
解决方案是将命令包装到脚本块中,并将该脚本块通过管道传输到Out-Default
:
& { & "app.exe" } | Out-Default
另一种解决方案是使用Start-Process
cmdlet 与-NoNewWindow
and -Wait
参数:
Start-Process "app.exe" -NoNewWindow -Wait
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)