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

PowerShell foreach循环中ArrayList.Add意外输出索引问题

解决PowerShell中ArrayList.Add自动输出索引的问题

你遇到的问题根源是:PowerShell会自动输出.NET方法的返回值,而[System.Collections.ArrayList]的Add()方法本身会返回新添加元素的索引位置,所以每次调用这个方法时,索引都会被打印到控制台——这和你最后有没有Write-Output语句无关。

几种解决办法

  • 方法1:用[void]抑制返回值输出
    在Add()方法前加上[void]前缀,强制忽略方法的返回值:

    [void]$vars_array.Add($var)
    
  • 方法2:将返回值赋值给$null
    把Add()的结果直接丢给$null,同样不会产生输出:

    $null = $vars_array.Add($var)
    
  • 方法3:通过管道输出到Out-Null
    用管道将方法返回值传递给Out-Null命令,抑制输出:

    $vars_array.Add($var) | Out-Null
    

修改后的完整代码示例

# $enumfilepath is the path of the file containing the variables
$enumfile = Get-Content $enumfilepath
[System.Collections.ArrayList]$vars_array = @()

foreach ($line in $enumfile) {
        $line = $line.Trim()
        if (($line -like "*=*") -and !($line -like "//*")) {
                $var, $vars_ref = $line -split "="
                [void]$vars_array.Add($var)  # 抑制索引输出
        }
}
Write-Output "nº of total vars $(@($vars_array).Length)"

内容的提问来源于stack exchange,提问作者Jon A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:01:30