Проверка обновлений 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.
Также убедитесь, что разрешение имен работает на вашем хосте.