【发布时间】:2022-01-07 20:13:05
【问题描述】:
我想要做的是运行 wsl 进程,让它的 stdout 和 stderr 通道打印到控制台,就好像它们正常执行一样,如果 stderr 和打印输出为 1:1,则在 powershell 中抛出错误原创。
但是我收到了这个缩进错误:
当运行wsl.exe echo a 1`>`&2`;echo b 2>&1 两次时
Powershell 的控制台缩进过多。
有时甚至会变得非常糟糕,以至于尽管没有缩进,但 Write-Host 输出仍被缩进。wsl.exe echo a 1`>`&2`;echo b 2>&1
cmd.exe /c echo a 1`>`&2`&echo b 2>&1
有时这也会在运行上面的很多 wsl 命令后发生
此外,当它像这样卡住时,它会感染其他 Write-Error 调用:
$PSVersionTable
名称 |价值
--|-----
PS版本|5.1.22000.282
PSEdition|桌面版
PSCompatibleVersions|{1.0, 2.0, 3.0, 4.0...}
构建版本|10.0.22000.282
CLRVersion|4.0.30319.42000
WSManStackVersion|3.0
PSRemotingProtocolVersion|2.3
序列化版本| 1.1.0.1
编辑:
【问题讨论】:
-
这看起来像是行尾问题; powershell 仍然停留在 linux 模式下 \n 而不是 dos 模式 \r\n
-
看起来你有一个标签视图;您使用的是标准的 Windows 控制台,还是类似 Windows 终端的东西?如果不是,您是否在控制台中得到相同的行为?
-
即便如此,它可能也无济于事,因为您仍然在最后一个屏幕中遇到问题,只有
write-error -
newline 并不是我想要的样子,它看起来只影响文本编写者用来结束一行的内容,而不影响从
"`n"到'\r\n'的翻译。跨度> -
但是您最好的选择可能是将其作为错误发布到控制台中
标签: powershell stdout windows-subsystem-for-linux indentation stderr