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

如何用PowerShell结合Azure AD/AD从CSV邮箱填充员工ID列

用PowerShell通过邮箱填充CSV的Employee ID列

一、通过Azure AD填充Employee ID

前置要求

  • 先安装Azure AD PowerShell模块:
    Install-Module -Name AzureAD -Force -AllowClobber
    
  • 连接到Azure AD:
    Connect-AzureAD
    

完整脚本

# 替换为你的CSV文件路径
$csvInputPath = "C:\data\your_source.csv"
$csvOutputPath = "C:\data\filled_employees.csv"

# 导入原始CSV数据
$csvData = Import-Csv -Path $csvInputPath

# 遍历每一行数据,查询并填充EmployeeID
foreach ($row in $csvData) {
    # 跳过空邮箱的行
    if ([string]::IsNullOrWhiteSpace($row.OwnerEmail)) {
        $row.EmployeeID = "无OwnerEmail"
        continue
    }

    # 通过用户邮箱查询Azure AD用户
    $adUser = Get-AzureADUser -Filter "UserPrincipalName eq '$($row.OwnerEmail)'"
    if ($adUser) {
        # 填充EmployeeID,注意Azure AD中属性名是EmployeeId(大小写敏感)
        $row.EmployeeID = $adUser.EmployeeId
    } else {
        # 未找到匹配用户时标记
        $row.EmployeeID = "未找到匹配用户"
    }
}

# 导出填充后的CSV,-NoTypeInformation避免生成多余的类型头
$csvData | Export-Csv -Path $csvOutputPath -NoTypeInformation -Encoding UTF8

额外说明

  • 如果你的OwnerEmail对应的是用户的代理邮箱(而非主UserPrincipalName),可以把Filter改成:
    $adUser = Get-AzureADUser -Filter "ProxyAddresses eq 'smtp:$($row.OwnerEmail)'"
    
  • 确保执行脚本的账号拥有Azure AD用户的读取权限

二、通过本地Active Directory填充Employee ID

前置要求

  • 确保已安装AD PowerShell模块(域控制器默认自带,普通机器可通过RSAT工具安装):
    Install-WindowsFeature RSAT-AD-PowerShell
    
  • 执行脚本的机器需加入域,或能直接连接到域控制器

完整脚本

# 替换为你的CSV文件路径
$csvInputPath = "C:\data\your_source.csv"
$csvOutputPath = "C:\data\filled_employees.csv"

# 导入原始CSV数据
$csvData = Import-Csv -Path $csvInputPath

# 遍历每一行数据,查询并填充EmployeeID
foreach ($row in $csvData) {
    # 跳过空邮箱的行
    if ([string]::IsNullOrWhiteSpace($row.OwnerEmail)) {
        $row.EmployeeID = "无OwnerEmail"
        continue
    }

    # 通过邮箱查询AD用户,指定返回EmployeeID属性
    $adUser = Get-ADUser -Filter "mail -eq '$($row.OwnerEmail)'" -Properties EmployeeID
    if ($adUser) {
        $row.EmployeeID = $adUser.EmployeeID
    } else {
        # 未找到匹配用户时标记
        $row.EmployeeID = "未找到匹配用户"
    }
}

# 导出填充后的CSV
$csvData | Export-Csv -Path $csvOutputPath -NoTypeInformation -Encoding UTF8

额外说明

  • 如果AD中用户邮箱存储在UserPrincipalName属性而非mail,修改Filter为:
    $adUser = Get-ADUser -Filter "UserPrincipalName -eq '$($row.OwnerEmail)'" -Properties EmployeeID
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:05:17