«Не подключается по RDP» — причина может быть в десятке мест: служба, порт, брандмауэр, профиль сети, права, сертификат, политика. RDP Diagnostic & Remediation Tool 5.0.1 делает аудит RDP целиком одной командой, показывает найденное с готовыми исправлениями и умеет доказать результат настоящим рукопожатием протокола. Ниже — что он проверяет, что показал прогон на живой машине и где легко ошибиться с кодами выхода.

TL;DR: одна команда и четыре факта
- Без параметров — только чтение. Никаких изменений, пока не указан режим ремонта.
- Более 50 проверок. ОС, реестр и GPO, службы, брандмауэр, порт, TLS, права, журналы.
- Отчёт в двух видах. Самодостаточный HTML для человека и JSON для мониторинга.
- Доказательство — рукопожатие. Проверка
-TestRdpTargetреально договаривается по X.224 и показывает требования NLA. - Проверка.
.\RDP-Tool.ps1 -DiagnoseOnly -ExportJson report.json.
Проблема, которую это решает
Диагностика RDP обычно идёт вслепую и по частям. Сначала смотрят службу TermService, потом порт в реестре, потом правило брандмауэра, потом профиль сети — и на каждом шаге легко забыть про следующий.
Хуже другое: часть причин вообще не видна без специальных знаний. Порт изменён в реестре, но не в брандмауэре. Политика домена запрещает NLA, локальная настройка разрешает. Сертификат истёк, но RDP продолжает работать с самоподписанным. Пользователь есть в системе, но не в группе удалённых рабочих столов.
Скрипт закрывает именно эту проблему: он обходит весь стек сверху вниз, собирает результат в один отчёт и к каждой найденной проблеме прикладывает исправление. А главное — не верит галочкам, а проверяет протокол.
Что такое RDP Diagnostic & Remediation Tool
flowchart TB OS["редакция ОС и роль RDP"] --> REG["реестр: локальные ключи и GPO"] REG --> SVC["службы терминалов"] SVC --> FW["брандмауэр и порт"] FW --> TLS["сертификат и NLA"] TLS --> PERM["права и группы"] PERM --> LOG["журналы событий RDP"]
| Свойство | Значение |
|---|---|
| Версия в разборе | 5.0.1 (2026-10-10) |
| Тип | один PowerShell-скрипт RDP-Tool.ps1 |
| Размер | 218 353 байта, 4 354 строки |
| Функций внутри | 82 |
| Зависимости | системный PowerShell, без модулей из галереи |
| Платформы | Windows 10, 11, Server |
| Отчёт | HTML и JSON |
| Коды выхода | 0, 1, 2, 3, 4, 5, 6, 99 |
Один файл — это осознанное решение: скрипт запускают на проблемной машине, часто без интернета и без права ставить модули. Копирование одного файла решает задачу доставки.
Возможности
Режимы
| Режим | Что делает |
|---|---|
-DiagnoseOnly |
полный аудит только на чтение (и это же поведение по умолчанию) |
-EnableRDP |
включает RDP и исправляет всё, что может |
-DisableRDP |
закрывает RDP: запрет подключений и правила брандмауэра |
-CheckUpdate |
спрашивает GitHub о новой версии, код 5 если она есть |
-Update |
скачивает, проверяет, делает бэкап и заменяет себя |
Действия с конфигурацией
| Параметр | Что делает |
|---|---|
-SetPort 1024–65535 |
меняет порт прослушивания |
-DisableNLA |
выключает Network Level Authentication |
-AddUser u1,u2 |
добавляет учётки в группу удалённых рабочих столов |
-RestartServices |
перезапускает службы терминалов |
-ForcePrivateNetwork |
переводит профили сети в «частные» |
Проверки и отчёты
| Параметр | Что делает |
|---|---|
-TestRdpTarget host[:port] |
настоящее рукопожатие X.224 к локальной или удалённой машине |
-ShowSessions |
список живых сессий |
-TestExternal |
исходящие проверки DNS и TCP |
-ExportReport file.html |
самодостаточный HTML-отчёт |
-ExportJson file.json |
машиночитаемый отчёт для мониторинга |
-Quiet, -NoColor, -NoEmoji |
режимы вывода для скриптов и старых консолей |
Как это работает
flowchart LR RUN["запуск без параметров"] --> CHK["50+ проверок только на чтение"] CHK --> SUM["сводка и код выхода"] SUM --> REP["отчёт HTML или JSON"] REP --> FIX["ремонт с -Force или -WhatIf"] FIX --> PROBE["рукопожатие X.224 как доказательство"]
Порядок такой: проверки, сводка, отчёт, при необходимости — ремонт, затем доказательство.
Проверки идут по слоям, и это важно для чтения результата: сначала «а поддерживается ли вообще» (редакция ОС, роль), потом конфигурация (реестр, политики), потом службы, потом сеть и брандмауэр, потом криптография и права, и наконец журналы событий. Сбой на верхнем слое делает нижние бессмысленными, поэтому сводка сначала отвечает на вопрос «может ли это работать в принципе».
Ремонт выполняется только с явным режимом и только с повышенными правами, а флаг -WhatIf показывает планируемые изменения без применения. Это существенно: инструмент, который правит реестр и брандмауэр, обязан уметь рассказать, что он собирается сделать.
И последний шаг — рукопожатие. Скрипт реально открывает соединение и проходит согласование X.224, показывая, требуется ли NLA и какой сертификат предъявляется. Это единственная проверка, которая не верит конфигурации, а проверяет поведение.
Замеры и цифры
Проверено 13.11.2026, двумя проверками.
| Что | Значение | Как |
|---|---|---|
RDP-Tool.ps1 из релиза |
218 353 байта, SHA-256 ca3f89c3…dfcf2598 |
скачивание ассета |
Совпадение с SHA256SUMS.txt |
совпало | сравнение хешей |
| Архив релиза | RDP-Diagnostic-Tool-5.0.1.zip, 68 554 байта |
просмотр ассетов |
| Строк в скрипте | 4 354 | подсчёт |
| Функций в скрипте | 82 | подсчёт ^function |
| Версия внутри файла | [version]'5.0.1' |
поиск по коду |
| Синтаксис | 0 ошибок | разбор парсером PowerShell |
| BOM | присутствует (EF BB BF) | побайтовая проверка |
-Version |
v5.0.1 (2026-10-10), отчёт с идентификатором |
запуск |
Живой прогон -DiagnoseOnly |
48 проверок в отчёте, 209 строк вывода | запуск с -SkipSlowChecks |
| Код выхода прогона | 2 — «есть ошибки или предупреждения» | фактический код |
| JSON-отчёт | 17 429 байт, ключи tool, version, summary, results, remediations |
разбор файла |
| HTML-отчёт | 20 508 байт, самодостаточный | проверка размера |
Отчёт стоит прочитать не по диагонали. В нашем прогоне на тестовой машине он показал одновременно: отсутствующий rdpudd.dll, необходимость перезагрузки из-за отложенных операций с файлами, профиль сети «Public» (публичные сети блокируют RDP по умолчанию), отсутствие шлюза по умолчанию и остановленный Microsoft Defender. Каждый пункт снабжён рекомендацией — от sfc /scannow до -ForcePrivateNetwork.
Отдельно полезен итоговый блок: инструмент пишет готовую строку подключения вида mstsc /v:<адрес> с указанием порта и требований NLA. Это мелочь, которая экономит переписку «а какой у нас порт».
Сильные стороны продукта
- Аудит целиком, а не по частям. Стек проверяется в одном прогоне, без ручного обхода.
- Безопасное поведение по умолчанию. Без параметров — только чтение; изменения требуют режима и прав.
-WhatIfна изменениях. Можно увидеть план до применения.- Доказательство протоколом.
-TestRdpTargetпроверяет рукопожатие, а не галочки в реестре. - Отчёт для людей и для машин. HTML читают глазами, JSON — мониторингом.
- Один файл без зависимостей. Доставка на проблемную машину тривиальна.
- Самопроверка обновления.
-CheckUpdateотдаёт отдельный код, что удобно в конвейере. - Скриптовые коды выхода. Понятные числа вместо разбора текста.
Установка
# скачать скрипт и проверить контрольную сумму
Invoke-WebRequest https://github.com/paulmann/RDP-Diagnostic-Tool/releases/download/5.0.1/RDP-Tool.ps1 -OutFile RDP-Tool.ps1
Get-FileHash .\RDP-Tool.ps1 -Algorithm SHA256
# пробный прогон: только чтение
.\RDP-Tool.ps1 -DiagnoseOnly -ExportJson report.json
# полноценный аудит с HTML-отчётом
.\RDP-Tool.ps1 -ExportReport report.html -ExportJson report.json
| Требование | Значение |
|---|---|
| PowerShell | системный; проверено на PowerShell 7.6 |
| Права | чтение — обычные; ремонт — администратор |
| Политика запуска | нужен обход для локального файла: -ExecutionPolicy Bypass |
| Сеть | не требуется для аудита; нужна для обновления |
| Редакция | Windows Home не поддерживает RDP — код 3 |
Настройка
| Что настроить | Как |
|---|---|
| Порт | -SetPort 3390 (вместе с режимом включения) |
| Права на вход | -AddUser "DOMAIN\user" |
| Сетевой профиль | -ForcePrivateNetwork только для доверенной сети |
| Глубина проверок | -SkipSlowChecks — без DISM и прочих долгих проб |
| Проверка перезагрузки | -SkipRebootCheck |
| Открытие отчёта | -NoBrowser, чтобы не поднимать браузер |
| Вывод | -Quiet, -NoColor, -NoEmoji для скриптов |
flowchart TD
M{"режим"} --> D["-DiagnoseOnly: чтение"]
M --> E["-EnableRDP: включить и починить"]
M --> X["-DisableRDP: закрыть"]
D --> C{"код выхода"}
E --> C
C --> C0["0: готово"]
C --> C2["2: есть проблемы"]
C --> C3["3: редакция не поддерживается"]Коды выхода
| Код | Значение |
|---|---|
| 0 | успех, система готова |
| 1 | критические проблемы, RDP не заработает |
| 2 | ошибки или предупреждения, RDP работает с дефектами |
| 3 | неподдерживаемая редакция (Windows Home) |
| 4 | не выполнено предварительное условие |
| 5 | есть новая версия |
| 6 | обновление не удалось |
| 99 | необработанная ошибка скрипта |
Код 2 — самый частый и самый коварный: он означает «работает, но не так, как должно». В конвейере его легко принять за успех, если проверять только «не ноль». Разница между «подключиться можно» и «настроено правильно» — это и есть разница между нулём и двойкой, и её стоит сохранять в мониторинге, иначе смысл разделения теряется.
Что видно в отчёте, если читать по порядку
Отчёт устроен как разговор: сначала «что это за машина», потом «что нашлось», потом «что делать».
Начинается он с идентификатора прогона и времени — мелочь, которая нужна, когда отчётов за неделю накопилось двадцать. Дальше sysinfo: версия системы, адреса, параметры запуска. Это контекст, без которого вывод читается неверно: например, «публичный профиль сети» на сервере в стойке — норма, а на рабочей станции в офисе — вероятная причина отказа.
Потом идёт список результатов. В нашем прогоне их 48, и они разные по весу: часть — информация (Defender: Stopped), часть — прямая причина отказа (NO GATEWAY), часть — предупреждение о будущем (Pending reboot). Инструмент не смешивает их в один счётчик, а показывает с рекомендацией.
Поле remediations в JSON — это заготовки исправлений. В аудите они пусты, при ремонте заполняются: видно, что именно было изменено. Для журнала работ это ценнее, чем «сделал, работает».
И финальный блок — строка подключения. mstsc /v:<адрес> с портом и требованием NLA. Она выглядит как украшение, но именно её чаще всего просят в переписке с коллегами: готовый ответ вместо «посмотри в настройках и скажи мне порт».
Почему рукопожатие важнее галочек
Конфигурация RDP живёт в нескольких местах одновременно: реестр, политики домена, параметры службы, правила брандмауэра. Проверить каждое — не значит проверить результат: настройки могут быть верными по отдельности и противоречить друг другу.
Рукопожатие X.224 проверяет то, что видит клиент: сервер отвечает, версия протокола согласуется, требования безопасности объявляются. Это тест поведения, а не намерения.
Практическая разница появляется при разборе жалобы «с моей машины не подключается, а с соседней подключается». Конфигурация сервера одна и та же, значит причина на стороне клиента или сети — и -TestRdpTarget с разных машин покажет, где именно начинается расхождение.
Есть и ограничение: рукопожатие не проверяет аутентификацию. Того, что нужный пользователь действительно войдёт, оно не докажет — для этого нужен реальный вход.
Где инструмент экономит время, а где нет
Экономит на рутине: обход полутора десятков мест, сбор отчёта, проверка порта и брандмауэра вместе, копия конфигурации для сравнения «до и после».
Не экономит на решении. Что делать с публичным профилем сети, отключать ли NLA, добавлять ли пользователя в группу — вопросы безопасности, и инструмент на них не отвечает. Он даёт материал и рекомендации, но выбор остаётся за администратором.
Не заменяет и разбор журналов: он показывает события RDP, но интерпретировать причину отказа по коду ошибки 4625 всё равно придётся человеку.
И отдельно: инструмент не работает «через сеть» как агент. Запуск на каждой машине — отдельный прогон; централизованного сбора нет. Для парка машин это значит, что доставку скрипта и сбор отчётов надо организовать отдельно.
Подводные камни
- Код 2 — не успех. Часть проблем остаётся, просто они не мешают подключиться прямо сейчас.
- Код 99 — это баг, а не настройка. Необработанная ошибка скрипта: нужно сообщать, а не «дочинивать» руками.
- Публичный профиль блокирует RDP. Перевод в «частный» — осознанное решение, а не автоматическое: в кафе и гостиницах так делать нельзя.
-DisableNLAснижает защиту. Параметр существует, но включать его стоит только по необходимости и с пониманием риска.- Порт меняется в двух местах. После
-SetPortпроверьте правило брандмауэра, иначе RDP «есть», а подключиться нельзя. - Перезагрузка не косметика. Отложенные операции с файлами означают, что часть изменений не применилась.
- Windows Home не поддерживает RDP. Код 3 — это ответ по существу, а не сбой инструмента.
- Запуск локального файла требует обхода политики. В рабочем домене это может быть запрещено — согласуйте способ запуска заранее.
- Отчёт содержит чувствительные данные. В JSON есть адреса, имена машин и конфигурация; публиковать его как есть не стоит.
-ExportReportоткрывает браузер. В скрипте используйте-NoBrowser.- Версия 5.0.1 чинила только обновление. Само содержимое проверок не менялось: если рассчитывали на новые возможности, их здесь нет.
-WhatIfпоказывает план, но не гарантирует. Часть изменений зависит от служб и перезагрузки.
Аудит парка машин
Один прогон на одну машину — не то, что нужно администратору двадцати серверов. Простой способ собрать картину парка без сторонних систем.
Первый шаг: разложить отчёты по именам машин. -ExportJson "$env:COMPUTERNAME.json" даёт файл, который потом легко собрать в одну папку.
Второй: доставка. Скрипт лежит в общем каталоге или на внутреннем сервере; запуск — через планировщик задач или систему управления конфигурациями, которая уже есть.
Третий: сбор. JSON-отчёты копируются на один хост, дальше читаются любым удобным средством — от PowerShell до простого скрипта на Python.
Что смотреть в общей картине: не отдельные проблемы, а закономерности. Если у половины машин публичный профиль сети, вопрос не в настройке каждой, а в политике. Если у всех «требуется перезагрузка» — проблема в регламенте обновлений.
Четвёртый: сравнение. Раз в месяц прогон, раз в месяц сравнение кодов выхода. Рост числа машин с кодом 2 — сигнал, что настройки расходятся.
И честное ограничение: у инструмента нет понятия «парк». Всё вышеописанное — надстройка над одиночными прогонами, а не функция продукта.
Коды выхода в конвейере
Числа здесь продуманы, но читать их надо аккуратно.
| Что проверять | Как |
|---|---|
| Критичность | код 1 — повод для тревоги, 2 — для задачи, 0 — тишина |
| Проверка обновлений | код 5 — «есть новая версия», не ошибка |
| Неподдерживаемая редакция | код 3 — отдельная ветка сценария |
| Сбой обновления | код 6 — повод разобраться, а не повторять вслепую |
| Ошибка скрипта | код 99 — заявка разработчику с логом |
В мониторинге удобно разделять «работает» и «настроено правильно»: код 0 — оба условия, код 2 — первое без второго. Смешивать их в одну метрику значит потерять различие, ради которого инструмент и делался.
Что было бы в заметке о версии
Это обзор продукта, поэтому список изменений не пересказывается. Но про 5.0.1 стоит знать одно: исправление касалось только самообновления. В PowerShell 7 ответ на скачивание приходит как массив байт, а валидатор ждал строку и падал до записи файла — то есть обновление не срабатывало ни в одном релизе. Теперь содержимое нормализуется, а регрессионный тест подставляет в проверку форму реального ответа.
Для читателя это полезно как напоминание общего свойства: самопроверка, которая проверяет данные не того типа, чем приходят на самом деле, выглядит работающей ровно до первого реального запуска.
Чек-лист
- [ ] Скачать
RDP-Tool.ps1и сверить SHA-256 сSHA256SUMS.txt. - [ ] Запустить без параметров — это безопасный аудит только на чтение.
- [ ] Прочитать сводку: сначала «поддерживается ли», потом детали.
- [ ] Сохранить JSON-отчёт как точку отсчёта.
- [ ] Проверить блок «как подключиться»: адрес, порт, NLA.
- [ ] При планировании ремонта запустить с
-WhatIf. - [ ] Выполнить ремонт под администратором, осознанно выбрав параметры.
- [ ] Перезагрузить машину, если инструмент этого требует.
- [ ] Повторить аудит и сравнить JSON до и после.
- [ ] Проверить рукопожатие:
-TestRdpTarget <адрес>. - [ ] Убрать отчёт с чувствительными данными из общих папок.
Где инструмент не нужен
Границы стоит назвать прямо.
Не нужен, когда RDP не включён вовсе и это ожидаемо: достаточно одной команды и одной настройки.
Не нужен как средство постоянного мониторинга: у него нет агента и расписания, а запуск по таймеру на сотне машин превратится в самодельную систему сбора.
Не нужен вместо понимания протокола. Он подсказывает, что делать, но не объясняет, почему именно так: для разбора нестандартных случаев придётся читать про NLA, TLS и цепочку сертификатов.
И не нужен как замена регламента безопасности. Инструмент умеет отключать NLA и открывать профиль сети — это ровно те действия, которые без политики делают хуже.
Зато нужен там, где машина «почти работает»: подключение идёт через раз, у части пользователей, после перезагрузки. Именно в таких случаях перебор полутора десятков мест вручную занимает часы, а прогон — минуту. И ещё нужен при приёмке: свежая машина после установки — хороший повод снять базовый отчёт, чтобы через полгода было с чем сравнивать.
FAQ
Инструмент что-то меняет без моего согласия?
Нет. Без параметров идёт аудит только на чтение; изменения требуют режима или действия и повышенных прав.
Почему он находит проблемы, хотя RDP работает?
Потому что проверяется весь стек, включая то, что не мешает подключению прямо сейчас: состояние обновлений, профиль сети, антивирус.
Что означает код 2?
Ошибки или предупреждения: RDP работает, но с дефектами. Для конвейера это не «успех», а «нужно внимание».
Можно ли применить на Windows 10 Home?
Нет, RDP там не поддерживается: инструмент вернёт код 3.
Есть ли работа с удалёнными машинами?
Да, -TestRdpTarget может проверить рукопожатие с удалённым хостом, не проходя аутентификацию.
Нужны ли модули из галереи?
Нет: один файл, системный PowerShell.
Что изменилось в 5.0.1?
Исправлено самообновление: в PowerShell 7 ответ на скачивание приходит как массив байт, и проверка падала до записи файла. Теперь содержимое нормализуется, а регрессионный тест покрывает этот случай.
Итог
RDP Diagnostic Tool 5.0.1 решает задачу, которая обычно упирается в «пойди по списку и не забудь полсотни мест»: 50+ проверок, отчёт с готовыми исправлениями и проверка протоколом вместо веры в галочки. Прогон подтвердил обещания: 218 353 байта, 82 функции, ноль ошибок синтаксиса, 48 проверок в отчёте, понятные размеры JSON и HTML, код выхода 2 при найденных проблемах. Границы честные: ремонт требует прав, публичный профиль сети блокирует RDP по замыслу, а код 2 нельзя читать как «всё хорошо».
Цитата: Конфигурация говорит, что RDP разрешён; рукопожатие говорит, работает ли он.
Связанные материалы
- md-scribe-3-1-0 — другой инструмент с той же идеей самопроверки после обновления.
- sr-search-replace: замена по дереву с журналом — про коды выхода и предпросмотр изменений.
- Bash WP-CLI Update: обслуживание парка WordPress — контракт кодов выхода в bash-утилите.
- Инкрементальный бэкап rsync с Unix на Windows — про проверку восстановления, без которой бэкап не бэкап.
- Релиз 5.0.1 — заметки и ассеты.
LLM Summary
- Тема: RDP Diagnostic & Remediation Tool 5.0.1 — PowerShell-скрипт для аудита, ремонта и проверки стека RDP на Windows.
- Поставка: один файл
RDP-Tool.ps1— 218 353 байта, 4 354 строки, 82 функции, 0 ошибок синтаксиса по парсеру; в файле$script:ToolVersion = [version]'5.0.1', BOM присутствует. - Проверки: более 50 — редакция ОС, реестр и групповые политики, службы терминалов, брандмауэр, порт, TLS-сертификат, права, антивирус, журналы событий RDP.
- Режимы:
-DiagnoseOnly(по умолчанию, только чтение),-EnableRDP,-DisableRDP,-CheckUpdate,-Update; действия —-SetPort,-DisableNLA,-AddUser,-RestartServices,-ForcePrivateNetwork. - Проверка протоколом:
-TestRdpTarget host[:port]выполняет реальное согласование X.224 и показывает требования NLA без аутентификации. - Коды выхода: 0 успех; 1 критично; 2 предупреждения; 3 неподдерживаемая редакция; 4 не выполнены предпосылки; 5 есть обновление; 6 обновление не удалось; 99 необработанная ошибка.
- Проверено 13.11.2026: SHA-256
ca3f89c398a68975018276dcc3ec9a158409ed1ca4145f9cebe33b74dfcf2598совпал сSHA256SUMS.txt; архив 68 554 байта;-Versionпечатаетv5.0.1 (2026-10-10). - Живой прогон:
-DiagnoseOnly -SkipSlowChecks— 48 проверок в отчёте, 209 строк вывода, код выхода 2; найдены отсутствующийrdpudd.dll, требуемая перезагрузка, публичный профиль сети, отсутствие шлюза по умолчанию, остановленный Defender; JSON — 17 429 байт (ключиtool,version,summary,results,remediations), HTML — 20 508 байт. - Ограничения: ремонт требует прав администратора; Windows Home не поддерживает RDP; публичные профили сети блокируют RDP по замыслу; отчёты содержат чувствительные данные.
- Версия 5.0.1 исправляет только самообновление: в PowerShell 7
Invoke-WebRequestотдаёт.Contentкак массив байт, из-за чего валидатор падал до записи файла. - Ссылки: https://github.com/paulmann/RDP-Diagnostic-Tool, https://github.com/paulmann/RDP-Diagnostic-Tool/releases/tag/5.0.1
Промт для агента (установка и настройка)
Готовый промт: скопируйте блок целиком. Источник шагов — README.md и встроенная справка -Help (файла AGENTS.md в репозитории нет — проверено 13.11.2026), сверено с прогоном на живой машине.
Задача: провести аудит RDP на Windows-машине, при необходимости починить стек и доказать работоспособность рукопожатием.
Материалы:
- репозиторий: https://github.com/paulmann/RDP-Diagnostic-Tool
- README: https://github.com/paulmann/RDP-Diagnostic-Tool/blob/main/README.md
- релиз и SHA256SUMS: https://github.com/paulmann/RDP-Diagnostic-Tool/releases/tag/5.0.1
Шаг 1. Скачать RDP-Tool.ps1 и сверить хеш: Get-FileHash .\RDP-Tool.ps1 -Algorithm SHA256 — сравнить с SHA256SUMS.txt.
Шаг 2. Запустить аудит только на чтение: .\RDP-Tool.ps1 -DiagnoseOnly -SkipSlowChecks -ExportJson before.json -ExportReport before.html -NoBrowser
Шаг 3. Прочитать сводку в порядке слоёв: редакция и роль, конфигурация, службы, сеть и брандмауэр, TLS и права, журналы.
Шаг 4. Зафиксировать код выхода: 0 — готово, 1 — критично, 2 — предупреждения, 3 — редакция не поддерживает RDP.
Шаг 5. Перед ремонтом выполнить примерку: .\RDP-Tool.ps1 -EnableRDP -WhatIf
Шаг 6. Выполнить ремонт под администратором с осознанными параметрами (-SetPort, -AddUser, -ForcePrivateNetwork).
Шаг 7. Перезагрузить машину, если инструмент сообщает об отложенных операциях.
Шаг 8. Повторить аудит: .\RDP-Tool.ps1 -DiagnoseOnly -ExportJson after.json
Шаг 9. Сравнить before.json и after.json по полю results и коду выхода.
Шаг 10. Проверить рукопожатие: .\RDP-Tool.ps1 -TestRdpTarget <адрес:порт>
Шаг 11. Убрать отчёты из общих папок: в них адреса, имена машин и конфигурация.
Запрещено:
- запускать ремонт без -WhatIf на первом проходе;
- включать -ForcePrivateNetwork в недоверенной сети;
- отключать NLA без письменной причины: это снижает защиту;
- считать код выхода 2 успехом;
- открывать порт 3389 в интернет вместо VPN или RD Gateway;
- применять на Windows Home: RDP там не поддерживается, ожидаем код 3;
- публиковать JSON-отчёт без вычистки адресов и имён.
Что считать успехом: аудит выполнен дважды, коды выхода и JSON сравнены, рукопожатие проходит, отчёт сохранён вне общих папок, изменения задокументированы.