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
相关产品推荐
相关产品推荐

