如何从CSV文件读取UPN批量禁用Azure AD用户?
批量禁用Azure AD账户的三种方法及PowerShell脚本错误修复
一、是否支持批量禁用Azure AD账户?
完全支持,可通过Azure门户、Power Automate、PowerShell脚本三种方式实现批量禁用100个Azure AD账户,以下是具体实现方案及脚本错误修复。
二、PowerShell脚本错误修复及正确实现
错误原因分析
你编写的脚本中,-ObjectID Userprincipalname是直接传入了字符串"Userprincipalname"作为用户ID,而非CSV文件中实际的UPN值,导致Azure AD无法找到对应资源,从而抛出错误。
方案1:使用AzureAD模块(兼容现有习惯)
# 安装AzureAD模块(首次运行需执行) Install-Module -Name AzureAD -Force -AllowClobber # 连接到Azure AD Connect-AzureAD # 读取CSV并批量禁用账户 Import-Csv "D:\PowerShell\ScriptsUsers.csv" | ForEach-Object { # 从CSV行中提取UPN(确保CSV列名为Userprincipalname,若列名不同需修改) $targetUPN = $_."Userprincipalname" # 先验证用户存在性,避免无效操作报错 $user = Get-AzureADUser -Filter "UserPrincipalName eq '$targetUPN'" if ($user) { Set-AzureADUser -ObjectId $user.ObjectId -AccountEnabled $false Write-Host "已成功禁用账户:$targetUPN" } else { Write-Warning "未找到UPN为$targetUPN的用户" } }
方案2:使用Microsoft Graph模块(官方推荐,AzureAD模块已弃用)
# 安装Microsoft Graph模块(首次运行需执行) Install-Module -Name Microsoft.Graph -Force -AllowClobber # 连接到Microsoft Graph,需获取用户读写权限 Connect-MgGraph -Scopes "User.ReadWrite.All" # 读取CSV并批量禁用账户 Import-Csv "D:\PowerShell\ScriptsUsers.csv" | ForEach-Object { $targetUPN = $_."Userprincipalname" try { Update-MgUser -UserId $targetUPN -AccountEnabled:$false Write-Host "已成功禁用账户:$targetUPN" } catch { Write-Warning "处理账户$targetUPN时出错:$($_.Exception.Message)" } }
三、Azure门户批量禁用步骤
- 登录Azure门户,进入Azure Active Directory > 用户
- 点击顶部工具栏的批量操作 > 禁用用户
- 下载官方模板CSV文件,按模板格式填写100个UPN(列名需为
UserPrincipalName) - 上传填写完成的CSV文件,点击提交
- 在批量操作结果中可查看每个账户的处理状态
四、Power Automate批量禁用步骤
- 登录Power Automate,创建一个即时云流
- 添加Excel Online (Business)的列出行 present in 表操作,选择存储UPN的Excel文件及对应数据表
- 添加Apply to each循环,遍历所有Excel行项目
- 在循环内添加Azure Active Directory的更新用户操作:
- 设置用户主体名称为当前行的UPN字段
- 将账户已启用选项设为否
- 保存流并运行,等待执行完成
内容的提问来源于stack exchange,提问作者AskMe
相关产品推荐
相关产品推荐

