PowerShell中Read-Host如何实现读取输入不换行与前序输出同行
问题描述
要实现的核心交互逻辑:
- 打印提示文本
Enter username:且不自动换行 - 读取用户输入的用户名内容
- 如果用户未输入任何内容直接按回车确认,在同一行提示文本末尾输出
None,最终呈现效果为Enter username: None
初始实现代码如下,因PowerShell原生Read-Host不支持-NoNewLine参数,用户按回车确认时会强制插入换行,无法达到预期的同行输出效果:
Write-Host "Enter username: " -NoNewLine $username = Read-Host -NoNewLine if ($username -eq "") { Write-Host "None" }
实现方法
直接调用.NET控制台类的底层读取方法替代原生Read-Host即可,该方法不会在用户空输入回车时强制插入换行:
Write-Host "Enter username: " -NoNewLine $username = [Console]::ReadLine() if ([string]::IsNullOrEmpty($username)) { Write-Host "None" }
- 上述代码在用户空输入回车时,会直接在提示文本后输出
None,完全匹配预期效果 - 如果需要把仅输入空格、制表符等空白字符的场景也判定为空输入,可以把判断条件替换为
[string]::IsNullOrWhiteSpace($username)
内容的提问来源于stack exchange,提问作者Styris
相关产品推荐
相关产品推荐

