Короткий ответ

«LAPS не работает» почти всегда раскладывается на четыре слоя: схема AD не расширена, компьютеру нельзя писать свой пароль на объект, GPO не говорит бэкапить в AD, либо пароль есть, но нет права читать. Лечите слой, который красный, не переустанавливая Windows на WS-042.

Windows LAPS (встроенный в Windows 11 23H2/24H2 и поддерживаемые Server 2019/2022/2025 с обновлениями) и legacy Microsoft LAPS — разные атрибуты и разные ADMX. Смешение политик даёт «вроде включили, пароля нет». Цель для contoso.example: Update-LapsADSchema на хозяине схемы, Set-LapsADComputerSelfPermission на OU, GPO Windows LAPS с backup в Active Directory, группа на Set-LapsADReadPasswordPermission.

Не выдавайте Domain Users право читать пароль «чтобы заработало». Не отключайте Defender, чтобы LAPS «прошёл».

Симптомы и как отличить

  • Get-LapsADPassword -Identity WS-042 пусто или Access Denied.
  • В ADUC атрибуты msLAPS-* отсутствуют в схеме или пусты на объекте.
  • На клиенте журнал Microsoft-Windows-LAPS/Operational с ошибками обработки политики.
  • Helpdesk видит компьютер, но кнопка/команда пароля отказывается.
СимптомСлой
Cmdlet LAPS не найден на DCRSAT/Windows LAPS не на этой ОС/KB, или вы на legacy-модуле AdmPwd.PS
Схема без msLAPSне запускали Update-LapsADSchema
Схема есть, атрибут пустGPO, OU, self-permission, служба/канал обновления пароля
Атрибут есть, Get-LapsADPassword Access DeniedACE чтения, не «LAPS сломан»
Пароль есть, вход не тотдругая учётка, см. защиту локального админа

Возможные причины

  1. Не выполняли расширение схемы Windows LAPS.
  2. Компьютер не в OU с GPO, блокировка наследования, WMI-фильтр, security filtering.
  3. Нет SELF permission на запись пароля на OU.
  4. Backup directory = Disabled или Azure AD, а вы читаете AD.
  5. Конфликт legacy AdmPwd и Windows LAPS; клиент слушает не ту ветку реестра.
  6. Часы клиента уехали, канал до DC01 мёртв, компьютер в quarantine/disabled.
  7. Читаете с учётки без ACE; шифрование пароля требует корректных разрешений и актуального клиента.

Диагностика

1. Схема и cmdlet на DC01

Get-Command Update-LapsADSchema, Get-LapsADPassword, Set-LapsADComputerSelfPermission
Get-ADObject -SearchBase (Get-ADRootDSE).schemaNamingContext -Filter 'name -like "ms-LAPS*"' |
  Select-Object Name

Пустой список ms-LAPS* — схема не расширена. Наличие ms-Mcs-AdmPwd без ms-LAPS* — только legacy.

2. Объект компьютера

Get-ADComputer 'WS-042' -Properties * | Select-Object DistinguishedName, Enabled,
  msLAPS-PasswordExpirationTime, 'ms-Mcs-AdmPwdExpirationTime'
nltest /sc_query:contoso.example

Disabled computer и сломанный secure channel пароль не обновят.

3. GPO и реестр на WS-042

gpresult /r /scope computer
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Policies\LAPS' -ErrorAction SilentlyContinue
Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft Services\AdmPwd' -ErrorAction SilentlyContinue
Get-WinEvent -LogName 'Microsoft-Windows-LAPS/Operational' -MaxEvents 30

Смотрите, задан ли backup directory (AD vs Entra vs disabled). Если заполнен только AdmPwd — клиент в legacy.

4. Эффективные права на атрибут

В ADUC → объект WS-042 → Security → Advanced, или:

dsacls (Get-ADComputer 'WS-042').DistinguishedName

Ищите ACE для SELF на запись LAPS-атрибутов и ACE вашей группы helpdesk на чтение. Сравнивайте с эталоном после Set-LapsADComputerSelfPermission на соседней здоровой OU.

5. Сеть до DC

Test-NetConnection DC01.contoso.example -Port 389
Test-NetConnection DC01.contoso.example -Port 636

Без LDAP клиент не запишет пароль. Это не «баг LAPS».

Решение

Сценарий A. Схемы нет

Окно с Schema Admin, backup System State DC01, хозяин схемы:

# уточнить хозяина схемы
netdom query fsmo
Update-LapsADSchema

После репликации проверьте ms-LAPS* на втором DC.

Сценарий B. Схема есть, пароль не пишется

Set-LapsADComputerSelfPermission -Identity 'OU=Workstations,DC=contoso,DC=example'

GPO Windows LAPS: включить управление, backup = Active Directory, параметры пароля. Компьютер в OU. На WS-042:

gpupdate /force
# при наличии cmdlet:
Invoke-LapsPolicyProcessing
Get-WinEvent -LogName 'Microsoft-Windows-LAPS/Operational' -MaxEvents 10

Убедитесь, что нет второй GPO «Disable LAPS» с Enforced.

Сценарий C. Пароль есть, helpdesk не читает

Set-LapsADReadPasswordPermission -Identity 'OU=Workstations,DC=contoso,DC=example' -AllowedPrincipals 'CONTOSO\Helpdesk-LAPS'

Пользователь helpdesk должен быть в группе, обновить Kerberos-билет (klist purge + новый вход). Не добавляйте «Authenticated Users».

Сценарий D. Конфликт legacy и Windows LAPS

Выберите одну модель на OU. На современных 23H2/24H2 и Server 2022/2025 снимите legacy ADMX с той же OU, оставьте Windows LAPS. Не удаляйте сразу атрибуты ms-Mcs-AdmPwd, пока не подтвердили новый пароль и вход.

Как проверить, что проблема устранена

Get-LapsADPassword -Identity 'WS-042' | Format-List ComputerName, PasswordUpdateTime, ExpirationTimestamp

На пилоте: локальный вход паролем из AD. Журнал Operational без повторяющихся ошибок политики за цикл. Учётка вне Helpdesk-LAPS по-прежнему получает отказ на чтение.

Повторите для второго компьютера в той же OU — не чините «одну машину реестром».

Если не помогло

  • Entra-joined: смотрите Entra/Intune LAPS, не Get-LapsADPassword.
  • Server 2019 без нужных обновлений: встроенный Windows LAPS мог не быть в RTM; поставьте поддерживаемые накопительные обновления, не «скачивайте случайный MSI с форума».
  • Имя управляемой учётки в GPO не совпадает с реальной.
  • Репликация AD: писали на DC01, читаете с DC, куда ещё не дошло — подождите/принудительная репликация, не расширяйте схему повторно.
  • Фильтр GPO «только Windows 10» отсекает 11 24H2.

Дальше — не отключать firewall между клиентом и DC. Если LDAP режется, чините правила, см. firewall отключён как антипаттерн.

Профилактика

  • Чеклист join: через N часов есть expiration LAPS, иначе алерт.
  • Пилот OU перед всем доменом.
  • Документ: какая группа читает пароль; изменения группы — под аудитом групп AD.
  • Не смешивать legacy и Windows LAPS на одной OU без миграционного плана.
  • RSAT с cmdlet LAPS на jump-хосте helpdesk, не на каждом ПК.

FAQ

Нужно ли быть Domain Admin, чтобы прочитать пароль?

Нет, и не должно. Отдельная группа и ACE. Domain Admin и так может слишком много — не делайте это рабочим процессом helpdesk.

Update-LapsADSchema безопасен повторно?

Повтор на уже расширенной схеме обычно идемпотентен, но не заменяет диагностику пустого атрибута. Не запускайте «на всякий случай» каждую пятницу.

Почему в ADUC нет колонки пароля?

Пароль не для витрины. Используйте Get-LapsADPassword или штатную оснастку с правом чтения. Не дампьте атрибут в CSV.

LAPS работает, но пароль «старый» после отзыва сотрудника

Ротация по расписанию и Reset-LapsPassword / reset permission для группы. Сам факт LAPS не отзывает сессии; смените пароль сразу при увольнении админа.

Можно ли хранить пароль LAPS в файле на DC01?

Нет. Точка хранения — AD (или Entra). Файл на диске DC — обход ACL и аудита.

Get-AdmPwdPassword vs Get-LapsADPassword

Первое — legacy-модуль. Второе — Windows LAPS. Смотрите, чем реально управляется WS-042, иначе «команда пустая» при живом другом канале.