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

PowerShell中如何基于CSV姓名匹配批量填充新数组的Roles列

PowerShell中如何基于CSV姓名匹配批量填充新数组的Roles列

我仔细看了你的需求和现有脚本,核心是要把test1.csv里的所有用户条目完整保留,同时根据realName匹配test2.csv里的对应姓名,把ApprovedGroups填充到新数组的Roles列。原脚本的循环逻辑和UPDATE里的哈希表写法都有小问题,咱们一步步修正。

首先拆解问题根源:

  1. 原脚本最后那段匹配循环逻辑混乱:$j初始化在foreach外只会执行一次,且错误地用$row[$j]访问单个对象的属性,匹配时也没正确遍历$content2找对应行
  2. UPDATE里的哈希表写法有缺陷:同一个realName对应多个userName时,哈希表会覆盖之前的value,导致最后只保留了每个姓名的最后一个userName,不符合需求

修正后的高效完整脚本

我推荐用哈希表做快速匹配,比循环遍历效率高很多,尤其是数据量大的时候:

# 导入CSV文件
$content1 = Import-Csv -Path "C:\Users\blah\Desktop\Test\test1.csv"
$content2 = Import-Csv -Path "C:\Users\blah\Desktop\Test\test2.csv"

# 先创建姓名-角色的哈希表,用于快速查找
$nameToRoles = @{}
foreach ($roleRow in $content2) {
    $nameToRoles[$roleRow.Name] = $roleRow.ApprovedGroups
}

# 直接遍历content1构建目标数组,同时填充Roles列
$content3 = foreach ($userRow in $content1) {
    [PSCustomObject]@{
        UserName = $userRow.username
        Name     = $userRow.realName
        # 从哈希表快速取对应角色,无匹配则留空(可按需调整)
        Roles    = $nameToRoles[$userRow.realName] ?? ""
    }
}

# 输出最终结果
$content3

关键优化说明

  • 哈希表快速匹配:提前把content2的姓名和角色映射存入哈希表,后续匹配无需循环遍历,直接通过key取值,效率提升明显
  • 避免低效数组追加:原脚本用$content3 +=会频繁重建数组,直接用foreach输出对象,PowerShell会自动收集为数组,性能更好
  • 一步到位构建数组:遍历content1时直接填充Roles,无需先创建空数组再二次循环修改

如果你的PowerShell版本低于7(不支持??空合并运算符),可以把Roles行替换为:

Roles    = if ($nameToRoles.ContainsKey($userRow.realName)) { $nameToRoles[$userRow.realName] } else { "" }

兼容原脚本分步逻辑的修正版

如果你想保留先创建空数组再填充的分步写法,也可以这样修改匹配循环:

# 原脚本的content3初始化部分保留
$content3 =@()
$i = 0
while ($i -lt $content1.Length) {
    $content3 += [PSCustomObject]@{
        UserName = $content1[$i].username
        Name     = $content1[$i].realName
        Roles    = ""
    }
    $i++
}

# 修正后的匹配循环
foreach ($row in $content3) {
    # 从content2中找到对应姓名的行
    $matchingRow = $content2 | Where-Object { $_.Name -eq $row.Name }
    if ($matchingRow) {
        $row.Roles = $matchingRow.ApprovedGroups
    }
}

# 输出结果
$content3

运行以上任意版本脚本,都能得到你想要的完整结果:每个userName条目都会对应正确的Roles值,不会遗漏任何用户。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 07:53:59