重定向命令输出,等待用户输入

时间:2019-09-16 19:25:43

标签: powershell user-input io-redirection

是否可以重定向等待用户输入的命令输出(有或没有重定向该输入),并且事先不知道将请求用户输入?

即当使用powerhell.exe运行此命令时:

chkdsk C: /F /R | Tee -var test

输出为:

CHKDSK ne peut pas s'exécuter parce que le volume est utilisé
par un autre processus. Voulez-vous que ce volume soit

代替:

CHKDSK ne peut pas s’exécuter parce que le volume est utilisé
par un autre processus. Voulez-vous que ce volume soit
vérifié au prochain redémarrage du système ? (O/N)

使用cmd.exe,将输出重定向到文件时,它只是在等待用户输入而没有显示任何内容。

1 个答案:

答案 0 :(得分:1)

从交互式控制台应用程序捕获输出是有问题的。

首先是由控制台应用程序的一般性质引起的:提示用户输入内容的行通常不会在末尾添加换行符,因为它们依赖于来自用户 input的回显换行符完成该行。您将在输出文件中看到的效果是,带有用户输入的行将与下一行合并。

第二,PowerShell将在管道中进行基于行的缓冲,因此直到输入之后,您才会看到任何部分行的输出(提示用户输入的行)。就我所知,PowerShell无法提供一种配置方式,您对此无能为力。

成绩单

最好的解决方案是使用transcript。它同时捕获stdinstdout,以便文件看起来像您的屏幕。

要将成绩单存储到output.txt

Start-Transcript output.txt
chkdsk C: /F /R
Stop-Transcript