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

如何根据匹配的用户ID合并多份CSV文件(PowerShell脚本遇问题)

解决CSV文件按用户ID合并的PowerShell方案

原代码的问题

  • 多余定义$outfile变量,未实际使用
  • 使用Compare-Object是用来对比两个集合的差异,而非按ID关联合并数据,无法实现你需要的主CSV生成需求

正确实现脚本

以下脚本会将pcinfo.csv和mail.csv按用户ID关联,保留所有PC记录,同时匹配对应的邮箱信息(无邮箱则显示为空):

# 导入两个CSV文件
$pcInfo = Import-Csv -Path "c:\pcinfo.csv"
$mailInfo = Import-Csv -Path "c:\mail.csv"

# 按ID合并数据,保留所有PC记录,匹配邮箱
$mergedData = foreach ($pc in $pcInfo) {
    # 查找当前PC对应的邮箱记录
    $mail = $mailInfo | Where-Object { $_.ID -eq $pc.ID }
    # 输出合并后的对象,无邮箱则Mail字段为空
    [PSCustomObject]@{
        PCname = $pc.PCname
        ID     = $pc.ID
        Mail   = if ($mail) { $mail.Mail } else { "" }
    }
}

# 额外处理mail.csv中存在但pcinfo.csv中没有的ID(比如R9876)
$extraMailIDs = $mailInfo | Where-Object { $_.ID -notin $pcInfo.ID }
foreach ($mail in $extraMailIDs) {
    $mergedData += [PSCustomObject]@{
        PCname = ""
        ID     = $mail.ID
        Mail   = $mail.Mail
    }
}

# 导出到主CSV文件
$mergedData | Export-Csv -Path "c:\complete.csv" -NoTypeInformation

脚本说明

  • 先遍历所有PC记录,匹配对应ID的邮箱信息,确保R1234的两台PC都会被保留并关联邮箱
  • 额外添加mail.csv中存在但pcinfo.csv没有的ID记录(比如R9876),即使没有PC信息也会纳入主CSV
  • 无对应数据的字段会显示为空字符串,保证CSV格式规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:50:37