如何在循环中创建名称取自CSV的PowerShell ArrayList?
PowerShell 动态创建指定名称的 ArrayList 方法
方法一:沿用 New-Variable 创建指定类型变量
直接将变量值替换为 [System.Collections.ArrayList] 的实例,就能创建指定类型的动态数组,和你原本的代码逻辑兼容:
$TestServers = "TestServers" # 创建 ArrayList 类型的变量 New-Variable -Name "Array_$TestServers" -Value ([System.Collections.ArrayList]::new()) # 验证变量类型(可选) (Get-Variable -Name "Array_$TestServers").Value.GetType().FullName
执行后,Array_TestServers 就是标准的 System.Collections.ArrayList,支持 Add、Remove 等专属方法。
方法二:用哈希表管理(更推荐)
如果是从CSV批量读取名称创建,用哈希表存储所有ArrayList会更易维护,避免动态变量带来的命名冲突或管理混乱:
假设你的CSV文件(比如 server_groups.csv)结构如下:
ServerGroupName WebServers DBServers AppServers
对应的PowerShell代码:
# 初始化哈希表,用于存储所有ArrayList $serverArrayStore = @{} # 读取CSV文件中的分组名称 $serverGroups = Import-Csv -Path "server_groups.csv" foreach ($group in $serverGroups) { $arrayKey = "Array_$($group.ServerGroupName)" # 创建ArrayList并添加到哈希表 $serverArrayStore[$arrayKey] = [System.Collections.ArrayList]::new() } # 使用示例:往指定ArrayList添加元素 $serverArrayStore["Array_WebServers"].Add("web01") | Out-Null $serverArrayStore["Array_WebServers"].Add("web02") | Out-Null # 查看指定ArrayList内容 $serverArrayStore["Array_WebServers"]
这种方式可以通过哈希表的键直接访问对应的ArrayList,批量操作和后续维护都更便捷。
内容的提问来源于stack exchange,提问作者Sean21735
相关产品推荐
相关产品推荐

