PowerShell · 22.09.2023

Перерегистрация на WSUS

Проблема перерегистрации любого хоста на сервере обновлений решается одной простой командой:

wuauclt /detectnow /resetAuthorization

Вот только её надо исполнять непосредственно из консольной сессии (сидя непосредственно за нужным компьютером) или колдовать с той самой утилитой. Групповые политики, само собой, отпадают, если вам не нужно зацикливать перерегистрацию или возиться со списком «да-нет» хостов.

Для собственного удобства — написал простенький скрипт на PowerShell:

[System.Console]::Title = "Перерегистрация удалённого хоста на WSUS"
while($true)
{
    $remotehostname = Read-Host "Имя удалённого хоста"
    [System.Console]::Title = "Перерегистрация $remotehostname на WSUS"
    try
    { 
        Write-Host "Отправка команды на $remotehostname" -ForegroundColor Cyan
        Set-Service -ComputerName $remotehostname -Name WinRM -Status Running -PassThru | Out-Null
        Invoke-Command -ComputerName $remotehostname -ScriptBlock { wuauclt /detectnow /resetAuthorization }
        Write-Host "Команда успешно выполнена!" -ForegroundColor Green
        Write-Host
    }
    catch { Write-Host "Ошибка отправки команды" -ForegroundColor Red; Write-Host }   
}

Скрипт спрашивает имя хоста и выполняет на нём команду перерегистрации хоста на сервере обновлений. Если что-то идёт не так — возвращается ошибка. Всё выполняется в цикле, так что можно добавлять хосты на сервер в ручном режиме, пока сами не впадёте в рекурсию.