понедельник, 23 декабря 2019 г.

Sysprep ошибка 0x80073cf2

На днях столкнулся с задачей - нужно заменить большое количество компьютеров(компьютерный класс в школе). Все новые компьютеры на замену типовой конфигурации(у всех одинаковое железо), на компьютерах должен стоять большой набор пользовательского софта. Для экономии времени и сил решил подготовить эталонный образ системы при помощи утилиты sysprep, а затем клонировать его на все компьютеры.
Установил чистую систему, выполнил первичную настройку после установки, под новым пользователем установил все необходимые программы, драйвера и актуальные обновления, подкорректировал в системе некоторые настройки(переключение языка, размер файла подкачки, ярлыки на рабочем столе, разрешение удалённого доступа и т.д.). После этого запустил sysprep и попытался подготовить образ к использованию. Утилита после недолгих раздумий выдала окно с ошибкой и сообщением о том, что выполнить подготовку не удаётся и советом поискать причину в логах.
В логах нашел ошибку 0x80073cf2 а так же сообщение о том, что у учётной записи установлены пакеты, которые недоступны для других пользователей. В Интернете нашел несколько тем с такой же ошибкой, но без нормального решения. Суть этой ошибки в том, что когда под новым пользователем скачиваются обновления, автоматически для этого же пользователя устанавливается приложение Microsoft Store(в моём случае это был языковой пакет), которое потом и мешает sysprep. Удаление пользователя или удаление этого приложения через PowerShell в режиме аудита проблему не решает. На Technet предлагают отключить через реестр обновление приложений Windows Store, чтобы не устанавливался пакет, но такое решение выглядит сомнительным.
Методом проб и ошибок(систему и весь софт пришлось переустанавливать 3 раза) нашел решение:
Установку всех драйверов, ПО и обновлений следует выполнять в режиме аудита. При этом в режим аудита нужно заходить на завершающем этапе установки системы. Для этого в момент выбора региона, который появляется сразу после установки Windows, нужно нажать Ctrl+Shift+F3. Система перезагрузится и вы попадёте в режим аудита под встроенной учетной записью Администратора(которая по умолчанию выключена), без создания каких-либо других учётных записей. Именно в этом режиме нужно установить всё, что вы хотите видеть в эталонном образе - драйверы, обновления и всё необходимое ПО, после чего уже подготовить утилитой sysprep образ к использованию, а затем клонировать его на другие компьютеры.
Таким образом подготовка, клонирование и дальнейшая настройка уже клонированной системы на других компьютерах проходит без проблем. Проверено на Windows 10 сборки 1909 - установлены драйверы, обновления на момент 21.12.2019 и много разного софта - офис, архиваторы, графические редакторы, языки программирования и т.д.

четверг, 14 ноября 2019 г.

Обновление до Windows 10 1909(19H2) через WSUS

Наконец-то вышло очередное осеннее обновление для Windows 10 1909(19H2).
На WSUS обновление доступно в двух вариантах:
1) Обновление компонентов для Windows 10 версии 1909 ...(с помощью пакета Enablement). Доступно для установки на Windows 10 предыдущей версии 1903. Установка происходит в режиме обычных ежемесячных обновлений и занимает совсем немного времени.
2) Обновление до функций Windows 10 ..., версия 1909, ... Для установки на Windows 10 более ранних версий (1809 и старше). Устанавливается в режиме "полноценного" обновления до новой версии и как обычно, займет какое-то время.

Так же доступно Обновление Windows 7 и 8.1 до Windows 10, версия 1909, ... Соответственно - для обновления Windows 7 и 8.1.
Как настроить обновление через WSUS старых версии Windows до Windows 10, чтобы при этом не возникало ошибок, я уже ранее описывал.

понедельник, 4 ноября 2019 г.

Обновление до Windows 10 через WSUS. Ошибка 0xC1900208

Из всей линейки Windows для рабочих станций, Windows 10 на данный момент является самой актуальной. Расширенная поддержка Windows 7 SP1 заканчивается 14 января 2020 года, Windows 8.1 - 10 января 2023 года. Это значит, что для этих операционных систем перестанут выпускаться критические обновления и обновления безопасности. Со временем производители оборудования перестанут выпускать драйвера, а производители программного обеспечения - софт с их поддержкой.
Если у вас еще остались компьютеры с Windows 7 SP1 и Windows 8.1 и вы собираетесь в будущем поддерживать свой парк компьютеров в актуальном состоянии, то довольно скоро вам придется перевести их под управление Windows 10. К счастью, для этого вовсе не обязательно переустанавливать ОС. У Windows 10 имеется очень удобная возможность обновления с уже установленной Windows с сохранением документов, установленных программ и настроек. И если компьютер удовлетворяет минимальным системным требованиям, а так же проходит проверку на совместимость, то такое обновление, как правило, проходит удачно.
Для запуска процесса обновления нужно подключить к компьютеру флешку с дистрибутивом(или вставить компакт-диск), запустить файл установки, а далее следовать указаниям, появляющемся на экране.
Но если в сети несколько десятков, а то и сотен компьютеров, то такой способ обновления становится не удобным. Для облегчения этой задачи есть возможность установки обновления до Windows 10 через WSUS.
На первый взгляд кажется все просто:
1. создаём на WSUS отдельную группу для компьютеров,  которые мы хотим обновить.
2. одобряем для этой группы обновление до Windows 10 (в моём случае это Обновление Windows 7 и 8.1 до Windows 10, версия 1903, ru-ru x64 ).
3. Включаем в созданную группу нужные нам компьютеры и пытаемся на них получить обновление.
Но не тут-то было. В Центре Обновления на компьютерах никаких уведомлений о доступности обновления не появляется. Идем в журнал событий Windows. Там видим, что обновление доступно и будет установлено, согласно расписанию в такое-то время. Однако в указанное время ничего не происходит и в логах появляется ошибка 0xC1900208. Далее всё повторяется по кругу. На WSUS для указанных компьютеров так же отображается ошибка:

При вводе кода ошибки в поисковик, выдается много результатов. Например страница с кодами ошибок на официальном сайте Microsoft . В большинстве случаев пишется, что данный код ошибки означает наличие на обновляемом компьютере несовместимого ПО. Однако если попытаться обновиться на компьютере с флешки или диска, то обновление пройдет без проблем и ни о каком несовместимом ПО сообщений не будет.
В результате поисков в Интернете, мной всё-таки было найдено решение этой проблемы. Для того, чтобы этой ошибки не возникало, в реестре обновляемого компьютера должен быть прописан следующий параметр:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\OSUpgrade]
"AllowOSUpgrade"=dword:00000001
Файл реестра с этим параметром можно скачать с Яндекс-диска (пароль на архив - 1). Далее, для удобства, применяем этот файл на обновляемых компьютерах через GPO. Как это сделать, можно прочитать например здесь .
После применения политики, на компьютере будет доступно к установке обновление до Windows 10.
Для установки обновления, нужно, чтобы пользователь компьютера обладал правами администратора, либо нужно будет ввести пароль администратора, когда это потребуется на одном из этапов. Далее можно просто контролировать процесс обновления с помощью какой-нибудь утилиты удалённого администрирования.
Конечно такой способ не позволяет полностью автоматизировать процесс обновления, но он явно удобнее, чем обновление с дистрибутива с подключением физического носителя.

четверг, 10 октября 2019 г.

Регулярное автоматическое резервное копирование баз АИСУ "Параграф"

В работе государственных образовательных учреждений некоторых регионов(и в Санкт-Петербурге в том числе) централизованно используется АИСУ "Параграф", основанная на системе управления базами данных Firebird. "Параграф" постоянно развивается, за последние несколько лет в нем появилось много новых модулей и функций. Несомненно, это важный элемент работы школ и потеря хранимых в нём данных будет очень критична для учреждения. Сам "Параграф", к сожалению, до сих пор не располагает никакими инструментами для выполнения регулярного резервного копирования своих баз в автоматическом режиме. Сделать резервные копии можно лишь вручную через менеджер баз данных. Думаю, не нужно объяснять, насколько неудобно делать резервные копии руками, а тем более - делать их так регулярно. Поэтому чаще всего их делают от случая к случаю. В лучшем случае - перед очередным обновлением серверной части.
Тем не менее, очень удобно иметь в наличии регулярные бекапы, чтобы в случае чего была возможность поднять базу из недавней копии, а не копии, сделанной 2-3 месяца(а то и полгода-год) назад и потом восстанавливать данные за весь потерянный период.
Для решения этой задачи был написан скрипт, который использует встроенную в Firebird утилиту резервного копирования gbak.exe. Скрипт с комментариями располагается на Яндекс-диске и его можно свободно скачать по этой ссылке(пароль на архив - 1).
Для корректной работы скрипта должен быть установлен свободно распространяемый архиватор 7zip (www.7-zip.org) . Он используется для упаковывания резервных копий баз в архив формата ZIP с максимальной степенью сжатия. Это увеличивает время создания резервных копий(чуть больше получаса на процессоре Core2 Quad Q9400 с ОЗУ 8 Gb DDR3), но при этом позволяет уменьшить размер резервной копии примерно на 10% по сравнению со сжатием встроенными средствами Windows(этот вариант использует менеджер баз данных). Поскольку предполагается, что скрипт будет запускаться ночью автоматически, то бОльшее время выполнения не критично, при этом уменьшение размера хранимых резервных копий важно.
Скрипт написан для 64-битной операционной системы Windows и для 64-битных версий приложений Firebird и 7zip. Поэтому если у вас стоят 32-битные версии, вам нужно будет поменять соответствующие пути к программам в скрипте, либо переустановить их на 64-битные.
Для настройки регулярного резервного копирования запускаем планировщик заданий(нажимаем "Пуск" и набираем "Планировщик заданий):

В колонке "Действие" нажимаем "Создать задачу":

На вкладке "Триггеры" задаём интервал выполнения задачи и время выполнения. В примере это ежедневно, в 12 часов ночи. Нажимаем "ОК".:

На вкладке "Действия" нажимаем "Создать", в поле "Действие" выбираем "Запуск программы", в поле "Программа или сценарий" задаём путь к скрипту, нажимаем "ОК".
 

В открывшемся окне на вкладке "Общие" в поле "Имя" задаем имя создаваемой задаче, ставим галочку "Выполнять вне зависимости от регистрации пользователя"(чтобы задание выполнялось даже, когда не выполнен вход в систему, например после перезагрузки сервера), нажимаем ОК:

В появившемся окне задаем пароль для учетной записи, под которой будет выполняться скрипт, нажимаем "ОК":

Таким образом было создано задание, по которому каждую ночь автоматически в 12 часов будет запускаться скрипт, который делает резервные копии баз Параграфа, а затем упаковывает их в архивы ZIP с датой и временем создания в имени файла.
Скрипт проверен и успешно работает на Windows 7 x64 SP1 Professional. Создаваемые скриптом бекапы проверены на предмет восстановления менеджером баз данных АИСУ "Параграф". Восстановление проходит без ошибок, Параграф после восстановления работают корректно.
Помимо выполнения регулярного резервного копирования очень важно правильно хранить созданные копии данных. Не стоит забывать о правиле «3-2-1»
 
Обновление от июня 2022 года:
В связи с обновлением Firebird с версии 2.5 на 4 изменился путь к утилите gbak.exe.
Обновленный скрипт для работы с Firebird 4-й версии доступен по этой ссылке(пароль на архив - 1).