如何通过导入CSV批量更新AzureAD用户的Manager属性?
错误原因排查
- CSV列名不匹配:你的CSV文件列是
UserPrincipalName和Manager,但脚本里用了$row.'User Username'和$row.'Manager Username',导致读取不到有效数据,传给Get-AzureADUser的参数为null,触发报错。 - 缺少存在性校验:未提前检查CSV中的用户/经理UPN是否在AzureAD中存在,若遇到无效UPN会直接抛出错误。
修正后的PowerShell脚本
# 导入CSV文件(确保列名是UserPrincipalName和Manager) $data = Import-Csv C:\Users\LongTran\Desktop\TW\List\manager2.csv # 遍历每一行数据 foreach ($row in $data) { $userUPN = $row.UserPrincipalName $managerUPN = $row.Manager Write-Host "正在处理用户: $userUPN,设置经理为: $managerUPN" -ForegroundColor Yellow # 获取目标用户对象 $targetUser = Get-AzureADUser -Filter "UserPrincipalName eq '$userUPN'" -ErrorAction SilentlyContinue # 获取经理用户对象 $managerUser = Get-AzureADUser -Filter "UserPrincipalName eq '$managerUPN'" -ErrorAction SilentlyContinue # 校验用户和经理是否存在 if (-not $targetUser) { Write-Host "错误:用户 $userUPN 在AzureAD中不存在" -ForegroundColor Red continue } if (-not $managerUser) { Write-Host "错误:经理 $managerUPN 在AzureAD中不存在" -ForegroundColor Red continue } # 执行经理更新操作 try { Set-AzureADUserManager -ObjectId $targetUser.ObjectId -RefObjectId $managerUser.ObjectId -ErrorAction Stop Write-Host "用户 $userUPN 的经理已成功更新为 $managerUPN" -ForegroundColor Green } catch { Write-Host "更新用户 $userUPN 失败:$($_.Exception.Message)" -ForegroundColor Red } }
脚本说明
- 列名匹配:直接使用CSV的真实列名
UserPrincipalName和Manager读取数据,避免空值传递。 - 存在性校验:用
-Filter查询用户,配合-ErrorAction SilentlyContinue避免直接报错,提前判断用户是否存在。 - 异常捕获:用
try/catch包裹更新操作,捕获并输出具体错误信息,避免脚本中断。 - 清晰提示:不同状态用不同颜色区分,便于排查执行情况。
内容的提问来源于stack exchange,提问作者Long
相关产品推荐
相关产品推荐

