Команды wsus windows 10

Обновлено: 06.07.2024

В одной из предыдущих статей по службам Windows Server Update Services, а именно в статье «Планирование архитектуры WSUS», я говорил, что для каждой модели развертывания серверов WSUS целесообразно использовать группы компьютеров. Группы позволяют вам предотвратить развертывание обновлений, которые могут ухудшить работоспособность операционной системы ваших сотрудников. Например, вы можете создать группы для тестирования и пилотного развертывания обновлений, предназначенные для лабораторного тестирования новых обновлений, а также развертывания в испытательной группе, сотрудники которой являются компетентными ИТ-специалистами, помогающими идентифицировать и устранять возникшие неполадки. Помимо этого, вы можете создавать дополнительные группы для развертывания обновлений для различных моделей компьютеров, например, отдельные группы для почтовых серверов, для контроллеров домена, а также группы, в которые будут входить ваши пользователи. Настройка пользователей на конкретные группы позволяет вам гарантировать, что каждый компьютер получит нужное рабочее обновление в удобное для пользователя время. Стоит обратить внимание, что каждый клиентский компьютер может быть настроен на подключение только к одному серверу обновлений. Другими словами, если в вашей организации разворачивается дополнительный WSUS-сервер и компьютер пользователя перенаправляют на второй WSUS-сервер, он автоматически перестает подключаться к первому серверу. Несмотря на это, на том сервере обновлений, который использовался клиентом ранее, клиентский компьютер все еще останется в списке компьютеров и групп, а сам сервер будет вам периодически напоминать о времени последнего подключения компьютера к данному серверу.

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

Создание групп компьютеров и назначение компьютеров в группы со стороны сервера

Создание групп компьютеров с помощью оснастки «Update Services» – процесс довольно таки простой. Для того чтобы создать дополнительную группу, выполните следующие действия:

  1. Нажмите на кнопку «Пуск», выберите группу «Администрирование», а затем откройте компонент «Windows Server Update Services»;
  2. В дереве консоли «Update Services» разверните узел с именем сервера, узел «Компьютеры», нажмите правой кнопкой на группе «Все компьютеры» или на другой группе, внутри которой вам нужно создать новую группу, а затем из контекстного меню выберите команду «Добавить группу компьютеров…»;
  3. В диалоговом окне «Добавление группы компьютеров», в текстовом поле «Имя» введите имя новой группы, например, «Тестирование» и нажмите на кнопку «Добавить», как показано на следующей иллюстрации:

*

Рис. 1. Добавление группы компьютеров

Если в вашей организации для назначения компьютеров в группы компьютеров не используется назначение со стороны клиентов средствами параметров групповых политик или системного реестра, вы можете назначать клиентские компьютеры в группы со стороны сервера, а именно средствами оснастки «Update Services». Для того чтобы назначить компьютер в группу компьютеров со стороны сервера, выполните следующие действия:

  1. В оснастке «Update Services», в дереве консоли разверните узлы «Компьютеры» и «Все компьютеры», после чего выберите группу «Неназначенные компьютеры», где должны отображаться компьютеры, которые не были назначены в конкретные группы;
  2. Выделите компьютер, который следует поместить в определенную группу, щелкните на нем правой кнопкой мыши и из контекстного меню выберите команду «Изменить членство»;
  3. В диалоговом окне «Настройка членства в группах компьютеров» установите флажок для одной или нескольких групп, в которые нужно включить компьютер и нажмите на кнопку «ОК».

Назначение клиентских компьютеров в группы компьютеров со стороны клиента

В большинстве случаев, в организациях принято назначать клиентские компьютеры в группы компьютеров со стороны клиента, а именно средствами групповых политик. Данный способ позволяет автоматически назначать все настройки клиентам, которые добавляются в сеть. Прежде чем переходить к процедуре назначения компьютера в группу компьютеров средствами групповых политик, рассмотрим параметры групповой политики, доступные для управления клиентскими компьютерами Windows Server Update Services:

  • Включить рекомендуемые обновления через автоматическое обновление. Используя этот параметр групповой политики, вы можете определить, будет ли на клиентском компьютере служба автоматического обновления Windows доставлять обновления, которые помечены как важные и рекомендуемые из Центра обновления Windows. В том случае, если вы отключите данный параметр, то будут доставляться только важные обновления;
  • Включить уведомление о наличии программ. Этот параметр позволяет вам отображать подробные расширенные уведомления от службы центра обновления Майкрософт пользователям, что ускоряет установку и использование дополнительных приложений;
  • Задержка перезагрузки при запланированных установках. При помощи этого параметра вы можете указать промежуток времени, в течение которого операционная система будет ожидать перед плановой перезагрузкой. Данный параметр применяется для службы автоматического обновления только в том случае, если установка обновлений настроена по расписанию, в противном случае вам придется выполнять перезагрузку в ручном режиме. Если данный параметр политики отключен, то перед перезагрузкой компьютер будет ожидать 15 минут, если же вы включите данный параметр, то промежуток времени будет изменен до 5 минут;
  • Настройка автоматического обновления. Данный параметр групповой политики позволяет вам определить, как именно клиентский компьютер будет получать обновления для операционной системы и приложений. Если вы включите данный параметр, вам нужно будет выбрать один из четырех параметров, которые выполняют те же функции, что и параметры, расположенные в раскрывающемся списке «Важные обновления» в окне настроек параметров центра обновления Windows. Если вы выберите параметр «2 – уведомление о загрузке и установке», то при обнаружении операционной системой новых обновлений, в области уведомлений будет отображаться значок, свидетельствующий о том, что вы можете загрузить и установить обновления. После того как будут выбраны обновления, необходимые для загрузки, они будут загружены в фоновом режиме и вам нужно будет их установить. Данный вариант приемлем для персонала, тестирующего обновления, а также для некоторых домашних пользователей, но его ни в коем случае не стоит выбирать для пользователей в организации, так как следить за состоянием своей операционной системы будет от силы один из десяти ваших пользователей. Если установить параметр «3 – авт. загрузка и уведом. об устан», что равносильно значению «Загружать обновления, но решение об установке принимается мной» в графическом пользовательском интерфейсе, то после того как операционная система обнаружит новые обновления, она их автоматически загрузит на компьютер в фоновом режиме и вам нужно будет только установить загруженные обновления. Выбрав параметр «4 – авт. загрузка и устан. по расписанию», то обновления будут автоматически загружены и установлены в указанное в данном параметре время, причем, если для завершения установки понадобится перезагрузить компьютер, он будет перезагружен в автоматическом режиме. Установив параметр под номером 5, вы разрешите локальным администраторам выбирать режим вывода уведомлений об обновлениях и их установке, что, по моему мнению, стоит выбирать только в самых крайних случаях.
  • Не выполнять автоматическую перезагрузку при автоматической установке обновлений, если в системе работают пользователи. Этот параметр групповой политики позволяет для завершения установки обновлений по расписанию запретить автоматическую перезагрузку компьютера, тем самым дав пользователям возможность перезагружать систему автоматически при первом входе в систему;
  • Не задавать по умолчанию параметр «Установить обновления и завершить работу» в диалоговом окне «Завершение работы Windows». Используя текущий параметр, вы можете определить, будет ли в диалоговом окне завершения работы операционной системы по умолчанию отображаться команда «Установить обновления и завершить работу». В том случае, когда завершение установки обновления требует перезагрузки, то отображается именно эта команда, но если включить данный параметр групповой политики, то в диалоговом окне завершения работы операционной системы будет установлена по умолчанию та команда, которая задана в настройках операционной системы;
  • Не отображать параметр «Установить обновления и завершить работу» в диалоговом окне «Завершение работы Windows». Многие из вас знают, что если на компьютере есть обновления, которые будут установлены после перезагрузки компьютера, то команда «Завершить работу» меняется на «Установить обновления и завершить работу». Такое название команды может довести некоторых пользователей практически до предынфарктного состояния. Чтобы избежать таких ситуаций вы можете воспользоваться данным параметром групповой политики. При включенном параметре команда «Завершение работы» всегда будет иметь такое название даже в том случае, если на компьютере присутствуют обновления, которые будут установлены после перезагрузки или выключения компьютера;
  • Перенос запланированных автоматических установок обновлений. Данный параметр групповой политики позволяет вам указать период ожидания после загрузки операционной системы до выполнения пропущенной ранее установки обновлений по расписанию. По умолчанию пропущенная установка обновлений по расписанию выполняется через одну минуту после загрузки системы, при отключении данного параметра, система будет ждать до следующей установки по расписанию. Если же вы включите данный параметр, то сможете указать период времени, в течение которого операционная система будет ждать до выполнения установки пропущенных обновлений;
  • Повторный запрос для перезагрузки при запланированных установках. Периодически практически у каждого пользователя случаются такие ситуации, когда он загружает и устанавливает обновления, но не хочет перезагружать компьютер для завершения установки некоторых обновлений. В этом случае каждые 10 минут выскакивает предупреждающее приглашения с предложением перезагрузить компьютер, которое может действовать некоторым людям на нервы. Если вы относитесь к таким пользователям, то этот параметр групповой политики разработан специально для вас. При помощи этого параметра вы можете определить период времени, через который пользователь увидит запрос для перезагрузки компьютера;
  • Разрешить пользователям, не являющимся администраторами, получать уведомления об обновлениях. По умолчанию, в том случае если у вас не выбрана установка обновлений по расписанию, только локальные администраторы компьютеров могут получать уведомления об обновлениях. Если же перед вами стоит задача дать наряду с локальными администраторами обычным пользователям возможность получать уведомления, а также устанавливать важные, рекомендуемые и необязательные обновления, то вам нужно воспользоваться текущим параметром групповой политики, причем, для установки обновлений пользователи даже не увидят диалогового окна UAC;
  • Разрешить клиенту присоединение к целевой группе. Именно при помощи этого параметра вы можете назначить клиентский компьютер в группу компьютеров сервера Windows Server Update Services. Если группа не указана, а пользователь подключается к WSUS-серверу, то вы сможете найти этот компьютер в группе «Неназначенные компьютеры». Если же вам нужно поместить пользователя не в одну группу, а в несколько, то разделите группы точками с запятой;
  • Разрешить немедленную установку автоматических обновлений. Помимо обновлений, которые для завершения установки требуют перезагрузку компьютера, есть и такие обновления, которые могут устанавливаться в работающей операционной системе без всяких перезагрузок компьютера. При помощи текущего параметра групповой политики вы можете задать службе автоматического обновления немедленную установку обновлений без прерывания каких-либо служб операционной системы или ее перезагрузки;
  • Разрешить прием обновлений с подписью из службы обновлений Майкрософт в интрасети. Если помимо обновлений из серверов Microsoft, ваш WSUS-сервер распространяет обновления, разработанные другими компаниями, которые подписаны сертификатом, расположенным в хранилище «Доверенные издатели» на локальном компьютере, то данный параметр групповой политики позволит вам устанавливать такие обновления. Если же данный параметр отключен, то на клиентские компьютеры будут распространяться только обновления для продуктов компании Microsoft;
  • Разрешить управлению электропитанием центра обновления Windows выводить систему из спящего режима для установки запланированных обновлений. Если в вашей организации обновления устанавливаются автоматически по расписанию, то целесообразно устанавливать время расписания установки обновлений на ночь и не выключать полностью компьютеры, а переводить их в режим гибернации. Данный параметр групповой политики позволяет вам для установки обновлений переводить компьютер в обычный режим для установки обновлений;
  • Указать размещение службы обновлений Майкрософт в интрасети. По умолчанию, ваши клиентские компьютеры не знают, установлен ли в вашей организации WSUS-сервер. Используя этот параметр групповой политики, вы можете указать путь к WSUS-серверу, который будет служить внутренним сайтом служб обновлений в вашей организации. Здесь вам необходимо указать два параметра, а именно имя сервера, на котором будет выполняться поиск и загрузка обновлений, а также сервер, на который будет выполняться статистика. В большинстве случаев это один и тот же сервер;
  • Частота поиска автоматических обновлений. При помощи текущего параметра групповой политики вы можете указать промежуток времени между поиском новых обновлений на своем WSUS-сервере. По умолчанию доступные обновления проверяются с интервалом в 22 часа. Если вы включите данный параметр, то можете указать время ожидания в часах путем вычитания от 0 до 20% от установленного вами времени. Данную политику указывать бессмысленно в том случае, если у вас настроен параметр групповой политики «Настройка автоматического обновления»;
  • Запретить использование любых средств Центра обновления Windows. Данный параметр групповой политики доступен только в разделе конфигурации пользователя и позволяет полностью запретить доступ к центру обновления Windows. Не рекомендую использовать данный параметр в производственной среде.

Теперь, после того как вы узнали о параметрах групповой политики, позволяющих управлять настройками центра, попробуем назначить на контроллере домена клиентский компьютер в группу компьютеров. Для этого выполните следующие действия:

Рис. 2. Узел «Центр обновления Windows» оснастки «Редактор управления групповыми политиками»

Рис. 3. Параметры политики «Указать размещение службы обновлений Майкрософт в сети»

Рис. 4. Параметры политики «Разрешить клиенту присоединение к целевой группе»

Рис. 5. Параметры политики «Настройка автоматического обновления»

После того как объект групповой политики будет окончательно настроен, для того чтобы на клиентских компьютерах моментально обновились параметры групповой политики вам нужно будет на каждом клиентском компьютере в командной строке выполнить команду «gpupdate /force» от имени учетной записи, которая входит в группу администраторов.

Заключение

В этой статье вы узнали о том, как можно создавать и управлять группами компьютеров. Также были рассмотрены способы назначения клиентских компьютеров в группы компьютеров на стороне сервера, а именно средствами оснастки «Update Services» и со стороны клиента, т.е. при помощи групповых политик. Помимо этого были подробно рассмотрены все параметры групповой политики, которые имеют отношение к центру обновлений Windows и службе автоматического обновления.

Для обеспечения безопасности и поддержания актуального состояния операционной системы очень важно регулярно загружать и устанавливать последние обновления. Обновление может выполняться как каждым клиентским компьютером с сайта Microsoft Update, так и централизованно, посредством использования сервера Windows Server Update Services (WSUS).


В корпоративной сети рекомендуется использование сервера WSUS, так как при этом достигается значительное снижение Интернет трафика и обеспечивается возможность централизованного управления процессом развертывания обновлений.

Наилучшим способом настройки автоматического обновления является использование групповых политик, однако это возможно только в случае, если в организации есть служба каталогов Active Directory. Если же AD в организации не развернута и компьютеры находятся в рабочих группах, то доменные групповые политики отпадают и настроить клиента на использование WSUS можно либо посредством локальной групповой политики, либо путем прямого внесения изменений в системный реестр компьютера.

Предварительная настройка

Сначала нам необходимо произвести некоторые настройки на сервере WSUS. Открываем консоль управления WSUS и в разделе «Computers» создаем новую группу, в которую будут входить наши компьютеры. Назовем ее Workgroup.

создание новой группы на сервере WSUS

настройка опций сервера WSUS

Создав группу идем на вкладку «Options» и там, в разделе «Computers» указываем серверу WSUS размещать компьютеры в группах согласно групповым политикам или настройкам реестра. В противном случае все новые компьютеры автоматически попадают в группу Unassigned Computers.

Групповая политика

редактор локальной групповой политики

Нам надо настроить следующие политики:

указываем размещение сервера WSUS

задаем клиенту группу на сервере WSUS

настройка автоматического обновления

настройка частоты поиска обновлений

перенос запланированных автоматических установок обновлений

настройка опций перезагрузки

Реестр

Теперь те же настройки произведем с помощью правки реестра.

настройка параметров обновления в реестре

Далее в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU создаем ключи:

настройка параметров автоматического обновления в реестре

Автоматизация настройки

Если настраивать предстоит не один компьютер, то процесс можно автоматизировать. Для этого открываем Блокнот, создаем reg-файл и добавляем в необходимые ключи реестра. В нашем случае получился вот такой файл:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]
″NoAutoUpdate″=dword:00000000
″AUOptions″=dword:00000004
″ScheduledInstallDay″=dword:00000001
″ScheduledInstallTime″=dword:00000003
″UseWUServer″=dword:00000001
″DetectionFrequencyEnabled″=dword:00000001
″DetectionFrequency″=dword:00000012
″RescheduleWaitTimeEnabled″=dword:00000001
″RescheduleWaitTime″=dword:00000010
″NoAutoRebootWithLoggedOnUsers″=dword:00000001

Теперь для настройки автоматического обновления будет достаточно перенести этот файл на целевой компьютер и выполнить его.

Возможные проблемы

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

Для решения проблемы необходимо произвести на клиенте следующие действия:

Скачивайте файлы при первой же возможности

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

Чтобы изменить режим закачки :

  1. Откройте консоль управления WSUS и нажмите кнопку Options в левом верхнем углу.
  2. В появившемся окне щелкните по ссылке SynchronizationOptions.
  3. Прокрутите экран вниз и нажмите кнопку Advanced . Появится диалог Advanced Synchronization Options .
  4. Включите опцию Store Update Files Locally и отключите Download Update Files to This Server Only When Updates Are Approved .

Настройте загрузку обновлений в зависимости от языка клиентов

В окне Advanced Synchronization Options обратите внимание на то, какие выбраны языки. По умолчанию WSUS скачивает обновления для всех известных ему языков. Дело вкуса, конечно, но если все компьютеры в вашей организации используют одну и ту же языковую версию ОС, гораздо оптимальнее и выгоднее будет отключить получение обновлений на всех остальных языках. Так что просто включите опцию Download Only Those Updates That Match The Local Language of This Server – это сэкономит вам место на диске, время и интернет-трафик. NB : если язык локали сервера отличается от языка клиентских ОС, эту опцию лучше не использовать во избежание проблем.

По возможности скачивайте файлы экспресс-установки

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

Файлы экспресс-установки как правило больше обычных файлов обновлений и требуют несколько больше времени для загрузки. Это с лихвой компенсируется снижением нагрузки на сеть и ускорением обновления клиентов.

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

Чтобы настроить WSUS на использование файлов экспресс-установки:

  1. Откройте консоль управления WSUS и нажмите кнопку Options в левом верхнем углу.
  2. В появившемся окне щелкните по ссылке SynchronizationOptions.
  3. Прокрутите экран вниз и нажмите кнопку Advanced . Появится диалог Advanced Synchronization Options .
  4. Отметьте чекбокс Download Express Installation Files и нажмите OK

Выделяйте для WSUS отдельный сервер

В небольших организациях как правило роль WSUS достается какому-то из серверов (и хорошо, если не контроллеру домена) так сказать, в нагрузку. Не самый лучший вариант. Я советовал бы использовать для WSUS отдельный сервер или, если по каким-то причинам это невозможно, очень аккуратно подходите к выбору приложений, которые будут работать на одном сервере с WSUS . В частности, не ставьте WSUS на сервер с поднятым SharePoint Server или наоборот – если, конечно, танцы с бубном на время не являются вашим любимым занятием ;)

Создание автоматических отчетов для WSUS 3 при помощи Excel .

Часто возникает ситуация, когда необходимо получить сведения о клиентских станциях, получающих обновления с WSUS , и отследить динамику применения обновлений. Причин для этого может быть много – от выявления упорно не обновляющихся компьютеров до неообходимости составить для шефа красивый отчет с внушающими уважение и мысль о вашем немеряном профессионализме цифрами ;). Можно собирать необходимые данные вручную – а можно упростить себе жизнь при помощи PowerShell -скриптов и диаграмм Excel . Пример одного такого отчета будет приведен далее .

Для начала, рекомендую заглянуть в репозиторий образцов скриптов PowerShell API : ttp :// www . microsoft . com / technet / scriptcenter / scripts / sus / server / default . mspx ? mfr = true . Это не идеальные образчики использования PowerShell , но в качестве стартовой площадки для разработки собственных решений они весьма полезны.

Результатом отработки скрипта является строка в CSV -файле, содержимое которого можно спокойно импортировать, куда душа пожелает. Также в отчет входят имя сервера и дата сбора информации, что облегчает фильтрацию и упорядочивание результатов.

Итак, начнем. Установите PowerShell , если его у вас еще нет, и сохраните вышеуказанный скрипт в файл . ps 1. Тренироваться рекомендую на локальном сервере – в дальнейшем, скрипт можно будет видоизменить для сбора информации с удаленных серверовчерез консольный режим. Проверьте, что вы можете запустить файл скрипта из командной строки.

Затем создайте задание для запуска скрипта каждую ночь. Ниже приведен пример командной строки для планировщика. Предварительно проверьте, что все указанные пути верны и прав доступа достаточно – обидно будет наткнуться на это только через несколько дней.

%windir%\system32\WindowsPowerShell\v1.0\powershell.exe -command C:\WsusScript\ServerStatusForApprovedUpdates.ps1 >> C:\ReportingData\ServerStatusForApprovedUpdates.csv

Теперь подождите несколько дней, чтобы в отчете набралось достаточно данных. Содержимое файла отчета будет выглядеть примерно так:

WSUSSAMPLE ,3/15/2007,3713,952,1540,1032,14,0,42,28
WSUSSAMPLE ,3/17/2007,8611,900,2660,814,112,0,279,118
WSUSSAMPLE ,3/18/2007,8744,900,6665,813,112,0,307,119
WSUSSAMPLE ,3/19/2007,8895,900,4026,833,117,0,311,117
WSUSSAMPLE ,3/20/2007,9684,900,6740,958,146,0,330,136
WSUSSAMPLE ,3/21/2007,10132,891,6641,2471,168,0,398,159
WSUSSAMPLE ,3/22/2007,10454,891,7249,2378,172,0,444,161
WSUSSAMPLE ,3/23/2007,10729,891,7531,2404,184,0,445,176

После того, как . CSV -файл будет сформирован, запустите Excel (я использовал версию 2007, соответственно, дальше буду объяснять на ее примере).

Перейдите на вкладку Data (Данные) и в разделе " Get External Data " (Получить внешние данные) выберите " From Text " (Из текста). В появившемся окне выберите ваш csv -файл и нажмите Import (Импорт). В идущем далее диалоге Import Data (Импорт данных) рекомендую проделать следующее:

<! 1. Excel спросит, где вы желаете разместить данные. Выберите местоположение примерно в 20 строках от верха листа, что бы оставить место под график.

<! 2. Нажмите Properties (Свойства) . В появившемся окне отключите опцию "Prompt for file name on refresh ", включите "Refresh data when opening the file " и "Overwrite existing cells with new data, clear unused cells ".

Теперь каждый раз, когда вы будете открывать файл Excel , вы будете автоматически получать последнюю информацию.

Затем перейдите на вкладку " Insert " (Вставить) и добавьте линейную диаграмму с маркерами. Переместите поле графика на заранее оставленное место, и в меню Design (Дизайн) нажмите Select Data (Выбрать данные). Выберите область, в которой размещены ваши данные, настройте внешний вид и подписи диаграммы по вкусу. При желании можно создать отдельные графики для компьютеров и для обновлений.

Сохраните страницу, откройте ее через несколько дней и наслаждайтесь удобным слежением за динамикой происходящего на вашем сервере WSUS

Вы когда-нибудь задумывались, с помощью чего формируется список установленных обновлений Windows? А через какое API его достать? Ответы на эти и другие возникающие вопросы я постараюсь дать в своём небольшом исследовании.




Предыстория или с чего всё началось.

В нашей компании каждый год проходит конференция молодых специалистов, где каждый участник может решить проблему какого-либо отдела (список тем заранее предлагается).

Раньше на каждое «ТО» с помощью WSUS подтягивались все выпущенные обновления и распространялись на все машины. Также периодически выходили ТСБ (технические сервисные бюллетени), в которых указывалось, что требуется установить необходимые обновления в виде изолированных пакетов. В итоге у нас накапливаются обновления, которые в WSUS отследить нельзя, а можно было увидеть только через панель управления в разделе «Установленные обновления».

Наглядная схема обновления

Бывают ситуации, когда АРМ или сервер «падает» и приходится его восстанавливать из образа, созданного некоторое время назад. При восстановлении из образа есть вероятность того, что мы можем потерять нужные нам обновления (которые пришли в виде изолированных пакетов), которые устанавливались до падения машины. Объяснил максимально подробно насколько мог, потому что уточнения будут уже коммерческой тайной.

Как вы могли догадаться из названия статьи, уже на выборе метода получения списка у меня возникла непростая задача. Я, как обычно, решил поискать нужное в поисковике, задал вопросы на профильных ресурсах (раз, два, на английском stackoverflow почему-то не понравился мой вопрос и его пришлось удалить), но все ответы не давали нужного результата. Поэтому пришлось разбираться самому, о чем и пойдет речь далее.

Консольные команды

Начнем с простого и воспользуемся тем, что предлагает нам Windows без использования сторонних средств. Это можно сделать с помощью следующих команд:

  • wmic qfe list
  • systeminfo
  • dism /online /get-packages
  • через PowerShell:

  • Get-HotFix
  • Get-SilWindowsUpdate (доступно только в серверных редакциях)
  • Get-WmiObject -Class win32_quickfixengineering — через доступ к WMI классу win32_quickfixengineering (о WMI чуть позже)

Получить список через графический интерфейс можно через стандартный пункт Панели управления «Установка/удаление программ», но скопировать оттуда мы ничего не можем. Каждый инструмент панели управления представлен файлом .cpl в папке Windows\System. Файлы .cpl в системную папку Windows автоматически загружаются при запуске панели управления. За пункт Программы отвечает файл Appwiz.cpl. Его анализ ни к чему не привел.

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

Локальные и сетевые методы получения информации

Все методы проверялись на чистых образах систем (Windows 7, 8, Server 2012 R2) с интегрированными обновлениями, после каждого обновления через Центр обновления с официальных серверов Microsoft проводилась дополнительная проверка. Остановимся на каждом из них подробнее.


WUApi (Windows Update Agent API) — использование API агента обновления Windows. Самый явный вариант, название которого говорит само за себя. Использовать для этого будем библиотеку Wuapi.dll.
Примечание: далее для своего удобства все результаты я буду вставлять в List. Это, возможно, не рационально, но тогда мне это казалось хорошей идеей.

Есть и вторая вариация этого метода: Update Session — получение информации с помощью подключения к сессии обновления Windows Update Agent (в данном случае работаем не напрямую с библиотекой).

Microsoft подсказывает об удаленном использовании API.

Главный минусы этих двух методов — не позволяют найти исправления KB, которые не распространяются через Центр обновления Windows. Можно увидеть только то, что прошло через сам агент обновления, то есть данный вариант нас не устраивает.

Система обслуживания образов развертывания и управления ими (Deployment Image Servicing and Management) — это средство командной строки, которое может использоваться для обслуживания образа Windows или для подготовки образа среды предустановки Windows (Windows PE). Является заменой диспетчера пакетов (Pkgmgr.exe), PEimg и Intlcfg.

Данная утилита используется для интеграции обновлений, сервис паков в образ системы. Обновления Windows представляют собой отдельные модули, которые могут быть представлены в нескольких вариантах:

  • .cab-файлы (Cabinet) — архивы. Предназначены для распространения и установки при помощи модулей Центра обновлений Windows в автоматизированном режиме;
  • .msu-файлы (Microsoft Update Standalone Package) — исполняемые файлы. Предназначены для распространения и установки самими пользователями в ручном режиме через каталог обновлений Microsoft. Фактически представляют собой упакованный набор, состоящий из .cab-, .xml, .txt-файлов.

Количество обновлений совпадало с количеством из списка Панели управления до первого апдейта через центр управления — после него количество обновлений стало меньше (было 214, стало 209), хотя по логике они должны были увеличиться. Примеры вывода До обновления, После обновления.

С чем это связано я могу только предполагать — возможно, какие-то обновления замещали предыдущие, следовательно, и количество стало меньше.

Чуть позже я наткнулся на утилиту от китайцев DISM++, которая основана не на DISM API или DISM Core API, но имеющиеся в ней библиотеки не имеют нужных мне открытых методов, поэтому я забросил эту идею и продолжил поиски дальше.

Windows Server Update Services (WSUS) — сервер обновлений операционных систем и продуктов Microsoft. Сервер обновлений синхронизируется с сайтом Microsoft, скачивая обновления, которые могут быть распространены внутри корпоративной локальной сети. Опять же специальный инструмент, предназначенный для работы с обновлениями.

Распространяется только на серверных редакциях ОС Windows, поэтому был развернут следующий стенд:

  • основная система – Windows Server 2016;
  • а через систему виртуализации Hyper-V были развернуты две клиентские ОС:
    • Windows 8.1
    • Windows 7

    Чтобы не выделять раздел жесткого диска для новой системы я пользуюсь WinNTSetup и устанавливаю систему в VHD диски — загрузчик, начиная с Windows 7 (редакций Professional/Ultimate), прекрасно справляется с загрузкой с образа диска. Полученные таким образом диски можно спокойно использовать и в Hyper-V — убиваете сразу двоих зайцев. Не забудьте только сделать заранее копию хранилища BCD через команду bcdedit /export e:\bcd_backup.bcd.

    Настраивать AD для рассылки обновлений я не захотел, поэтому просто прописал в групповых политиках путь к WSUS серверу:

    Параметры настройки

    Обязательно уделите внимание на порт, я из-за опечатки (8350 вместо 8530) не мог получить обновления на клиентских машинах, хотя сделано было всё верно. Так же названия пунктов в групповых политиках на Windows 7 и Windows 8 различаются.

    Для получения отчета средствами WSUS необходимо дополнительно установить пакет — система уведомит вас об этом.

    Так как интернета нет, то ситуация с обновлениями выходит как на скриншоте ниже:


    Поведение похоже на WUApi — если обновления не прошли через них, то они не знают об этом. Поэтому данный метод снова не подходит.

    Windows Management Instrumentation (WMI) в дословном переводе — инструментарий управления Windows.

    WMI — реализованный корпорацией Майкрософт стандарт управления предприятием через Интернет для централизованного администрирования и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows. WMI является открытой унифицированной системой интерфейсов доступа к любым параметрам операционной системы, устройствам и приложениям, которые функционируют в ней.

    Данный метод позволяет получить данные как с локальной машины, так и удаленно в пределах локальной сети. Для обращения к объектам WMI используется специфический язык запросов WMI Query Language (WQL), который является одной из разновидностей SQL. Получать список мы будем через WMI класс win32_quickfixengineering.

    Количественно всё совпадает (даже после обновлений), поэтому было решено использовать этот метод. Для программного создания WMI запросов советую использовать следующую утилиту — WMI Delphi Code Creator. Благодаря ей я немного по другому взглянул на свой код и решил использовать заготовку из этой программы.

    Полученные данные методом WMI меня не остановили, и я решился на „поверхностный реверс-инжиниринг“. Воспользуемся утилитой Process Monitor из сборника программ Sysinternals Suite для выявления файлов и ветвей реестра, которые используются при вызове выше перечисленных консольных команд и обращению к пункту „Установленные обновления“ через Панель управления.

    Моё внимание привлек файл wuindex.xml, расположенный в папке C:\Windows\servicing\Packages\. Для его анализа была написана следующая программа:

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

    Вот мы подошли к тому, с чем связаны все эти методы. Продолжая анализ логов Process Monitor я выявил следующие папки и файлы.

    Файл DataStore.edb, расположенный в папке C:\Windows\SoftwareDistribution\DataStore. Это база данных, в которой содержится история всех обновлений установленной версии Windows, включая те обновления, которые только стоят в очереди.

    Для анализа файла DataStore.edb использовалась программа ESEDatabaseView. В БД существует таблица tbUpdates, содержимое которой трудно интерпретировать.

    Таблица tbUpdates в ESEDatabaseView

    После мое внимание привлек процесс TiWorker.exe, который вызывался каждый раз при открытии пункта в Панели управления. Он „ходил“ по многим папкам, одна из которых вывела меня на верный путь.

    C:\Windows\SoftwareDistribution — это папка, используемая службой обновления Windows для загрузки обновлений на компьютер с последующей их установкой, а также хранит сведения обо всех ранее установленных обновлениях.

    Папка WinSxS, расположенная по адресу C:\Windows\winsxs. Это служебная папка операционной системы Windows служащая для хранения ранее установленных версий системных компонентов. Благодаря ее наличию существует возможность отката к более старой версии обновления в случае необходимости.

    C:\Windows\servicing — основная составляющая всей системы, имя которой Component-Based Servicing (CBS).

    CBS — обслуживание на основе компонентов, составляющая Windows, интегрированная с службой Windows Update. В противоположность обслуживанию на основе файлов File-Based Servicing (FBS) (для ОС, предшествующих Windows Vista), в котором файлы обновлялись прямо в системных директориях, в CBS появилась целая иерархия директорий и целое семейство (стек) модулей/библиотек обслуживания.

    CbsApi.dll — основная библиотека поддержки технологии CBS. Не имеет открытых методов, поэтому напрямую использовать её я не смог. Microsoft использует TrustedInstaller.exe и TiWorker.exe для доступа к методам данной библиотеки и уже через эти процессы выводит нужные нам данные. ‪Записи ведутся в C:\Windows\Logs\CBS\CBS.log.

    Вывод

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

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

    Читайте также: