如何在PowerShell数组存储值?多池备份模块信息存储问题求助
解决PowerShell收集所有池backupModules信息的问题
你遇到的问题很典型——每次循环里直接给$b赋值,会把之前的结果完全覆盖,所以最后只能看到最后一个池的数据。咱们只需要把$b改成数组,每次循环把新的结果追加进去就行,具体调整如下:
修改后的完整代码
# 初始化空数组来存储所有池的backupModules信息 $b = @() $pools= Get-Content -Path "F:\Scripts\Pools.txt" foreach ($pool in $pools){ $a = Get-CsBackupServiceStatus -PoolFqdn "$pool" # 把当前池的backupModules追加到数组里,而不是覆盖 $b += $a.backupModules # 如果你需要同时保留池名称和对应信息,可以用自定义对象,比如: # $b += [PSCustomObject]@{ # PoolName = $pool # BackupModules = $a.backupModules # } } # 现在输出$b就能看到所有池的backupModules数据了 $b
关键说明
- 先通过
$b = @()创建一个空数组,这是PowerShell里定义数组的标准方式。 - 循环里用
+=操作符,把每个池的backupModules对象添加到数组末尾,这样就不会覆盖之前的数据了。 - 注释里的额外方案:如果需要把池名称和对应的备份模块信息关联起来,可以创建自定义对象存储,这样后续查看数据时能清楚知道每条信息属于哪个池,实用性更强。
内容的提问来源于stack exchange,提问作者Anshu Keserwani
相关产品推荐
相关产品推荐

