Назад | Перейти на главную страницу

Создание сценариев обновлений WSUS на сервере, настроенном на «только обнаружение»

Я хотел бы автоматически устанавливать обновления сервера Windows (при поддержке WSUS), но не могу получить wuauclt /updatenow для фактического запуска установки (или любого другого недокументированного переключателя).

Он работает на тестовой рабочей станции, но я считаю, что это потому, что для установки задано значение «Автоматически каждый день», а для сервера - «Только обнаружение». Я планирую использовать другой, более надежный сторонний планировщик для установки обновлений в определенные дни недели, а также недели месяца. то есть сервер A устанавливается в первое воскресенье месяца, сервер B - во второе воскресенье месяца и т. д.

В основном я ищу сценарий, эквивалентный нажатию кнопки «Установить обновления» в диалоговом окне Windows Update GUI на сервере.

У Microsoft есть отличный образец vbscript для установки обновлений через Центр обновления Windows по адресу http://msdn.microsoft.com/en-us/library/windows/desktop/aa387102(v=vs.85).aspx

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

Похоже, вы можете сделать это с помощью COM API (так что вы можете использовать любой язык сценариев, который может использовать COM - VBScript, PowerShell и т. д.).

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

Option Explicit

Dim objUpdateSess
Dim objUpdateSearcher
Dim objDownloader
Dim objInstaller
Dim objSearchResult

Set objUpdateSess = CreateObject("Microsoft.Update.Session")

Set objUpdateSearcher = objUpdateSess.CreateUpdateSearcher()

Set objDownloader = objUpdateSess.CreateUpdateDownloader()

Set objInstaller = objUpdateSess.CreateUpdateInstaller()

' Search for pending updates
Set objSearchResult = objUpdateSearcher.Search("IsAssigned=1 and IsHidden=0 and IsInstalled=0 and Type='Software'")

' Download the pending updates
objDownloader.Updates = objSearchResult.Updates
objDownloader.Download()

' Install the pending updates
objInstaller.AllowSourcePrompts = False
objInstaller.ForceQuiet = True
objInstaller.Updates = objDownloader.Updates
ObjInstaller.Install()

Этот скрипт не имеет абсолютно никакой проверки ошибок, поэтому на самом деле не используйте его! Существует множество небольших скриптов, которые люди написали для автоматизации этого процесса по всей сети (некоторые из них отправляют электронные письма, автоматически перезагружаются после завершения и т. Д.). Поищите и посмотрите, что вы придумали, или попробуйте свои собственные.

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

  1. Нажмите клавишу Windows + R
  2. Введите gpedit.msc.
  3. Перейдите к: Конфигурация компьютера -> Компоненты Windows -> Центр обновления Windows.
  4. Здесь вы можете редактировать все параметры, но наиболее интересным для вас является «Настроить автоматические обновления». Эта политика позволит вам выбрать день и время для запуска обновлений Windows.

Если система является частью домена, вы также можете сделать это с помощью групповой политики.