如何编写PowerShell脚本撤销Azure AD用户刷新令牌并禁用设备
Azure AD用户访问管控整合PowerShell脚本实现
完整可直接分发运行的脚本
<# 脚本功能:吊销指定Azure AD用户所有刷新令牌、禁用该用户名下所有注册设备 运行要求:需以管理员身份启动PowerShell,提前安装AzureAD模块 #> # 检查AzureAD模块是否安装,未安装则直接提示退出 if (-not (Get-Module -Name AzureAD -ListAvailable)) { Write-Host "*错误:当前设备未安装AzureAD模块,请先执行 Install-Module AzureAD 完成安装后再运行脚本*" -ForegroundColor Red pause exit 1 } # 交互提示输入目标用户账号 $targetUser = Read-Host -Prompt "请输入需要执行管控操作的目标用户UPN(例:johndoe@contoso.com)" # 空输入校验 if ([string]::IsNullOrWhiteSpace($targetUser)) { Write-Host "*错误:未输入有效用户账号,脚本退出*" -ForegroundColor Red pause exit 1 } try { # 连接Azure AD租户 Write-Host "`n正在连接Azure AD,请在弹出的登录窗口中输入具备管理员权限的工作账号..." -ForegroundColor Cyan Connect-AzureAD -ErrorAction Stop # 校验输入的用户是否存在 $userInfo = Get-AzureADUser -ObjectId $targetUser -ErrorAction Stop Write-Host "已匹配到目标用户:$($userInfo.DisplayName)($targetUser),即将执行管控操作" -ForegroundColor Yellow # 吊销该用户所有刷新令牌,强制所有已登录会话重新认证 Write-Host "`n正在吊销用户所有刷新令牌..." -ForegroundColor Cyan Revoke-AzureADUserAllRefreshToken -ObjectId $targetUser -ErrorAction Stop Write-Host "✅ 用户刷新令牌吊销完成" -ForegroundColor Green # 禁用该用户名下所有注册的Azure AD设备 Write-Host "`n正在禁用用户名下所有注册设备..." -ForegroundColor Cyan $userDevices = Get-AzureADUserRegisteredDevice -ObjectId $targetUser -ErrorAction Stop if ($userDevices.Count -eq 0) { Write-Host "⚠️ 该用户名下无注册的Azure AD设备,跳过设备禁用步骤" -ForegroundColor Yellow } else { $userDevices | Set-AzureADDevice -AccountEnabled $false -ErrorAction Stop Write-Host "✅ 已禁用该用户名下共$($userDevices.Count)台注册设备" -ForegroundColor Green } Write-Host "`n🎉 所有管控操作执行完成!" -ForegroundColor Green } catch { Write-Host "`n❌ 脚本执行出错:$($_.Exception.Message)" -ForegroundColor Red } finally { # 执行完成后自动断开Azure AD连接 Disconnect-AzureAD -ErrorAction SilentlyContinue pause }
核心设计说明
- 你推测的
Read-Host交互逻辑完全可行,脚本通过该命令接收操作人员输入的账号,替换原命令片段中硬编码的johndoe@contoso.com值,可适配任意目标用户的管控需求 - 补充了多层前置校验:包含AzureAD模块存在性检查、空输入校验、目标用户存在性校验,避免环境缺依赖、输入无效值时脚本无响应或抛出晦涩的系统错误
- 加入异常捕获机制:用
try/catch/finally块包裹所有核心操作,任意步骤执行失败都会直接输出明确的错误原因,不会出现无提示闪退的情况 - 增加可视化状态反馈:每一步操作都配有明确的文字提示,成功、警告、错误信息用不同颜色区分,无PowerShell基础的员工也能清晰判断执行进度和结果
员工使用注意事项
- 运行脚本前需右键点击PowerShell,选择「以管理员身份运行」后再加载执行脚本
- 弹出Azure AD登录窗口时,需输入具备全局管理员/用户管理员权限的运维账号,不可输入被管控的普通用户账号
- 若运行提示缺少AzureAD模块,先执行
Install-Module AzureAD,按提示输入Y确认完成模块安装后再重新运行脚本 - 所有操作执行完成后按任意键即可自动退出脚本,无需手动断开连接或关闭窗口
内容的提问来源于stack exchange,提问作者torbuck
相关产品推荐
相关产品推荐

