Некоторые рабочие станции перестали отправлять отчеты на WSUS |сброс авторизации — Windows admin blog

Как починить wsus agent на клиентской машине

21.06.2021 – Пожалуйста, ищите последнюю версию этого документа по ссылке Как починить Windows Update?

Обновлено 12.03.2021 – добавлен скрипт для восстановление доступов к реестру и системным папкам

Ранее, я уже писал, как сверить список компьютеров, которые есть в AD с теми, которые есть во WSUS. Если эти списки не совпадают, то у вас проблема и часть компьютеров не обновляется.

В самом простом случае, вы забыли сделать групповую политику, которая настраивает клиентские компьютеры и серверы на обновление со WSUS, или сконфигурировали ее так, что она не применяется. Ручная настройка параметров через gpedit.msc тоже допустима, но только для тех компьютеров, которые не входят в домен.

Итак, политика применяется, но все равно компьютер не обновляется. Что делать и как лечить?

Для простоты, выкладываю все эти скрипты в уже готовом виде: Wsus-fix

1. Первый скрипт самый простой, и, на самом деле, даже не для лечения используется, а для того, чтобы принудительно запустить проверку на обновление, ну и, заодно, чистит папку, в которой накапливаются дистрибутивы уже установленных обновлений:

wsus_detect_manual.cmd

net stop wuauserv && net stop bits && net stop cryptsvc

del /f /s /q %windir%SoftwareDistributiondownload*.*

net start wuauserv && net start bits && net start cryptsvc

wuauclt.exe /detectnow exit

2. Второй скрипт нужен для того, чтобы “оживить” неработающий сервис WSUS. В нем идет чистка от старых обновлений, после чего папки SoftwareDistribution и Catroot2 переименовываются, что при перезапуске сервиса приведет к их пересозданию. Затем системные dll библиотеки перерегистрируются.

fix_wsus_service.cmd

net stop bits
net stop wuauserv
net stop cryptsvc

del /f /s /q %windir%SoftwareDistributiondownload*.*

ren %systemroot%System32Catroot2 Catroot2.old
ren %systemroot%SoftwareDistribution SoftwareDistribution.old

REM del /f /s /q %windir%SoftwareDistribution*.*

del /f /s /q %windir%windowsupdate.log

%windir%system32regsvr32.exe /U /s %windir%system32vbscript.dll
%windir%system32regsvr32.exe /U /s %windir%system32mshtml.dll
%windir%system32regsvr32.exe /U /s %windir%system32msjava.dll
%windir%system32regsvr32.exe /U /s %windir%system32msxml.dll
%windir%system32regsvr32.exe /U /s %windir%system32actxprxy.dll
%windir%system32regsvr32.exe /U /s %windir%system32shdocvw.dll
%windir%system32regsvr32.exe /U /s %windir%system32Mssip32.dll
%windir%system32regsvr32.exe /U /s %windir%system32wintrust.dll
%windir%system32regsvr32.exe /U /s %windir%system32initpki.dll
%windir%system32regsvr32.exe /U /s %windir%system32dssenh.dll
%windir%system32regsvr32.exe /U /s %windir%system32rsaenh.dll
%windir%system32regsvr32.exe /U /s %windir%system32gpkcsp.dll
%windir%system32regsvr32.exe /U /s %windir%system32sccbase.dll
%windir%system32regsvr32.exe /U /s %windir%system32slbcsp.dll
%windir%system32regsvr32.exe /U /s %windir%system32cryptdlg.dll
%windir%system32regsvr32.exe /U /s %windir%system32Urlmon.dll
%windir%system32regsvr32.exe /U /s %windir%system32Oleaut32.dll
%windir%system32regsvr32.exe /U /s %windir%system32msxml2.dll
%windir%system32regsvr32.exe /U /s %windir%system32Browseui.dll
%windir%system32regsvr32.exe /U /s %windir%system32shell32.dll
%windir%system32regsvr32.exe /U /s %windir%system32Mssip32.dll
%windir%system32regsvr32.exe /U /s %windir%system32atl.dll
%windir%system32regsvr32.exe /U /s %windir%system32jscript.dll
%windir%system32regsvr32.exe /U /s %windir%system32msxml3.dll
%windir%system32regsvr32.exe /U /s %windir%system32softpub.dll
%windir%system32regsvr32.exe /U /s %windir%system32wuapi.dll
%windir%system32regsvr32.exe /U /s %windir%system32wuaueng.dll
%windir%system32regsvr32.exe /U /s %windir%system32wuaueng1.dll
%windir%system32regsvr32.exe /U /s %windir%system32wucltui.dll
%windir%system32regsvr32.exe /U /s %windir%system32wups.dll
%windir%system32regsvr32.exe /U /s %windir%system32wups2.dll
%windir%system32regsvr32.exe /U /s %windir%system32wuweb.dll

:/>  Cmd объединяет текстовые файлы и 13 инструментов обработки текстов в командной оболочке

%windir%system32regsvr32.exe /s %windir%system32vbscript.dll
%windir%system32regsvr32.exe /s %windir%system32mshtml.dll
%windir%system32regsvr32.exe /s %windir%system32msjava.dll
%windir%system32regsvr32.exe /s %windir%system32msxml.dll
%windir%system32regsvr32.exe /s %windir%system32actxprxy.dll
%windir%system32regsvr32.exe /s %windir%system32shdocvw.dll
%windir%system32regsvr32.exe /s %windir%system32Mssip32.dll
%windir%system32regsvr32.exe /s %windir%system32wintrust.dll
%windir%system32regsvr32.exe /s %windir%system32initpki.dll
%windir%system32regsvr32.exe /s %windir%system32dssenh.dll
%windir%system32regsvr32.exe /s %windir%system32rsaenh.dll
%windir%system32regsvr32.exe /s %windir%system32gpkcsp.dll
%windir%system32regsvr32.exe /s %windir%system32sccbase.dll
%windir%system32regsvr32.exe /s %windir%system32slbcsp.dll
%windir%system32regsvr32.exe /s %windir%system32cryptdlg.dll
%windir%system32regsvr32.exe /s %windir%system32Urlmon.dll
%windir%system32regsvr32.exe /s %windir%system32Oleaut32.dll
%windir%system32regsvr32.exe /s %windir%system32msxml2.dll
%windir%system32regsvr32.exe /s %windir%system32Browseui.dll
%windir%system32regsvr32.exe /s %windir%system32shell32.dll
%windir%system32regsvr32.exe /s %windir%system32Mssip32.dll
%windir%system32regsvr32.exe /s %windir%system32atl.dll
%windir%system32regsvr32.exe /s %windir%system32jscript.dll
%windir%system32regsvr32.exe /s %windir%system32msxml3.dll
%windir%system32regsvr32.exe /s %windir%system32softpub.dll
%windir%system32regsvr32.exe /s %windir%system32wuapi.dll
%windir%system32regsvr32.exe /s %windir%system32wuaueng.dll
%windir%system32regsvr32.exe /s %windir%system32wuaueng1.dll
%windir%system32regsvr32.exe /s %windir%system32wucltui.dll
%windir%system32regsvr32.exe /s %windir%system32wups.dll
%windir%system32regsvr32.exe /s %windir%system32wups2.dll
%windir%system32regsvr32.exe /s %windir%system32wuweb.dll

net start bits
net start wuauserv
net start cryptsvc

wuauclt /detectnow

exit

3. Этот скрипт применяется в тех случаях, когда компьютер был недавно клонирован, или в тех, когда регистрации в WSUS у компьютера так и не произошло. Он отличается от предыдущего только предпоследней строчкой, в которой производится обнуление авторизации с перегенерацией идентификатора. Приведу только эту строчку:

wsus_resetaut_detect_manual.cmd

wuauclt.exe /resetauthorization /detectnow

4. Если нужно просто обнулить авторизацию, то можно воспользоваться конструкцией из предыдущего скрипта. Практика показала, что еще лучше удалять лишние ключи из реестра, для чего мы используем следующий скрипт

AU_Clean_SID.cmd

@echo on
net stop wuauserv
REG DELETE “HKLMSOFTWAREMicrosoftWindowsCurrentVersionWindowsUpdate” /v AccountDomainSid /f
REG DELETE “HKLMSOFTWAREMicrosoftWindowsCurrentVersionWindowsUpdate” /v PingID /f
REG DELETE “HKLMSOFTWAREMicrosoftWindowsCurrentVersionWindowsUpdate” /v SusClientId /f
net start wuauserv
wuauclt /resetauthorization /detectnow

5. Иногда, для того, чтобы все заработало нужно переустановить агента WSUS. Вначале нужно скачать latest Windows Update Agent, ну а затем установить соответствующую редакцию

для x32 версий Windows

windowsupdateagent30-x86.exe /wuforce

для x64 версий Windows

windowsupdateagent30-x64.exe  /wuforce

Если вы счастливый обладатель Itanium – догадаетесь сами 🙂

После установки агента нужно обязательно перезагрузиться.

6. Для “лечения” ошибок 0x80070005, т.е. ошибок доступа может пригодиться нижеприведенный скрипт. Он восстанавливает доступы для администраторов и системы к реестру и системным папкам.

Для выполнения этого скрипта понадобится майкрософтовская утилита subinacl.exe. Она входит в resource kit для Windows Server 2003, но пользоваться той версией, что входит туда не стоит, т.к. там неприятные ошибки. Следует скачать subinacl.exe версии 5.2.3790.1180.

:/>  Скачать Mz Ram Booster на русском бесплатно для Windows 10

Restore_registry_and_system_permission.cmd

@echo off
REM Применять при ошибках 0x80070005 Windows Update
subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f
subinacl /subkeyreg HKEY_CURRENT_USER /grant=administrators=f
subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f
subinacl /subdirectories %SystemDrive% /grant=administrators=f
subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=system=f
subinacl /subkeyreg HKEY_CURRENT_USER /grant=system=f
subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=system=f
subinacl /subdirectories %SystemDrive% /grant=system=f

Скрипт был найден в статье базы знаний Microsoft

Все эти скрипты можно выполнять практически автоматически, в случае возникновения проблем. Если в результате проблема таки не решена, то приходится разбираться уже плотнее. И тут нам пригодится тот самый windowsupdate.log, который лежит в корне папки Windows. Если компьютер проблемный, то файл этот большого размера. Для простоты, желательно его удалить перед тем как запускать скрипты. Почти во всех скриптах предусмотрена команда его удаления, но не все так просто. Не смотря на остановку сервиса wuauserv, обычно, его продолжают держать открытые IE и т.п. Поэтому, есть хитрый способ. Запускаю

notepad.exe %windir%windowsupdate.log

Выделяю весь текст, удаляю его и сохраняю вместо старого файла (не забыть в диалоге сохранения поменять тип файла на *.*, а то по умолчанию – *.txt)

Итак, вернемся к логу, коды ошибок WSUS 3 могут помочь в разбирательстве.

Одна из распространенных проблем со wsus клиентом на серверах может заключаться в том, что сам сервис может подключаться к WSUS через прокси, а этого не нужно и наоборот. Манипулировать этим поведением можно с помощью команды proxycfg

Доступ без прокси: proxycfg –d 
Доступ через прокси с опциональным указанием байпас листа: proxycfg –d
Проимпортировать пользовательские настройки: proxycfg –u

Стоит заметить, что есть случаи, когда заставить клиента обновляться со wsus так и не получается. У меня есть прецеденты с парочкой Windows Server 2003 R2, которые мне побороть так и не удалось. Поэтому я их обновляю через интернет 🙂

Свежие операционные системы типа Windows 7, Windows 2008 иногда “заводятся” с трудом. Для таких случаев, эмпирическим путем, был найден алгоритм типа:
1. Обновляемся первый раз с сайта microsoft с обновлением агента
2. Потом обновляем агента уже локально
3. А потом все начинает работать

Надеюсь, что плоды наших трудов кому-нибудь помогут.

Для простоты, выкладываю все эти скрипты в уже готовом виде: Wsus-fix

Некоторые рабочие станции перестали отправлять отчеты на wsus |сброс авторизации

Довелось наблюдать следующую картину: некоторые рабочие станции вдруг стали отваливаться от WSUS. При этом, по мере увеличения парка ПК с Windows 10, случаи стали происходить чаще, т.е. примечательно то, что данная проблема происходила только на компьютерах с Windows 10.

:/>  Отменить предыдущее действие на клавиатуре

Выявить причину или точную закономерность, к сожалению не удалось, и даже ПК, купленные в одной партии, с идентичными программно-аппаратными характеристиками вдруг вели себя по-разному: основная масса корректно взаимодействовала с WSUS, а некоторые станции в какой-то момент переставали сообщать о своем состоянии.

Есть, однако, предположение, что это как-то связано с установкой или попыткой установки Feature Upgrade (переход к новому билду ОС), но 100% подтверждения этому нет.

В консоли WSUS при этом можно наблюдать одну из следующих картин:

Некоторые рабочие станции перестали отправлять отчеты на WSUS |сброс авторизации — Windows admin blog

Рис. 1 — ПК в какой-то момент перестал отчитываться о своем состоянии

Некоторые рабочие станции перестали отправлять отчеты на WSUS |сброс авторизации — Windows admin blog

Рис. 2 — ПК есть на WSUS, но отчетов вообще не отправляет


РЕШЕНИЕ:

1. Первым делом нужно убедиться в правильной настройке адреса сервера WSUS на клиентской машине

Для этого проверяем ветку реестра:

HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsWindowsUpdate

2. Убеждаемся в доступности самого сервера WSUS с клиентской машины

ping, tracert, проверка порта telnet-ом и т.д.

3. Если предыдущие два пункта выполнены успешно, выполняем команду:

wuauclt /detectnow /resetauthorization

РЕКОМЕНДАЦИЯ: перед этим лучше удалить ПК на WSUS’е

Данная команда должна заново перерегистрировать станцию на сервере WSUS

ВАЖНО: Скорее всего, клиент «отрепортится» не сразу, и может пройти значительное количество времени (от нескольких десятков  минут и более)

4. Командой

wuauclt /reportnow

можно попробовать отправить статистику на WSUS вручную.

После успешного проделывания команд, рабочая станция на WSUS актуализируется:

Некоторые рабочие станции перестали отправлять отчеты на WSUS |сброс авторизации — Windows admin blog

Рис. 3 — ПК зарегистрировался на WSUS и корректно отправляет информацию

Скрипт reset windows update agent

В галерее скриптов Technet есть довольно полезный и простой скрипт для сброса компонентов центра обновлений — Reset Windows Update Agent. Скрипт универсальный и подходит для всех версий Windows: начиная с Windows XP и заканчивая последними версиями Windows 10. Рассмотрим, как им пользоваться.

Средство устранения неполадок центра обновления windows

Прежде чем перейти к сбросу конфигурации центра обновления Windows настоятельно рекомендуем сначала попробовать более простое и эффективное средство для автоматического исправления проблем в службе обновления Windows – средство устранения неполадок Центра обновления Windows (Windows Update Troubleshooter).