вторник, 9 октября 2018 г.

Восстанавливаем установку обновлений Windows

Вдогонку предыдущему посту про обновление Windows - обновления бывают довольно упрямые, и не желают устанавливаться, обновление завершается ошибкой.

Опять двойка... т.е. опять не получилось. Изображения с сайта https://aptgadget.com
К счастью, обычно эти ошибки довольно легко победить.


Все ошибки обновления Windows лечатся одним способом - в подавляющем большинстве случаев достаточно пересоздать папку c:\Windows\SoftwareDistribution\ перезагрузить компьютер - на всякий случай, и опять запустить процесс обновления - скорее всего он завершится без ошибки.  Способ работает в Windows 7, 8, 10.

Чтобы переименовать папку SoftwareDistribution надо остановить Службу обновления Windows (wuauserv) и Службу фоновой передачи данных (bits), после переименования службы надо запустить.

Естественно, делать эти операции вручную - совсем неправильный вариант, потому что должен быть соблюден принцип IBM: "Машина должна работать, а человек - думать", так что был написаны небольшой скрипта - для исправления работы обновления на локальном и на удаленном компьютере.

Скрипт устранения ошибок обновления на локальном компьютере

@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
Скрипт устранения ошибок на удаленных компьютерах в сети при наличии сервера обновлений WSUS (хотя при небольшой коррекции скрипта можно обойтись и без WSUS, но намного лучше, когда он есть в сети).

@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 коммент. :

Отправить комментарий