You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:50:16