Можно ли установить обновления Windows из командной строки? Средство графического обновления не очень хорошо работает в Windows 7. Иногда это происходит, иногда нет ... Моя проблема в том, что я не вижу никаких обновлений, когда нажимаю, чтобы увидеть список подробностей. Поэтому, когда есть обновления, которые не отмечены по умолчанию, я не могу установить их ...
Итак, есть ли другой способ установить их?
Не уверен насчет Windows 7, но с XP/Vista вы можете запустить следующую команду для обнаружения и загрузки обновлений:
wuauclt /detectnow /reportnow
Если у вас возникли проблемы с его работой, ознакомьтесь с WSUS Wiki .
В противном случае, если у вас есть конкретное обновление, которое вы хотите, просто загрузите с веб-сайта Microsoft. Если есть какая-то проблема, мешающая вам установить, это лучший способ выяснить это, потому что журналы Центра обновления Windows очень полезны.
Вы можете использовать скрипт для проверки, загрузки и установки обновлений синхронно. Я часто использую модифицированную версию этот vbscript для ручного обновления серверов Windows Core.
Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "MSDN Sample Script"
Set updateSearcher = updateSession.CreateUpdateSearcher()
WScript.Echo "Searching for updates..." & vbCRLF
Set searchResult = _
updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")
WScript.Echo "List of applicable items on the machine:"
For I = 0 To searchResult.Updates.Count-1
Set update = searchResult.Updates.Item(I)
WScript.Echo I + 1 & "> " & update.Title
Next
If searchResult.Updates.Count = 0 Then
WScript.Echo "There are no applicable updates."
WScript.Quit
End If
WScript.Echo vbCRLF & "Creating collection of updates to download:"
Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")
For I = 0 to searchResult.Updates.Count-1
Set update = searchResult.Updates.Item(I)
addThisUpdate = false
If update.InstallationBehavior.CanRequestUserInput = true Then
WScript.Echo I + 1 & "> skipping: " & update.Title & _
" because it requires user input"
Else
If update.EulaAccepted = false Then
WScript.Echo I + 1 & "> note: " & update.Title & _
" has a license agreement that must be accepted:"
WScript.Echo update.EulaText
WScript.Echo "Do you accept this license agreement? (Y/N)"
strInput = WScript.StdIn.Readline
WScript.Echo
If (strInput = "Y" or strInput = "y") Then
update.AcceptEula()
addThisUpdate = true
Else
WScript.Echo I + 1 & "> skipping: " & update.Title & _
" because the license agreement was declined"
End If
Else
addThisUpdate = true
End If
End If
If addThisUpdate = true Then
WScript.Echo I + 1 & "> adding: " & update.Title
updatesToDownload.Add(update)
End If
Next
If updatesToDownload.Count = 0 Then
WScript.Echo "All applicable updates were skipped."
WScript.Quit
End If
WScript.Echo vbCRLF & "Downloading updates..."
Set downloader = updateSession.CreateUpdateDownloader()
downloader.Updates = updatesToDownload
downloader.Download()
Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl")
rebootMayBeRequired = false
WScript.Echo vbCRLF & "Successfully downloaded updates:"
For I = 0 To searchResult.Updates.Count-1
set update = searchResult.Updates.Item(I)
If update.IsDownloaded = true Then
WScript.Echo I + 1 & "> " & update.Title
updatesToInstall.Add(update)
If update.InstallationBehavior.RebootBehavior > 0 Then
rebootMayBeRequired = true
End If
End If
Next
If updatesToInstall.Count = 0 Then
WScript.Echo "No updates were successfully downloaded."
WScript.Quit
End If
If rebootMayBeRequired = true Then
WScript.Echo vbCRLF & "These updates may require a reboot."
End If
WScript.Echo vbCRLF & "Would you like to install updates now? (Y/N)"
strInput = WScript.StdIn.Readline
WScript.Echo
If (strInput = "Y" or strInput = "y") Then
WScript.Echo "Installing updates..."
Set installer = updateSession.CreateUpdateInstaller()
installer.Updates = updatesToInstall
Set installationResult = installer.Install()
'Output results of install
WScript.Echo "Installation Result: " & _
installationResult.ResultCode
WScript.Echo "Reboot Required: " & _
installationResult.RebootRequired & vbCRLF
WScript.Echo "Listing of updates installed " & _
"and individual installation results:"
For I = 0 to updatesToInstall.Count - 1
WScript.Echo I + 1 & "> " & _
updatesToInstall.Item(i).Title & _
": " & installationResult.GetUpdateResult(i).ResultCode
Next
End If
Кажется, это работает как прелесть, но я не проверял это под Windows 7, конечно. Также есть ссылка на другую статью для нацеливания на конкретное обновление, если это необходимо.
Там также модуль Powershell , который предоставляет аналогичные возможности.
После быстрого просмотра я также обнаружил это стороннее приложение , которое также использует API обновления, но с некоторыми дополнительными параметрами (хотя и требует доверия к стороннему коду).
Центр обновления Windows из командной строки:
www.sysadminsoftware.com/udc.html
Инструмент (Updates Deployment Commander) может сделать то, что вы просите. Вы также можете передавать параметры, чтобы избежать определенных исправлений, целевых обновлений, перезагрузки через N минут после завершения, создания отчетов в CSV и т.д. Он также поставляется с парой утилит GUI.
Если вам необходимо исправлять операционные системы Windows, особенно после новой установки, внимательно посмотрите на Offline Updater .
Он использует сценарии для загрузки всех предложенных вами исправлений (например, Win2000, Win XP, Win 2003, Vista, Win2008, 32 и 64-разрядной версии Win2012), мультиязычности, пакетов обновления, каркасов .NET и исправлений Office (XP, 2000). , 2003, 2007).
Как только вы загрузите их все, вы просто обновляете каждый патч во вторник и получаете только изменения. Хотя он получает каталожники, и они становятся длиннее с каждым днем (много мегабайт на ОС/Office rev).
Как только вы загрузите файлы на свой локальный компьютер, появится сценарий для создания образов CD/DVD из них (теперь это будет автоматически для образов DVD для каждой ОС, если хотите).
Что я делаю, так это использую карту памяти SD 4 ГБ в устройстве чтения карт памяти SD, которое поддерживает вкладку защиты от записи. Раньше я использовал карты 2 ГБ, но я едва мог приспособить Win XP), и большинство Office теперь основано на нем, поэтому я перешел на карты 4 ГБ.
Таким образом, при поиске и устранении неисправностей компьютера я доверяю установку этого ранее записываемого устройства на ненадежную, возможно зараженную вирусом машину (поскольку я ничего не знаю об этом, я предполагаю, что она заражена), зная, что мое устройство защищено от записи.
Таким образом, я могу исправить это в качестве первого шага.
Если вы используете автозапуск или запускаете исполняемый файл на устройстве (ключ, внешний HD, CD, DVD, где бы вы его не написали), он запускает скрипт, который использует службу Центра обновления Windows на локальном компьютере, чтобы применить все обновления, но вместо этого идти через провод, чтобы загрузить их, он просто использует локальную копию.
Таким образом, все еще может потребоваться более 1 часа для обновления машины WinXP до последней версии SP и исправлений), но сетевой трафик на этом пути нулевой, и вы можете сделать это с полностью отключенным кабелем Ethernet. ,.
Удивительно полезный инструмент!
Не должно идти вразрез с Microsoft, как ребята из AutoUpdate, которые предварительно создавали патч-диск, который распространял образ компакт-диска. Этот инструмент обновляет сценарии, и вы должны получить все исправления на вашей лицензированной рабочей станции Windows.
В настоящее время я не могу добавить комментарий к answer с помощью duffbeer7 , поэтому здесь в качестве отдельного ответа:
Последняя "хорошая" версия ссылки на WSUSwiki в архиве Интернет-архива - this . Параметры, приведенные в исходном ответе, описаны в этом запись FAQ .