60b843b936
PowerShell 5.1 разворачивал одноэлементные коллекции cert и ломал диагностику. Добавлены самотест и обновлён README (-IncludeAdminTests, обход GPO). Co-authored-by: Cursor <cursoragent@cursor.com>
4.2 KiB
4.2 KiB
fix-DAK-PC — локальная починка RDP/TLS на Windows 10/11
Набор скриптов для локального (с консоли проблемного ПК) восстановления RDP, когда клиент показывает «внутренняя ошибка», в журнале 1057 / Schannel 36870, TermService сбрасывает SSLCertificateSHA1Hash.
Сценарий проверен на DAK-PC (Win10 Pro 19045): корень — сломанная привязка TLS-сертификата RDP; обход SecurityLayer=0; полное лечение — repair install + возврат TLS.
Быстрый старт (за компом DAK-PC)
- Скопируйте репозиторий или папку
scriptsна ПК (флешка,git clone, общая шара). - PowerShell от имени администратора.
- Разрешите выполнение (один раз в этой сессии):
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
cd C:\path\to\fix-DAK-PC\scripts
- Самотесты (обязательно, с правами администратора):
.\Invoke-RdpRepairSelfTest.ps1 -IncludeAdminTests
Ожидание: FAIL=0. Если Set-ExecutionPolicy ругается на GPO — для сессии достаточно Process=Bypass или запуск:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Invoke-RdpRepairSelfTest.ps1 -IncludeAdminTests
- Полный интерактивный ремонт:
.\Fix-RdpTls.ps1
- Если TLS не удаётся починить — экстренный доступ (без TLS):
.\Fix-RdpTls.ps1 -EmergencyRdpOnly
- После repair install Windows и успешной привязки cert — возврат TLS:
.\Fix-RdpTls.ps1 -RestoreTls
Структура
| Файл | Назначение |
|---|---|
scripts/Fix-RdpTls.ps1 |
Главный сценарий: диагностика → очистка → cert → привязка → проверка |
scripts/Invoke-RdpRepairSelfTest.ps1 |
Самотесты функций и синтаксиса |
scripts/lib/RdpRepair.Common.ps1 |
Общие функции |
docs/REPAIR-INSTALL.md |
Repair install Windows (на месте) |
docs/RETURN-TO-TLS.md |
Возврат SecurityLayer=2 после починки cert |
docs/TROUBLESHOOTING.md |
События, типичные ошибки, GPO |
docs/LOCAL-RUNBOOK.md |
Пошаговый сценарий за консолью DAK-PC |
Фазы Fix-RdpTls.ps1
| Фаза | Действие |
|---|---|
| 0 | Самопроверка: админ, ОС, службы, модули |
| 1 | Диагностика → отчёт %ProgramData%\RdpRepair\report-*.txt |
| 2 | Очистка просроченных/битых cert в Remote Desktop и My |
| 3 | Нативный сброс (выкл/вкл RDP, очистка store) + опциональный reboot |
| 4 | Создание cert (цепочка провайдеров: Enhanced RSA → default) |
| 5 | ACL на приватный ключ (NETWORK SERVICE, SYSTEM) |
| 6 | Привязка (reg + WMI), проверка Hash BEFORE/AFTER |
| 7 | -EmergencyRdpOnly: SecurityLayer=0 |
| 8 | -RestoreTls: SecurityLayer=2 при успешной привязке |
Критерий успеха TLS
После перезапуска TermService:
SSLCertificateSHA1Hashв реестре совпадает с thumbprint cert в store.- События 1057 / 36870 не появляются при тестовом подключении RDP.
SecurityLayer= 2 (как на рабочих ПК в домене).
Если Hash AFTER пустой при любом cert — см. docs/REPAIR-INSTALL.md.
Клонирование
git clone https://git.kalinamall.ru/PapaTramp/fix-DAK-PC.git
Лицензия
Внутреннее использование (PapaTramp / kalinamall).