PowerShell 5.1循环中Read-Host输入重复输出到控制台如何解决
问题原因
你遇到的输入内容重复输出不属于异常,也和输入缓冲区无关,这是PowerShell的默认返回机制导致的正常表现:Read-Host执行后会将用户输入的内容作为返回值输出,你的函数没有对该返回值做捕获或丢弃处理,未被接收的返回值会自动打印到控制台,最终就出现了输入内容重复显示的效果。
解决方案
你可以任选以下方式处理Read-Host的返回值,消除多余输出:
- 方案1:将返回值赋值给变量(适合需要后续使用输入内容的场景)
function Test-Read{ for ($num = 1 ; $num -le 3 ; $num++){ $userInput = Read-Host -Prompt "Test Prompt" # 后续可直接使用$userInput处理输入的内容 } }
- 方案2:直接丢弃返回值(适合不需要保留输入内容的场景),三种常见写法效果一致:
# 写法1:管道传输到Out-Null Read-Host -Prompt "Test Prompt" | Out-Null # 写法2:赋值给$null $null = Read-Host -Prompt "Test Prompt" # 写法3:强转为void类型 [void](Read-Host -Prompt "Test Prompt")
修改后运行函数,只会显示提示符对应的行,不会再重复打印你输入的内容。
内容的提问来源于stack exchange,提问作者Aurora
相关产品推荐
相关产品推荐

