PowerShell:Write-Host输出管道至Out-Host -Paging分页失效如何解决
问题原因
Write-Host的输出是直接发送到控制台宿主,不会进入PowerShell的管道流。你的代码里,子表达式$(...)中的Write-Host调用已经直接把内容打印到屏幕了,管道后的Out-Host -Paging根本没接收到任何输入,所以分页功能完全没生效。
解决方案
把Write-Host替换为直接输出字符串(或Write-Output,两者效果一致),这样内容会进入管道,Out-Host -Paging就能捕获并实现逐屏显示:
$queue = Find-FilesToUpload -server $server | Sort-Object -property lastWriteTime $( "`n{0,-38} {1,-25} {2,7}" -f "Name", "Last Written", "Size" "------------------------------------------------------------------------" foreach ($file in $queue) { "{0,-38} {1,-23} {2,9:n0}" -f $file.name, $file.lastWriteTime, $file.length } ) | Out-Host -Paging
如果需要保留颜色输出(比如你之前用了Write-Host的颜色参数),可以用ANSI转义序列给字符串添加颜色,再输出到管道,Out-Host -Paging会正常解析这些颜色:
$queue = Find-FilesToUpload -server $server | Sort-Object -property lastWriteTime $( # 给表头添加蓝色 "`n`e[34m{0,-38} {1,-25} {2,7}`e[0m" -f "Name", "Last Written", "Size" "------------------------------------------------------------------------" foreach ($file in $queue) { "{0,-38} {1,-23} {2,9:n0}" -f $file.name, $file.lastWriteTime, $file.length } ) | Out-Host -Paging
内容的提问来源于stack exchange,提问作者aksarben
相关产品推荐
相关产品推荐

