说实话,自从 2023 年 4 月的安全更新把 Windows LAPS(Local Administrator Password Solution,本地管理员密码解决方案)内置进 Windows 10/11 和 Windows Server 之后,传统那个 Microsoft LAPS CSE 就基本退出历史舞台了。进入 2026 年,企业设备大规模往 Microsoft Entra ID 云加入(Cloud Join)或混合加入(Hybrid Join)迁移,"通过 Intune 管策略"已经成了默认打法。
但麻烦也来了。
我自己在客户现场见过太多次——策略看起来"成功"下发了,Intune 门户里却死活看不到密码;事件日志里 10031、10033、20000 轮番报错,管理员一脸懵。这篇指南就是给 IT 服务台和企业管理员写的,从零到一讲清楚云原生部署流程,给你一份完整的事件 ID 速查表,外加 PowerShell 的实战排查套路。一句话,帮你在 2026 年用最短路径把 LAPS 跑稳。
一、2026 年 Windows LAPS 架构与前提条件
先把基础打牢。Windows LAPS 会把随机生成的本地管理员密码存到以下两个位置之一(注意:是互斥的,只能二选一):
- Windows Server Active Directory(AD):传统域环境,密码存到计算机对象的属性里(加密或明文,取决于你怎么配)。
- Microsoft Entra ID:云环境推荐,密码挂在 Entra 设备对象上,靠 Graph API 取回。
如果你走的是 Intune 这条路,被管设备得同时满足下面这些条件,一个都不能少:
- Windows 10 20H2 或 Windows 11(任意受支持版本),且必须打过 2023 年 4 月及之后的月度累积更新。
- 设备已 Microsoft Entra 加入(AADJ)或 Microsoft Entra 混合加入(Hybrid AADJ)。
- 设备已在 Intune 中注册(MDM 托管)。
- 租户有 Microsoft Entra ID P1 以上授权(LAPS 本身不吃 P1,但你早晚会用上设备合规与条件访问)。
- 操作人员具有 Intune 管理员或云设备管理员角色——配策略、取密码都靠它。
1.1 与传统 LAPS 的关键差异
这是个老坑:很多管理员想当然地以为 Windows LAPS 和旧版 LAPS(LAPS.x64.msi)可以和平共处。恕我直言,它们是互斥的。如果你在已经打了 2023 年 4 月补丁的设备上硬塞旧版 LAPS CSE 再配旧版 GPO,结果就是双方互掐:Windows LAPS 刷 10031 和 10033,旧版 LAPS 刷事件 ID 6,两个都罢工,密码谁也轮换不了。这种场景我经手过不下五次,每次都是清理旧 MSI 才解决。
二、第 1 步:在 Microsoft Entra 租户中启用 LAPS
这里要划重点——Microsoft Entra ID 默认情况下不允许受管设备回写 LAPS 密码。这也是最常见、也最容易被跳过的一步。十个"策略已应用但密码不显示"的 case,有八个都栽在这个开关上。
- 以全局管理员或云设备管理员身份登录 Microsoft Entra 管理中心。
- 导航到 设备 → 所有设备 → 设备设置(某些租户的路径是 标识 → 设备 → 概述 → 设备设置,UI 偶尔会改,别慌)。
- 把 "启用 Microsoft Entra Local Administrator Password Solution (LAPS)" 切到 "是"。
- 点 保存,搞定。
如果你有多租户要批量处理,用 Microsoft Graph PowerShell 脚本化会快很多:
Connect-MgGraph -Scopes "Policy.ReadWrite.DeviceConfiguration"
$params = @{
localAdminPassword = @{
isEnabled = $true
}
}
Update-MgPolicyDeviceRegistrationPolicy -BodyParameter $params
# 验证状态
Get-MgPolicyDeviceRegistrationPolicy | Select-Object -ExpandProperty LocalAdminPassword
三、第 2 步:在 Intune 中创建 LAPS 策略
Intune 给 Windows LAPS 配了专门的"账户保护"策略模板,不用再手搓 OMA-URI 了,省心不少。
- 登录 Microsoft Intune 管理中心。
- 进入 终结点安全性 → 账户保护 → 创建策略。
- 平台选 Windows,配置文件选 "本地管理员密码解决方案 (Windows LAPS)"。
- 给策略起个能一眼看懂的名字,比如
Prod-LAPS-AzureAD-Default。
3.1 关键配置项逐项解析
下面这张表,是 2026 年 Intune 策略 UI 中真正需要你停下来想一想的设置。讲真,很多生产事故都是默认值没改带出来的——
| 设置 | 推荐值 | 说明 |
|---|---|---|
| BackupDirectory | 备份到 Azure AD (1) | 决定密码回写去 Entra ID 还是本地 AD;0 = 禁用,1 = Entra ID,2 = AD |
| PasswordAgeDays | 30 | 密码最大有效期,到期就自动轮换 |
| AdministratorAccountName | 空(默认) | 留空就管 SID 以 -500 结尾的内置管理员;要指定自定义账户,必须先用别的策略把那个账户建出来,否则 LAPS 会找不到 |
| PasswordComplexity | 4 | 大写 + 小写 + 数字 + 特殊字符 |
| PasswordLength | 20+ | 默认 14;2026 年我的建议是至少 20 位 |
| PostAuthenticationActions | 3(重置密码并注销) | 管理员登录后是否自动轮换;5 = 重置并重启 |
| PostAuthenticationResetDelay | 1(小时) | 登录后多久触发 Post-Auth 动作 |
3.2 分配范围
建议用动态设备组分配,比如"所有 Windows 10/11 企业版 AADJ 设备"。生产全量推送前,先找 20–50 台设备做试点,并启用 仅审核(audit)模式——也就是只下发配置、先不轮换密码,观察事件日志一周,再放心推全量。心急真的容易出事。
四、第 3 步:验证策略已生效
到目标设备上,打开 事件查看器 → 应用程序和服务日志 → Microsoft → Windows → LAPS → Operational。刚下发策略那阵,你应该会依次看到:
- 10003:LAPS 检测到新策略。
- 10004:LAPS 已应用策略(含参数摘要)。
- 10018(AD 备份)或 10029(Entra ID 备份):首次密码回写成功。
- 10020:本地账户的密码已经真的被更新了。
不想等下一个 MDM 同步周期?在提升的 PowerShell 里直接触发:
Invoke-LapsPolicyProcessing
Get-LapsDiagnostics -OutputFolder "C:\Temp\LAPSDiag"
Get-LapsDiagnostics 会打包一份完整的诊断(事件日志、CSP 值、策略快照)。顺便说一句,这个包是你提 Microsoft 支持工单时最值钱的素材——比你自己文字描述管用十倍。
五、第 4 步:使用 PowerShell 检索与轮换密码
5.1 检索 Entra ID 中的密码
Get-LapsAADPassword 其实是 Microsoft Graph PowerShell 的一个包装器,跑之前得先装好 Graph 模块:
Install-Module Microsoft.Graph -Scope CurrentUser
Import-Module LAPS
# 连接 Graph(需要已创建的应用注册及相应权限)
Connect-MgGraph -Scopes "DeviceLocalCredential.Read.All"
# 仅查询元数据(上次回写时间、下次过期时间)
Get-LapsAADPassword -DeviceIds "DESKTOP-ABC123"
# 检索完整密码(明文)
Get-LapsAADPassword -DeviceIds "DESKTOP-ABC123" -IncludePasswords -AsPlainText
# 包含历史密码(需开启密码历史策略)
Get-LapsAADPassword -DeviceIds "8155b933-9cfa-4d86-ba50-dd72ca6579db" `
-IncludePasswords -AsPlainText -IncludeHistory
权限说明:只读元数据,DeviceLocalCredential.ReadBasic.All 就够;要看明文密码,得有 DeviceLocalCredential.Read.All。2026 年 Microsoft 官方的口风是——用受限权限的专用 Entra 应用去调,不要拿全局管理员账号去做日常检索。这条我非常赞同,审计日志会干净很多。
5.2 手动强制轮换密码
安全事件响应的时候(比如怀疑密码泄露、员工离职),你肯定不想等自然周期到了再轮换。
# 方式 1:在设备上本地执行
Reset-LapsPassword
# 方式 2:从 Intune 门户远程触发
# 设备 → 选中设备 → 概述 → ... → 轮换本地管理员密码
# 方式 3:通过 Graph API 批量触发
$deviceId = "8155b933-9cfa-4d86-ba50-dd72ca6579db"
Invoke-MgGraphRequest -Method POST `
-Uri "https://graph.microsoft.com/beta/deviceManagement/managedDevices/$deviceId/rotateLocalAdminPassword"
触发后等个 10–30 分钟(看设备签入频率),在事件日志里确认有 10044(密码已轮换并完成登录后操作)就算圆满。
六、事件 ID 完整参考表
下面这张表,列的是 2026 年 Windows LAPS 操作日志里最常见的事件 ID。我个人的建议是——把它打印出来贴在运维手册里,当一线服务台的排查圣经使。
| 事件 ID | 类型 | 含义与处置 |
|---|---|---|
| 10003 / 10004 | Info | 策略检测与应用成功 |
| 10013 | Warning | 找不到要管理的本地账户——查 AdministratorAccountName 设置与账户是否存在 |
| 10018 | Info | 密码已成功回写到本地 AD |
| 10020 | Info | 本地账户密码已更新 |
| 10029 | Info | 密码已成功回写到 Microsoft Entra ID |
| 10031 | Warning | 外部密码修改请求被阻断——遗留 LAPS 或其他密码管理工具冲突的经典信号 |
| 10032 / 10033 | Error | 与旧版 LAPS 仿真模式冲突——卸载旧版 CSE 或关闭仿真 |
| 10041 | Info | 检测到管理员账户登录成功(Post-Auth 流程启动) |
| 10042 | Info | Post-Auth 宽限期已过,将执行登录后动作 |
| 10043 | Error | 密码重置失败——检查本地密码策略冲突、账户锁定状态 |
| 10044 | Info | 密码已重置并完成登录后动作 |
| 20000 | Error | 设备未加入目标目录——CSP 拒绝配置;先跑 dsregcmd /status 确认加入状态 |
七、五大常见故障场景与排查步骤
7.1 场景一:Intune 门户看不到密码,但策略显示"成功"
老实说,这是我 hotline 接到最多的一类案子。三大根因:
- 租户级 LAPS 开关没启用(请回翻第二节,别偷懒)。
- 设备只在 Intune 注册,但没加入 Entra ID——跑一下
dsregcmd /status,确认AzureAdJoined是YES;如果是NO,那这台设备多半是 "Registered" 而非 "Joined",根本没法回写 LAPS 密码。 - 账号权限不够——看密码至少需要云设备管理员、Intune 管理员、服务台管理员、安全读者或安全管理员角色之一;光有"报告读取者"是不行的。
7.2 场景二:事件 10031 + 10033 反复刷屏
几乎百分百是遗留 LAPS(LAPS.x64.msi)没卸干净。在受影响设备上,这样收拾:
# 静默卸载旧版 LAPS MSI
msiexec.exe /q /uninstall {97E2CA7B-B657-4FF7-A6DB-30ECC73E1E28}
# 如果是通过 Intune Win32 应用装的,在 Intune 门户把旧版 LAPS 应用分配改成"卸载"
# 确认 CSE 已卸载
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" |
Where-Object { $_.DisplayName -like "*Local Administrator Password*" }
卸完重启,再跑 Invoke-LapsPolicyProcessing,盯事件日志看能不能恢复到 10018/10029 正常回写的状态。大多数情况下,这一套做完世界就清净了。
7.3 场景三:事件 10043,密码重置失败
Windows LAPS 生成的密码,必须满足本地密码策略。举个具体例子:本地有条老的 GPO 把最短密码长度卡在 24 位,而你的 LAPS 策略设的是 20 位——就是会失败。
# 检查生效的本地密码策略
net accounts
# 检查密码复杂度 GPO
secedit /export /cfg C:\Temp\secpol.cfg /areas SECURITYPOLICY
Get-Content C:\Temp\secpol.cfg | Select-String "Password"
处理方式有两条:要么把 Intune LAPS 策略的长度调到 ≥ 本地要求,要么干脆在 Intune 里用同一套"账户保护 → 账户锁定 / 密码策略"统一下发,别再让 GPO 和 MDM 两边打架了。
7.4 场景四:事件 20000,设备未加入
最典型的原因是设备处在"双重状态"(同时 Entra Registered 和 Hybrid Joined),早期 Windows 10 版本特别容易中招。推荐操作:
# 确认当前加入状态
dsregcmd /status
# 升级到 Windows 10 1803+ / Windows 11,系统会自动清掉冗余的 Registered 状态
# 如需手动清理
dsregcmd /leave
# 重新加入
dsregcmd /join
顺带验证下设备能不能访问企业注册终结点:https://enterpriseregistration.windows.net。代理或防火墙把这个地址挡在外面,是另一个我踩过三次的坑。
7.5 场景五:混合加入设备策略漂移
混合加入设备很特殊,它可能同时被 GPO 和 Intune 两边管着。Windows LAPS 的 策略优先级是这样的:CSP/MDM(Intune)> 组策略 > 本地。如果 AD 里还留着旧的 LAPS GPO,跑一下:
gpresult /h C:\Temp\gpreport.html
# 查找应用的 LAPS 相关 GPO
Get-Content C:\Temp\gpreport.html | Select-String -Pattern "LAPS" -Context 2
把冗余 GPO 的"已验证身份的用户"读取权限撤掉,或者在 Intune 侧先显式设 BackupDirectory = 0 禁用 LAPS,确认清理干净了再切回 1/2。两步走,稳妥。
八、最佳实践与安全加固(2026)
- 密码长度至少 20 位:以现在 GPU 的离线破解能力看,14 位已经扛不住定向攻击了。
- 启用密码历史(Entra ID 模式支持):Post-Auth 强制轮换以后也能追溯前 N 次密码,取证的时候真的救命。
- 与条件访问联动:检索 LAPS 密码的 Graph 调用,强制要求设备合规 + 多因素认证。
- 按角色最小化授权:服务台级人员给"服务台管理员"就够了,千万别随手配"云设备管理员"。
- 审计日志接 SIEM:所有
Get-LapsAADPassword调用都会在 Microsoft Entra 审计日志的"DeviceManagement"类别里留痕——定期导出到 SIEM,盯异常批量检索行为。 - 灾备提醒:在 Entra ID 里删掉设备对象之后,绑定的 LAPS 密码就永久丢了。对于要下线回收的设备,先取密码、再删对象,这个顺序千万别反。
九、常见问题解答(FAQ)
Q1:Windows LAPS 要不要额外付费?
不要。Windows LAPS 是 Windows 操作系统自带的功能,零额外授权费。通过 Intune 管理需要 Intune 授权(通常已经包含在 Microsoft 365 E3/E5 里了),密码存 Entra ID 也不另收钱。
Q2:Windows LAPS 能同时备份到本地 AD 和 Entra ID 吗?
不行。BackupDirectory 是互斥的:0 = 禁用,1 = Entra ID,2 = 本地 AD。每台设备在任何时刻只能选一个目标目录。要切目标的话,先把旧目标的设置清空(避免留孤儿数据),再切到新的。
Q3:用户用 Intune 门户或 PowerShell 检索过的 LAPS 密码,会被审计吗?
会。所有检索操作都会记到 Microsoft Entra 审计日志,类别是"DeviceManagement",活动名为"Recover device local administrator password"。建议把审计日志接到 Microsoft Sentinel 或第三方 SIEM,方便合规留存。
Q4:设备长时间离线(比如 60 天),Windows LAPS 会咋处理?
设备离线期间没办法回写新密码,所以 Entra ID 里存的还是上次在线时回写的那个。一旦设备重新联网并完成下次 MDM 签入,Windows LAPS 会立刻检查密码过期时间——如果已经过期,几分钟内就会生成新密码并回写,对应事件 ID 10029 + 10020。
Q5:Windows LAPS 能不能和第三方 PAM(特权访问管理)工具(比如 CyberArk、BeyondTrust)并用?
技术上行,但必须协调好。任何外部尝试改 LAPS 管理账户密码的动作都会被阻断并记 10031。通常的做法是:让 PAM 工具通过 Get-LapsAADPassword / Graph API 按需"借出"密码,而不是让 PAM 自己去管密码轮换。这样 LAPS 做唯一写入方,PAM 做会话审计与工单集成——各司其职,互不打架。
结语
2026 年的 Windows LAPS,已经毫无悬念地成为 Windows 终端本地管理员账户管理的默认最佳实践。相比传统 LAPS,它跟 Intune/Entra ID 的深度集成、专用事件日志通道、加上一套成熟的 PowerShell 模块,极大简化了大规模运维——前提是你真的看得懂事件日志。
老实讲,真正的难点从来不是"能不能部署",而是"部署后出了问题能不能 15 分钟内定位"。所以我再啰嗦一次:把第六节那张事件 ID 表打印出来贴在运维墙上。这一张纸,未来每一次排障都会帮你省下半小时。