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

数组重复VMHost元素比对需求:检测Paths/Devices属性差异

重复VMHost记录的属性差异检测脚本实现

需求说明

  • 识别数组中VMHost值重复的记录
  • 对同一VMHost的多条记录,比对Paths、Devices等指定属性
  • 若属性值存在差异,输出明确的提示信息

输入示例数组

$hostRecords = @(
    @{VMHost='host1'; HBA='vmhba1'; Targets=1; Devices=2; Paths=5},
    @{VMHost='host1'; HBA='vmhba2'; Targets=2; Devices=3; Paths=6},
    @{VMHost='host2'; HBA='vmhba1'; Targets=2; Devices=3; Paths=6},
    @{VMHost='host2'; HBA='vmhba2'; Targets=2; Devices=3; Paths=6},
    @{VMHost='host3'; HBA='vmhba1'; Targets=2; Devices=3; Paths=6},
    @{VMHost='host3'; HBA='vmhba2'; Targets=2; Devices=3; Paths=6}
)

实现脚本

# 定义需要比对的属性列表
$propertiesToCheck = @('Paths', 'Devices', 'Targets')

# 按VMHost分组处理
$hostGroups = $hostRecords | Group-Object -Property VMHost

foreach ($group in $hostGroups) {
    # 仅处理存在多条记录的VMHost
    if ($group.Count -le 1) { continue }

    Write-Host "`n检测到重复的$($group.Name)记录,开始比对属性..." -ForegroundColor Cyan

    # 获取当前组的第一条记录作为基准
    $baseRecord = $group.Group[0]

    # 遍历组内其他记录,逐一比对属性
    foreach ($record in $group.Group[1..($group.Count-1)]) {
        foreach ($prop in $propertiesToCheck) {
            if ($baseRecord[$prop] -ne $record[$prop]) {
                Write-Warning "比对$($group.Name)的$prop属性不匹配:基准值=$($baseRecord[$prop]),当前记录值=$($record[$prop])"
            }
        }
    }
}

脚本说明

  1. 分组筛选:通过Group-Object按VMHost对记录分组,只处理包含多条记录的分组
  2. 基准比对:以每组第一条记录为基准,和组内其他记录逐一比对指定属性
  3. 差异输出:若属性值不匹配,用警告信息输出具体差异内容

运行结果示例

检测到重复的host1记录,开始比对属性...
WARNING: 比对host1的Paths属性不匹配:基准值=5,当前记录值=6
WARNING: 比对host1的Devices属性不匹配:基准值=2,当前记录值=3
WARNING: 比对host1的Targets属性不匹配:基准值=1,当前记录值=2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:40:41