Проверка обновлений Windows напрямую через WSUS

Ранее в этом месяце я задал вопрос о том, как я могу использовать vbscript для проверки наличия критических обновлений на сервере. Ответ, который был предоставлен, работал отлично, и я отправил скрипт в нашу среду QA для дополнительного тестирования.

Существует среда "хранилища", в которой может работать сервер, и он не имеет доступа к агенту Центра обновления Windows и может получать обновления Windows только напрямую через WSUS. Есть ли способ с VBScript, чтобы проверять только критические обновления непосредственно через WSUS, а не Windows Update Agent.

Я получаю ошибку 0x8024402C с этим кодом (логика взята из предыдущего вопроса). Он заключен в подпрограмму, которая выдаст выходной сигнал PASS или FAIL в зависимости от результата. Я проверил это работает на некоторых серверах.

Dim count
count = 0

'Microsoft Magic
Set updateSession = CreateObject("Microsoft.Update.Session")
Set updateSearcher = updateSession.CreateupdateSearcher()
Set searchResult = updateSearcher.Search("IsAssigned=1 and isHidden=0 and IsInstalled=0 and Type='Software'")
'End Microsoft Magic
    If searchResult.Updates.Count <> 0 Then ' If Updates were found
      For i = 0 to searchResult.Updates.Count - 1 'Just count the number of updates
         count = count + 1
      Next
      objResult.Text = "FAIL"
      objComment.Text = "There are " & count & " updates that need to be installed"
    Else
      objResult.Text = "PASS"
      objComment.Text = "All updates are installed"
    End If

  If NOT len(objResult.Text) Then 'Just in case searchResult produces an error
    objResult.Text = "FAIL"
    objComment.Text = "Could not query Windows Update Server"
  End If

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

2 ответа

Решение

Существует среда "хранилища", в которой может работать сервер, и он не имеет доступа к агенту Центра обновления Windows и может получать обновления Windows только напрямую через WSUS. Есть ли способ с VBScript, чтобы проверять только критические обновления непосредственно через WSUS, а не Windows Update Agent.

Возможно, примечание об архитектуре поможет в этом. В каждой системе есть агент обновления Windows. Он поставляется с операционной системой. Агент обновления Windows выполняет всю работу, будь то домашняя система, использующая автоматические обновления, старая система, которая просматривает Центр обновления Windows в IE, использует панель управления WUApp или общается с сервером WSUS - это агент Центра обновления Windows, который делает работу

Приведенный выше сценарий обращается к серверу WSUS и извлекает информацию на основе того, что агент Центра обновления Windows сообщил серверу WSUS.

Отключенная система, к которой, как я полагаю, относится ссылка на "среду хранилища", не может получить доступ к AU/WU/MU, но в зависимости от размера "среды хранилища" можно реализовать WSUS. сервер в этой среде. Документация WSUS содержит подробные инструкции по развертыванию и управлению сервером WSUS в отключенной сети.

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

Сценарий будет (пытаться) проверить, какой сервер обновлений настроен для соответствующего хоста. Если хост настроен на использование WSUS, скрипт проверит этот сервер. Если хост настроен на проверку серверов Microsoft Windows Update, он попытается подключиться к ним.

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

Const HKLM  = &h80000002
Const wuKey = "SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"

Set wmi = GetObject("winmgmts://./root/default:StdRegProv")
status = wmi.GetStringValue(HKLM, wuKey, "WUServer", wsus)

If status = 0 Then
  WScript.Echo "Using WSUS: " & wsus
Else
  WScript.Echo "Using Windows Update directly."
End If

Затем проверьте, можете ли вы подключиться к соответствующему серверу (при необходимости измените порт 80 на порт, указанный в значении WUServer):

telnet wsus.example.com 80

или (для Центра обновления Windows):

telnet windowsupdate.microsoft.com 80

Обратите внимание, что без WSUS ваш хост должен иметь возможность подключаться ко всем URL-адресам, перечисленным в статье MSKB 885819.

Также убедитесь, что разрешение имен работает на вашем хосте.

Другие вопросы по тегам