Подключение Windows-хоста к AWM

Один однострочник на целевом хосте — и он сам появляется в панели с автосгенерированным credential. Поддержка: Windows Server 2012 R2 / 2019 / 2022, Windows 10 / 11.

Что делает скрипт

  1. Форсит TLS 1.2 и проверяет права Administrator.
  2. Для 2012 R2 с PS 4 — ставит WMF 5.1 (KB3191564), просит ребут и повторный запуск.
  3. Переключает сетевой профиль с Public на Private (WinRM не работает на Public).
  4. Поднимает WinRM + HTTPS-listener 5986 + self-signed сертификат + firewall + auth.
  5. Создаёт/обновляет локального пользователя awm в группе «Администраторы» (поиск по SID, работает на любой локали).
  6. Генерит 24-символьный рандомный пароль для awm и отправляет credential в AWM-панель.
  7. Собирает все локальные IPv4 и отправляет их панели — она сама выберет RFC1918-адрес для ansible_host.
  8. Если self-register не прошёл (firewall/интернет) — печатает пароль в консоль для ручного ввода.
1

Запустить скрипт на хосте

RDP на хост, PowerShell от Administrator, вставь одной строкой:

PowerShell as Administrator:
[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12; iwr -UseBasicParsing https://awm.aplo.pw/bootstrap/enable-winrm.ps1 -OutFile $env:TEMP\enable-winrm.ps1; powershell -ExecutionPolicy Bypass -File $env:TEMP\enable-winrm.ps1
URL скачивания: awm.aplo.pw (прод, доступен с любой сети с интернетом). Скрипт сам ходит на staging-панель awm.beta.aplosoft.ru через proxy awm.aplo.pw/api/* — хосту достаточно доступа к проду.
2

Если Server 2012 R2 — будет ребут

  1. Первый прогон поставит WMF 5.1 (~5 минут) и попросит Restart-Computer -Force.
  2. Ждёшь пока хост вернётся (~5 минут), RDP снова, PowerShell as Administrator.
  3. Ту же команду ещё раз — второй прогон уже настроит WinRM и self-register.

Для Windows 10 / Server 2019 / 2022 — один прогон, без ребута (PS 5.1+ уже есть).

3

Одобрить хост в панели

После успешного прогона увидишь AWM: created as 'auto-HOSTNAME-IP' (enabled=False). Хост и его credential уже в БД — остаётся одобрить.
  1. Хосты — на жёлтом баннере видишь количество pending. У новой записи нажми «править»:
    • Переименовать с auto-RKSERVER61-192-168-6-99 → понятное имя (RKSERVER61).
    • Проверить ansible_host — панель подобрала первый RFC1918-адрес, но если staging видит хост по другому IP (через Kerio), поправь.
    • Проверить os_group и auth_group (обычно win_workgroup).
    • Credential уже привязан (awm-HOSTNAME-IP) — проверять не нужно.
    • Поставь галку «активен», сохрани.
  2. Кнопка Sync → Ansible в шапке — перегенерит inventory и зашифрованный vault.
  3. Запуски → Ping → выбрать хост из подсказок → Запустить. «WinRM OK» — готово.

Частые ошибки

Unable to load file … execution of scripts is disabled
→ если скрипт уже сохранён на диск, запускай powershell -ExecutionPolicy Bypass -File путь.ps1. Однострочник из шага 1 это делает сам.
-OutFile : Имя -OutFile не распознано
→ команду вставили в несколько строк. Вставлять одной строкой (через кнопку «Копировать» — без переносов).
Исключение брандмауэра WinRM … сетевое подключение Public
→ исправлено в текущей версии — скрипт автоматически переводит профиль с Public на Private. Если автопереключение не сработало: Параметры → Сеть → Свойства → Частная сеть.
Group 'Administrators' not found / Группа Administrators не найдена
→ исправлено — скрипт ищет группу по SID S-1-5-32-544, работает на любой локали.
MissingEndParenthesisInExpression / ParserError
→ старая консоль неправильно интерпретирует UTF-8. Исправлено: скрипт содержит BOM, рантайм-вывод на английском.
Self-register failed: Время ожидания операции истекло
→ хост не достучался до awm.aplo.pw. Проверить:
Test-NetConnection awm.aplo.pw -Port 443
Resolve-DnsName awm.aplo.pw
Если firewall/DNS не пропускает — в конце скрипта напечатан пароль, скопируй его, создай credential и хост вручную в панели.
ntlm: Connection refused (порт 5986)
→ для 2012 R2: второй прогон скрипта ещё не сделан после установки WMF 5.1. Перезайди по RDP и повтори команду.
basic: the specified credentials were rejected
→ ранее это было при ручном вводе неверного пароля. Сейчас скрипт сам генерит пароль и отдаёт его панели — ошибки быть не должно. Если всё же увидел — проверь, что хост привязан к своему credential awm-HOSTNAME-IP, а не к общему.
Could not match supplied host pattern
→ хост есть в панели, но disabled (новые self-registered приходят выключенными), либо не нажата Sync → Ansible.

Параметры скрипта (опционально)

ПараметрЭффект
-EnableBasicAuth:$falseНе включать Basic auth (в AD-окружении с NTLM/Kerberos).
-SkipWmfInstallПропустить установку WMF 5.1.
-ListenerPort 5986Другой порт HTTPS listener.

Пример с параметрами: powershell -ExecutionPolicy Bypass -File $env:TEMP\enable-winrm.ps1 -EnableBasicAuth:$false

→ Посмотреть исходник скрипта