Вдогонку предыдущему посту про обновление Windows - обновления бывают довольно упрямые, и не желают устанавливаться, обновление завершается ошибкой.
К счастью, обычно эти ошибки довольно легко победить.
Скрипт устранения ошибок на удаленных компьютерах в сети при наличии сервера обновлений WSUS (хотя при небольшой коррекции скрипта можно обойтись и без WSUS, но намного лучше, когда он есть в сети).
В Windows 8 и Windows 10 можно в коммандной строке с правами администратора выполнить команды:
DISM.exe /Online /Cleanup-image /Scanhealth
DISM.exe /Online /Cleanup-image /Restorehealth
Dism /Online /Cleanup-Image /RestoreHealth/Source:wim:путь_к_файлу_wim:1 /limitaccess
How to use DISM command-line utility to repair a Windows 10 image - очень неплохо расписано про восстановление системы.
![]() |
Опять двойка... т.е. опять не получилось. Изображения с сайта https://aptgadget.com |
Все ошибки обновления Windows лечатся одним способом - в подавляющем большинстве случаев достаточно пересоздать папку c:\Windows\SoftwareDistribution\ перезагрузить компьютер - на всякий случай, и опять запустить процесс обновления - скорее всего он завершится без ошибки. Способ работает в Windows 7, 8, 10.
Чтобы переименовать папку SoftwareDistribution надо остановить Службу обновления Windows (wuauserv) и Службу фоновой передачи данных (bits), после переименования службы надо запустить.
Естественно, делать эти операции вручную - совсем неправильный вариант, потому что должен быть соблюден принцип IBM: "Машина должна работать, а человек - думать", так что был написаны небольшой скрипта - для исправления работы обновления на локальном и на удаленном компьютере.
Скрипт устранения ошибок обновления на локальном компьютере
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off > nul | |
echo. | |
echo Скрипт для исправления ошибок обновления Windows 7-10 | |
echo. | |
echo Запуск скрипта - обязательно от имени администратора. | |
echo. | |
:: Останавливаем службы | |
sc stop bits | |
sc stop wuauserv | |
:: Немного ждём для надежности | |
ping -n 6 127.0.0.1 > nul | |
:: Проверяем папку SoftwareDistribution | |
if exist "c:\Windows\SoftwareDistribution_bak" rd /s /q "c:\Windows\SoftwareDistribution_bak" | |
ren "c:\Windows\SoftwareDistribution\" SoftwareDistribution_bak | |
:: Опять немного ждем | |
ping -n 6 127.0.0.1 > nul | |
:: Запускаем службы | |
sc start bits | |
sc start wuauserv | |
:: Ждем, пока службы запустятся | |
ping -n 6 127.0.0.1 > nul | |
:: Проверяем службы | |
sc query bits | |
sc query wuauserv | |
:: Готово! | |
echo. | |
echo Папка SoftwareDistribution пересоздана, можно проверять работу обновлений. | |
echo. | |
pause | |
exit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off > nul | |
echo. | |
echo Скрипт для исправления ошибок обновления Windows 7 при наличии сервера WSUS | |
echo. | |
echo На компьютере должен быть установлен комплект pstools | |
echo. | |
echo Запуск скрипта - обязательно от имени администратора. | |
echo. | |
:: Вводим имя компьютера - из консоли WSUS | |
echo. | |
set /p X="Введите имя компьютера: " | |
:again | |
:: Check if computer is online | |
ping %X% -n 2 | find /i "TTL=" > nul | |
if %errorlevel% NEQ 0 ( | |
echo. | |
echo Компьютер не в сети. | |
echo. | |
goto offline | |
) | |
:: Останавливаем службы | |
psservice \\%X% stop bits | |
psservice \\%X% stop wuauserv | |
:: Немного ждем | |
ping -n 6 127.0.0.1 > nul | |
:: Проверяем и переименовываем папку SoftwareDistribution | |
if exist "\\%X%\c$\Windows\SoftwareDistribution_bak" rd /s /q "\\%X%\c$\Windows\SoftwareDistribution_bak" | |
ren "\\%X%\c$\Windows\SoftwareDistribution\" SoftwareDistribution_bak | |
:: Опять немоно ждем | |
ping -n 6 127.0.0.1 > nul | |
:: Запускаем службы | |
psservice \\%X% start bits | |
psservice \\%X% start wuauserv | |
:: Ждем, пока службы запустятся | |
ping -n 6 127.0.0.1 > nul | |
:: Проверяем службы | |
psservice \\%X% query bits | |
psservice \\%X% query wuauserv | |
:: Перезапускаем обновление | |
psexec -s \\%X% wuauclt.exe /detectnow | |
psexec -s \\%X% wuauclt.exe /updatenow | |
:: Готово! | |
echo. | |
echo Папка SoftwareDistribution пересоздана, клиент обновления перезапущен. | |
echo. | |
:offline | |
pause | |
set X= | |
echo. | |
set /p X="Надо ли восстановить обновления ещё на одном компьютере? Если да - введите его имя, если нет - нажмите Enter " | |
if /i "%X%"=="" ( | |
goto ready | |
) else ( | |
goto again | |
) | |
:ready | |
echo. | |
echo Больше восстанавливать нечего, всё в порядке | |
ping -n 3 127.0.0.1 > nul | |
exit |
В Windows 8 и Windows 10 можно в коммандной строке с правами администратора выполнить команды:
DISM.exe /Online /Cleanup-image /Scanhealth
DISM.exe /Online /Cleanup-image /Restorehealth
Первая команда производит диагностику системы, вторая исправляет ошибки, если надо указать источник (файл .wim) для восстановления, то вводим следующую команду:
Dism /Online /Cleanup-Image /RestoreHealth/Source:wim:путь_к_файлу_wim:1 /limitaccess
Иногда для восстановления нормальной работы обновлений Windows приходится потратить заметное количество времени, что раздражает - ну неужели такая огромная компания как Microsoft не может сделать все сразу и хорошо...
How to use DISM command-line utility to repair a Windows 10 image - очень неплохо расписано про восстановление системы.
0 коммент. :
Отправить комментарий