Как установить обновления Windows 8.1 в режиме аудита с помощью PowerShell или смекалки
Мне недавно понадобилось сделать обновленный образ Windows 8.1, и я наступил на грабли, жалобу на которые озвучивал несколько месяцев назад участник форума. Проблема в том, что в режиме аудита невозможно обновить ОС из панели управления.
Отвечая на вопрос в форуме автоустановки, я просто нагуглил модуль PowerShell для обновления системы и кинул ссылку в тему, но участник столкнулся с какими-то проблемами. Я предложил решить их в форуме скриптов, но дальше вопрос не отслеживал. По-моему, человек так и не разобрался.
Вообще, проблема его была в неправильно поставленной задаче. Цель ведь не в том, чтобы обновиться из режима аудита, а в получении обновленного образа системы. Увидев, что центр обновлений не работает, я даже не стал качать модуль PowerShell, а пошел другим путем.
Впрочем, сегодня я покажу вам оба решения. Я экспериментировал на английской Windows, так что непримиримым адептам локализованного интерфейса придется немного потерпеть.
[+] Сегодня в программеПочему центр обновления не работает в режиме аудита Windows 8.1
Ответ поддержки Microsoft процитирован кем-то на форуме TechNet. Центр обновлений Windows проверяет, завершила ли система этап OOBE (из которого вы и входите в аудит). Если не завершила, обновление не выполняется.
С одной стороны, это предотвращает перезагрузку на этапе OOBE. С другой стороны, у ОЕМов появляется возможность контролировать набор устанавливаемых обновлений при создании фабричного образа, даже если он настроен на автоматическое обновление.
Почему Microsoft изменила поведение именно в Windows 8.1, я не знаю – возможно, именно по просьбам ОЕМов. Однако заметьте, что не работает именно обновление из панели управления, а значит есть обходной путь.
Обновление в режиме аудита (Windows Update PowerShell Module)
Для автоматического обновления системы из консоли вы можете взять на вооружение очень удобный модуль PowerShell, опубликованный в галерее TechNet. Он работает не только в режиме аудита, но именно в нем особенно ценен. Я протестировал модуль уже потом, когда готовил этот материал.
Конечно, с модулем надо немного разобраться, но я сильно сэкономлю вам время своими инструкциями. Тут ПКМ , в основном, извините уж :)
- Сохраните архив PSWindowsUpdate.zip на USB-диск и (это важно!) щелкните на нем ПКМ – Свойства – Разблокировать файл.
- Сохраните на USB-диске файл wu.cmd с одной командой:
- В режиме аудита щелкните ПКМ на архиве – Распаковать все и выберите папку C:\Windows\System32\WindowsPowerShell\v1.0\Modules
- Щелкните ПКМ на wu.cmd и выберите Запуск от имени администратора.
Это все! Доступные обновления загрузятся и установятся автоматически. Выглядит это примерно так:
По окончании установки перезагрузите систему, чтобы завершить установку обновлений. Вы снова попадете в режим аудита и сможете убедиться, что обновления установились.
Рекомендую повторить запуск wu.cmd на случай, если после установки первой партии обновлений появится вторая.
Если вы хотите просто посмотреть список доступных обновлений, замените последний блок команды (после точки с запятой) на:
В остальном же, модуль подробно задокументирован, поэтому я не буду разбирать все его параметры.
Бонус! Вы можете очистить папку WinSxS прямо в режиме аудита (Microsoft рекомендует это с целью снижения размера образа).
По завершении обновления вы можете удалить модуль, ранее скопированный в папку Windows. Когда вы закончите свои черные дела, обобщите и запечатайте образ.
Это ведь было просто, не правда ли?
Обновление в режиме аудита (скрипт VBS)
После публикации материала читатель Артем указал в обсуждении на альтернативу модулю PowerShell — скрипт VBS, опубликованный на MSDN. В комментариях ↓ он обосновал свою рекомендацию и поделился способом автоматизации установки обновлений с помощью этого скрипта.
Обычное обновление системы (Think Outside the Box!)
Но, допустим, вы не разобрались с модулем PowerShell или не знали про скрипт VBS. Однако задача-то перед вами какая? Создать обновленный образ системы, обобщенный с помощью sysprep. При этом вовсе необязательно обновлять Windows именно в режиме аудита!
Можно прийти к цели иначе, что я и сделал в соответствии с девизом этого блога:
- Завершите этап OOBE – укажите имя компьютера, создайте локальную учетную запись – все как при обычной установке.
- Обновите систему из центра обновлений Windows и перезагрузитесь. Можете также очистить папку WinSxS.
- Войдите в режим аудита командой:
- В командной строке от имени администратора выполните rundll32.exe sysdm.cpl,EditUserProfiles и удалите профиль пользователя, созданный на шаге 1.
- В командной строке, запущенной от имени администратора, удалите учетную запись пользователя, которую создали на шаге 1:
Остается лишь запечатать образ (команда в конце предыдущего раздела статьи).
У вас может возникнуть вопрос, является ли такой способ поддерживаемым. Безусловно! Более того, в поисках доказательств я наткнулся на пошаговое руководство на TechNet, где именно такой сценарий и описан. Режим аудита просто ускоряет процесс подготовки образа, позволяя обойтись без создания учетной записи и последующего ее удаления (шаги 4 и 5).
Дискуссия и опрос
У главной страницы сайта автоустановки почти 1.4 млн просмотров – да, когда-то я регулярно создавал сборки :) Но в последнее время делаю это крайне редко. А вы создаете сборки? Напишите в комментариях, что входит в состав ваших сборок и зачем вы их делаете.
Результаты голосования утеряны в связи с прекращением работы веб-сервиса опросов.
Об авторе
Вадим - владелец этого блога, и почти все записи здесь вышли из-под его пера. Подробности о блоге и авторе здесь. Поддержать автора вы можете тут.
Вас также может заинтересовать:Я в Telegram
Подпишитесь на канал и читайте интересные записи чаще! Есть вопросы? Задайте их в чате.
комментариев 67Когда-то (во времена Windows XP) делал. В основном, с внесением всяких «твиков», удалением того, чем никогда не пользовался и т.д. Но после одного случая «завязал». В тот раз столкнулся с забавным «багом» в свежеустановленной со сборки системе. При использовании браузера IE невозможно было прикреплять файлы к сообщениям форумов, построенных на движке IPB. Причем, в других браузерах проблема отсутствовала. От греха подальше с тех пор пользуюсь только неизменёнными образами от Microsoft.
Сборки домашних версий никогда не делал, от греха подальше, а вот серверную один раз пришлось. С лицензионного диска тупо не вставал 2003-й сервер, уже не помню, что там было точно, но пришлось интегрировать сервис-пак, тогда процесс пошел.
Вадим, Спасибо за статью. Очень грамотно и доходчиво изложен материал, впрочем как всегда ) Сам так и не смог, в свое время, разобраться с этой проблемой. Пришлось интегрировать обновления с помощью dism. Думаю, на досуге, обязательно попробую вышеперечисленные методы. Сам делал сборки 2000, XP и 7-ки. Сборки я делаю для себя и рабочих ПК. В них включаю лишь обновления, необходимые мне твики, файлы ответов, чтобы ручками каждый раз параметры не вводить. Интеграцией ненужных тем и программ никогда не занимался и не буду, так как программы устаревают, а очень часто переделывать сборки нет времени и желания, а темы — зачем мне они — как работаю на «классике» со времен 98 так и по сей день остаюсь ей верен )
Роман, в том-то и дело, что проблемы тут как таковой нет, поскольку режим аудита лишь для удобства. Но в многократном обобщении одного и того же образа есть нюансы.
Windows 7
Если требуется, чтобы программа Sysprep выполнялась несколько раз на одном компьютере, нужно использовать параметр SkipRearm из компонента Microsoft-Windows-Security-Licensing-SLC, чтобы отложить сброс часов активации. Поскольку часы активации можно сбросить только три раза, и если запускать программу Sysprep несколько раз на одном компьютере, часы могут быть сброшены трижды. Корпорация Майкрософт рекомендует использовать параметр SkipRearm, если планируется запускать программу Sysprep несколько раз на одном компьютере. Источник
Windows 8
В большинстве сценариев развертывания Windows 8 больше нет необходимости использовать параметр файла ответов SkipRearm для сброса часов активации Windows при многократном выполнении команды Sysprep на компьютере. В Windows 8 параметр SkipRearm используется для указания состояния лицензирования Windows. Если указать розничный ключ продукта или ключ многократной установки, то Windows активируется автоматически. Команду Sysprep можно выполнять не более 8 раз с одним образом Windows. После восьмикратного выполнения Sysprep с образом Windows 8 необходимо заново создать образ Windows. Источник
И не более числа указанного в пункте «Оставшееся число возвратов к исходному состоянию активации», то есть если там прописано 3, то только 3 раза вы сможете воспользоваться sysprep’om.
А одновременно для себя и для работы — нельзя? :)
В своих опросах я не пытаюсь делать всеобъемлющие списки вариантов. Традиционно предлагается выбрать наиболее актуальный для вас или последний.
«…Проблема в том, что в режиме аудита невозможно обновить ОС из панели управления…» Не совсем понимаю что за проблема. Я создаю образ следующим методом, устанавливаю ОС на виртуальную машину, затем накатываю обновления через Центр обновления Windows и затем запускаю sysprep. Все, проблем нет, ставил так системы много раз все обновления на месте. Что сервер, что обычная винда.
Александр, проблема в режиме аудита Windows 8.1. Об этом написано в статье.
«…Цель ведь не в том, чтобы обновиться из режима аудита, а в получении обновленного образа системы…» А зачем тогда в статье вот это предложение?
Александр, затем, что именно так формулируют вопрос люди, столкнувшиеся с проблемой.
К сожалению, в опросе отсутствует пункт «Да, делал, но прекратил». Именно таков мой ответ. Выбрал таки в итоге «Я в танке»
Ранее делал сборки на базе WinXP под конкретные машины — допустим только эта материнская плата и небольшие производные от нее или под конкретный ноутбук/нетбук. Для себя + тестирование на VM.
Сейчас для меня это потеряло актуальность, т.к. те системы, что были сделаны ранее, уже не актуальны. Новые системы на базе 7 / 8 — накатаны, сделаны образы на случай краха (содержатся в полной боевой готовности — бекап каждые 6 часов в сутки).
Если уж дело касается вопроса делать образ/качать, то тут не все очевидно. Если побаловаться на ВМ — то беру «левую» сборку и начинаю ее гонять, в т.ч. вирусами (!). Если надо что-то проверить в нормальных боевых условиях — беру голый или готовый образ, который указан выше, загружаю в ВМ и не испытываю проблем, если вдруг что-то пойдет не так.
В любом случае — взял решение на заметку (а вдруг…)
P.S.: Вадим, расскажите, пожалуйста, немного о ваших велопутешествиях. Давно уже нет интересного материала для чтения :)
Игорь, видимо, ваш пункт был «Нет, и они мне не нужны», ибо я нахожу странным даже баловство с чужими сборками (разве что для изучения их содержимого).
О вело напишу как-нибудь, да :)
А что есть «сборка»? Интеграция чего-то в дистрибутив? А готовый образ, развёртываемый по сети — это «сборка» или нет? А если его не по сети, а ручками переносить приходится? А виртуалки? Я их «собираю», копирую, использую заранее настроенные
Из-за расплывчатости понятия — «я в танке!»
Евгений, сборка — дистрибутив, отличный от оригинального. Мое определение не претендует на точность, правильность, всеобъемлемость. В качестве побочных эффектов может вызывать возбуждение, раздражение, повышенное потовыделение. Не вникать без консультации с врачом.
Вадим! просто супер вовремя, сижу делаю корпоративный образ, попутно вспомнил, что есть такая проблема сижу думаю, бац падает рассылка от вашего сайта в почту! спасибище!
Как говорится, хороша ложка к обеду :) Вообще, эта запись с прицелом на страждущих из будущего, как и большинство материалов, решающих специфические задачи.
Раньше делал, во времена 32 битной ХР. С 64 битной возникли неразрешимые для меня сложности с интеграцией своего сертификата, поэтому забил.
Я не одобряю установку модулей PowerShell для разовой задачи. И тем более не одобряю размещение собственного файла внутри System32.
Вообще, для решения этой задачи можно воспользоваться готовым скриптом. Нужно только скопировать текст со странички и сохранить в блокноте с расширением vbs. При этом сам скрипт может лежать где угодно.
И, кстати, в Windows Server этот скрипт уже встроен, ничего даже сохранять и копировать не нужно.
1. В чем проблема с установкой модулей PS для разовой задачи?
2. Я указал, что из System32 модуль можно удалить по окончании процедуры. Да, можно было обойтись и без копирования туда, но такой подход минимизирует проблемы с исполнением скрипта. Копирование своих файлов в системные папки поддерживается.
3. Спасибо за скрипт VBS. Прозреваю, что при его появлении ты бы сказал, что политика партии предписывает использовать PS :) И ты сам тестировал опубликованное на MSDN? Судя по комментариям, скрипту тоже далеко до идеала.
Vadim Sterkin1. В чем проблема с установкой модулей PS для разовой задачи? »
В том же, в чём проблема с использованием стороннего ПО вместо встроенного :) (а) лишние телодвижения и (б) захламление системы. С любым из этих недостатков можно мириться, но два вместе — для меня это чересчур.
Vadim Sterkin2. Я указал, что из System32 модуль можно удалить по окончании процедуры. Да, можно было обойтись и без копирования туда, но такой подход минимизирует проблемы с исполнением скрипта. Копирование своих файлов в системные папки поддерживается. »
Да я не спорю, что поддерживается. Просто это опять на мой взгляд слишком сложный и рискованный путь. Здесь нет, конечно, никакого криминала. Но при прочих равных я бы предпочёл более длинную командную строчку, чем копирование напрямую в системную папку.
Vadim Sterkin3. Спасибо за скрипт VBS. Прозреваю, что при его появлении ты бы сказал, что политика партии предписывает использовать PS :) И ты сам тестировал опубликованное на MSDN? Судя по комментариям, скрипту тоже далеко до идеала. »
Да, тестировал. (Я, как и ты, избегаю советовать то, чего не пробовал сам). Этот скрипт работает.
Конечно, он не идеален. Например, не позволяет выбрать, какие обновления ставить. Но для твоей задачи это не принципиально. (Кстати, та версия скрипта, которая встроена в Windows Server, лишена этого недостатка).
И да, VBS это прошлый век :) Опять же, при прочих равных я бы предпочёл посоветовать скрипт на PowerShell. Но готового такого скрипта нет (или я не знаю). А на он уже VBS есть. К тому же, официально опубликованный. (Пусть и на правах сэмпла). Всё это в моих глазах сильно перевешивает имеющиеся альтернативы :)
Артем, я не одобряю приравнивание временного копирования и импорта модуля PS к установке стороннего ПО вкупе с засорением системы :) Я вот не стал лепить более длинную командную строку, исходя из своих навыков скриптования и оценочного суждения о работоспособности такого решения в руках людей, не разобравшихся с исходной задачей.
Я сейчас не могу проверить VBS, но судя по
процесс установки обновлений не полностью автоматизирован. И тот факт, что он официально опубликован ни разу не перевешивает подобные недостатки. Ведь как только ты начинаешь править сэмпл, вся его официальность сходит на нет :) А вообще, Microsoft неплохо было бы запилить командлет для WU — это сняло бы сразу все озвученные тут претензии.
Vadim Sterkin: процесс установки обновлений не полностью автоматизирован »
Ну, у тебя в исходной постановке задачи не было ничего о том, что скрипт должен работать без единого вопроса :) В твоём варианте куча ручных действий. В моём — ну, надо нажать кнопку «Y» один раз.
Но если мы уж начали тут меряться длиной командной строки и вспоминать всякие устаревшие технологии, то можно сделать так:
Так что не надо ничего править в сэмпле :)
И да, коммандлеты для WU будут. Когда-нибудь. Ну или как минимум скрипты на пошике. (У меня даже где-то был готовый, но конечно не официальный. Да и лень искать).
А sconfig в Server Core для обновления что использует?
как раз файл WUA_SearchDownloadInstall.vbs он и использует. Только не тот, что на MSDN. А чуть более расширенную его версию, которая лежит в %SystemRoot%\System32\en-us.
Лет 10 назад сам сборки делал только любопытства ради, но уже давненько не делал ни каких сборок. Только «чистая» виндовс и последовательный накат необходимого софта и обновлений. А вот тут стараюсь использовать автоматизацию, насколько это возможно конечно. И не каких сборок.
Во времена ХР делал, чтобы решить проблему OEM-дистрибутива, не предлагающего при переустановке системы выбрать раздел и автоматически устанавливающий новую ОС на раздел D. С тех пор многое изменилось, Windows стала более стабильна и необходимости что-то делать нет. Не делаю даже архивный образ, т.к. полностью уверен в своих силах, справиться с какой-либо проблемой. Мало того(сейчас меня осудит большинство), храню данные на системном разделе, в профиле пользователя. И меня это ничуть не напрягает. Хотя конечно архив личных фото продублирован. Кроме того, защита системы включена на всех разделах и проблем с утратой файла не существует, вытаскивается даже то, что было удалено из облака.
Вадим! а не сталкивались с нерабочим RDP в режиме аудита Win8.1 update 1 ?