Remove-AzureADGroupMember多输入循环批量移除Azure AD组成员
Azure AD用户云组成员批量移除方案
核心调整逻辑
原脚本仅实现组查询和可视化展示,要对接批量移除能力需要做3处核心修改:
- 给
Out-GridView添加-PassThru参数,让弹窗支持选中条目后向下传递结果,默认模式下该cmdlet仅做展示不输出任何对象 - 增加前置校验逻辑,避免用户未检索到目标用户、未选中任何组时触发无效报错
- 遍历选中的组对象,循环调用
Remove-AzureADGroupMember执行移除,单条操作失败不中断整体批量流程
完整可运行脚本
# 定义待操作的目标用户账号 $User = 'Compromised.UserAccount' $UserToRemove = Get-AzureADUser -SearchString $User # 校验目标用户是否存在 if (-not $UserToRemove) { Write-Error "未查询到匹配的用户:$User,操作终止" exit 1 } # 查询用户所属的纯云安全组/分发组,弹出可视化选择窗口 $groupsToRemoveMember = $UserToRemove | Get-AzureADUserMembership | ForEach-Object { Get-AzureADObjectByObjectId -ObjectId $_.ObjectId | Get-AzureADGroup | Where-Object {$_.OnPremisesSecurityIdentifier -eq $null} | Select-Object DisplayName, ObjectType, MailEnabled, SecurityEnabled, ObjectId } | Out-GridView -Title "$User 所属纯云组列表 - 选中要移除成员的组后点击确认" -PassThru # 校验是否选中待操作组 if (-not $groupsToRemoveMember) { Write-Host "未选中任何目标组,操作已退出" exit 0 } # 循环执行成员移除操作 foreach ($targetGroup in $groupsToRemoveMember) { try { Remove-AzureADGroupMember -ObjectId $targetGroup.ObjectId -MemberId $UserToRemove.ObjectId -ErrorAction Stop Write-Host "操作成功:已将用户从组「$($targetGroup.DisplayName)」中移除" -ForegroundColor Green } catch { Write-Warning "操作失败:从组「$($targetGroup.DisplayName)」移除用户时出错,错误信息:$_" } }
使用说明
- 运行脚本前请先确认已连接Azure AD租户,可执行
Connect-AzureAD完成登录认证 - 弹出组列表窗口后,按住Ctrl可多选要操作的组,选中后点击窗口右下角确认即可触发批量移除
- 脚本会在控制台输出每一个组的操作结果,成功项标绿、失败项输出具体错误信息,方便排查问题
内容的提问来源于stack exchange,提问作者Senior Systems Engineer
相关产品推荐
相关产品推荐

