PowerShell脚本中ArrayList交互式菜单为何延迟至脚本结束显示?
解决PowerShell交互式脚本中ArrayList菜单延迟显示问题
你的问题根源在于PowerShell的输出缓冲机制:直接输出$menuarray这类对象时,PowerShell会将其存入输出流,而后续的Read-Host交互式命令会触发输出流缓冲,导致菜单内容直到脚本执行完毕才会统一显示。
修复方案
将直接输出$menuarray的操作,改为通过Out-Host强制实时输出到控制台,确保用户在输入选择前就能看到菜单内容。
修改后的完整代码:
[System.Collections.ArrayList] $menuarray = @() # 初始化空数组 $somelist1 = Get-SomeDataHere | ConvertFrom-Json $init = 0 while ($init -ne $somelist1.items.Count) { $menuarray.add([PSCustomObject]@{ Number = $init somenamedthing = $somelist1.items.metadata.name[$init] someaddress = $somelist1.items.status.someaddress[$init] }) > $null $init = $init + 1 } Write-Host "Printing Array" # 关键改动:用Out-Host强制实时输出菜单 $menuarray | Out-Host $menuselection = -1 While($menuselection -notin 0..$somelist1.items.count) # 循环要求用户输入有效选项 { Write-Host "Specify number of items you would like to interact with:" $menuselection = Read-Host } Write-Host "You picked $menuselection with associated address of:" $somelist1.items.status.someaddress[$menuselection]
额外优化建议
如果希望菜单排版更规整,可以结合格式化命令调整输出样式:
$menuarray | Format-Table Number, somenamedthing, someaddress -AutoSize | Out-Host
该命令会自动适配列宽,让菜单内容更易阅读。
内容的提问来源于stack exchange,提问作者aterrell4
相关产品推荐
相关产品推荐

