Инструменты пользователя

Инструменты сайта


автоматизация_win_10_iot_enterprise

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
автоматизация_win_10_iot_enterprise [2021/05/17 12:56]
vladimir [Тиражирование]
автоматизация_win_10_iot_enterprise [2023/04/10 13:59] (текущий)
vladimir
Строка 1: Строка 1:
-====== Скрипты для автоматизации настройки Windows ​10 IoT Enterprise ​======+====== Скрипты для автоматизации настройки Windows ======
 Скрипты созданы для упрощения и ускорения настройки системы.\\ Скрипты созданы для упрощения и ускорения настройки системы.\\
 Сведения о наборе:​ Сведения о наборе:​
   * Используемый язык: [[+tab|powershell|PowerShell]]   * Используемый язык: [[+tab|powershell|PowerShell]]
-  * Форма распространения: ​самораспаковывающийся архив+  * Форма распространения:​ 
 +    * Самораспаковывающийся ​архив 
 +    * zip-архив
 Версия набора скриптов обозначается следующим образом – (версия ОС).(номер сборки)\\ Версия набора скриптов обозначается следующим образом – (версия ОС).(номер сборки)\\
 \\ \\
Строка 13: Строка 15:
   * [[+tab|https://​habr.com/​ru/​company/​quarta/​blog/​520014|Будни OEMщика (Часть 2)]]   * [[+tab|https://​habr.com/​ru/​company/​quarta/​blog/​520014|Будни OEMщика (Часть 2)]]
   * [[+tab|https://​habr.com/​ru/​company/​quarta/​blog/​518686|Будни OEMщика (Часть 3)]]   * [[+tab|https://​habr.com/​ru/​company/​quarta/​blog/​518686|Будни OEMщика (Часть 3)]]
 +[[+tab|script-history|История версий]]
 ====== Особенности набора ====== ====== Особенности набора ======
 Отдельный скрипт посвящен отдельной настройке,​ все скрипты разложены по папкам,​ которые названы в соответствии с настройкой. Папки однотипных настроек сгруппированы в общие папки с соответствующим названием.\\ Отдельный скрипт посвящен отдельной настройке,​ все скрипты разложены по папкам,​ которые названы в соответствии с настройкой. Папки однотипных настроек сгруппированы в общие папки с соответствующим названием.\\
 Каждая папка со скриптом содержит:​ Каждая папка со скриптом содержит:​
   * Скрипт для настройки - файл "​PS1"​   * Скрипт для настройки - файл "​PS1"​
-  * Скрипт для запуска скрипта "​PS1"​ - "BAT+  * Скрипт для запуска скрипта "​PS1"​ - "JS
-  * Файл с описанием - "​PDF"​+===== Типовые настройки =====
 Скрипты отвечающие за типовые настройки могут работать в группе. За групповую настройку отвечает скрипт "​SettingsGroup"​. С помощью групповой настройки можно: Скрипты отвечающие за типовые настройки могут работать в группе. За групповую настройку отвечает скрипт "​SettingsGroup"​. С помощью групповой настройки можно:
   * Посмотреть текущее состояние настроек   * Посмотреть текущее состояние настроек
   * Посмотреть какой конкретный скрипт отвечает за конкретную настройку   * Посмотреть какой конкретный скрипт отвечает за конкретную настройку
   * Установить типовые значения для выбранной группы настроек или вернуть настройки по умолчанию   * Установить типовые значения для выбранной группы настроек или вернуть настройки по умолчанию
 +Скрипт «SettingsGroup.ps1» вызывает функцию «SettingsMenu» из модуля «MessageAndMenu.psm1». Данная функция позволяет работать с группой скриптов,​ которые находятся в подкаталогах,​ каталога,​ в котором находится скрипт «SettingsGroup.ps1» и содержат функцию «Lockdown»
 <WRAP center round info 100%> <WRAP center round info 100%>
 При запуске скрипта отдельно у большинства скриптов возможности будут шире чем при работе в группе. При запуске скрипта отдельно у большинства скриптов возможности будут шире чем при работе в группе.
 </​WRAP>​ </​WRAP>​
-===== Работа скрипта запуска - "BAT" ===== +===== Работа скрипта запуска - "JS" ===== 
-"BAT" запускает файл "​PS1",​ который соответствует началу названия "BAT" файла, при поиске файла для запуска найденные файлы будут отсортированы по имени и будет запущен последний файл. Пример:​\\+"JS"-файл ​запускает файл "​PS1",​ который соответствует началу названия "JS" файла, при поиске файла для запуска найденные файлы будут отсортированы по имени и будет запущен последний файл. Пример:​\\
 При наличии файлов:​ "​Test_01.PS1",​ "​Test_02.PS1",​ "​Test_03.PS1"​.\\ При наличии файлов:​ "​Test_01.PS1",​ "​Test_02.PS1",​ "​Test_03.PS1"​.\\
-"BAT" файл с именем "Test.BAT" запустит файл "​Test_03.PS1"​. Данная возможность позволяет в одной папке сохранять разные версии скриптов и запускать только последнюю версию.+"JS" файл с именем "Test.JS" запустит файл "​Test_03.PS1"​. Данная возможность позволяет в одной папке сохранять разные версии скриптов и запускать только последнюю версию.
 <WRAP center round important 100%> <WRAP center round important 100%>
 Если сохранить множество версий скрипта,​ который может работать в группе,​ при групповой работе отработают все версии. Чтобы этого избежать внесите изменение в начало или середину имени функции "​Lockdown"​. Поиск скриптов групповой работы осуществляется по наличию строки "​^Function Lockdown"​. Если сохранить множество версий скрипта,​ который может работать в группе,​ при групповой работе отработают все версии. Чтобы этого избежать внесите изменение в начало или середину имени функции "​Lockdown"​. Поиск скриптов групповой работы осуществляется по наличию строки "​^Function Lockdown"​.
Строка 37: Строка 41:
 ====== Функционал скриптов ====== ====== Функционал скриптов ======
 ===== Sysprep ===== ===== Sysprep =====
 +Подробнее об утилите Sysprep и запечатывании можно [[+tab|sysprep|прочитать здесь]]\\
 +Возможности скрипта:​
   * Отображение текущего состояния ключа продукта (скрыт/​открыт)   * Отображение текущего состояния ключа продукта (скрыт/​открыт)
   * Скрытие ключа продукта с сохранением возможности активации   * Скрытие ключа продукта с сохранением возможности активации
   * Добавление / удаление команды автоматического закрытия программы "​Sysprep"​ при загрузке системы   * Добавление / удаление команды автоматического закрытия программы "​Sysprep"​ при загрузке системы
-  * Запечатывание ​системы с возможностью выбора файла ответов +  * Подготовка системы с возможностью выбора файла ответов 
-Действия скрипта при запечатывании в режиме (указание режима):​+При подготовке системы скрипт всегда использует режим обобщения "​generalize"​\\ 
 +В скрипте файл ответов для ​подготовки системы можно выбирать не в консольном меню, а в стандартном диалоговом окне «FileOpenDialog». Для ​изменения режима выбора файла необходимо для функции «Select-File» указать ключ «-d»\\ 
 +Действия скрипта при подготовке системы ​в режиме (указание режима):​
   * Замена битностей всех разделов на текущую битность системы (OOBE и Audit)   * Замена битностей всех разделов на текущую битность системы (OOBE и Audit)
   * Проверка наличия учетной записи в системе,​ которая указана в файле ответов для автовхода (OOBE и Audit)   * Проверка наличия учетной записи в системе,​ которая указана в файле ответов для автовхода (OOBE и Audit)
   * Проверка настроек Shell Launcher'​а на прохождение стадии "​OOBE"​ и опциональная временная перенастройка (OOBE)   * Проверка настроек Shell Launcher'​а на прохождение стадии "​OOBE"​ и опциональная временная перенастройка (OOBE)
   * Проверка настроек AppLocker'​а на прохождение стадии "​OOBE"​ и опциональная временная перенастройка (OOBE)   * Проверка настроек AppLocker'​а на прохождение стадии "​OOBE"​ и опциональная временная перенастройка (OOBE)
-Временная перенастройка - настройки будут изменены перед запечатыванием и возвращены в исходное состояние после первой загрузки системы.+Временная перенастройка - настройки будут изменены перед запечатыванием и возвращены в исходное состояние после первой загрузки ​системы.\\ 
 +Скрипт автоматически меняет разрядность,​ указанную в файле ответов на текущую разрядность ​системы.
 ===== Локализация ===== ===== Локализация =====
 В скрипте есть два варианта автоматической локализации:​ В скрипте есть два варианта автоматической локализации:​
Строка 52: Строка 61:
   * Полная локализация системы   * Полная локализация системы
 Без установки языкового пакета - изменение местоположения,​ добавление клавиатурной раскладки,​ корректное отображение кириллицы.\\ Без установки языкового пакета - изменение местоположения,​ добавление клавиатурной раскладки,​ корректное отображение кириллицы.\\
-Будет выполнена российская локализация. ​Подробности ​по установке различных языковых пакетов и изменение локализации описано ​в документации к скрипту.+Будет выполнена российская локализация. 
 +==== Особенности ​==== 
 +Для каждой версии и разрядности системы нужен определенный языковой пакет. Скрипт ​не определяет подходит ли языковой пакет для текущей системы.\\ 
 +При выборе локализации с установкой языкового пакета скрипт будет искать ​языковой пакет "​ru-ru"​ в папке "​LangPack"​. В папке "​LangPack"​ языковой ​пакет ​должен находиться ​в иерархии каталогов,​ которые определят определяющим выпуск ОС "​Win10"​ или "​Win11"​ с подкаталогом версии "​1809"​ или "​21H2",​ например "Win10 \ 21H2"​.\\ 
 +Скрипт может установить языковой пакет с диска, поэтому можно просто подключить диск с языковыми пакетами.\\ 
 +В скрипте нет возможности ​автоматизированного создания локализованного дистрибутива, ​как создать локализованный дистрибутив вручную [[+tab|localization#​пример_русскоязычной_локализации|описано здесь]]
 ===== Пользователи ===== ===== Пользователи =====
-  * Создание перечня пользователя с именами,​ которые указаны в текстовом файле+  * Создание перечня пользователя с именами,​ которые указаны в текстовом файле ​"​CreateUserList.txt"​
   * Переброс выбранного пользователя между группами "​Пользователи"​ и "​Администраторы"​   * Переброс выбранного пользователя между группами "​Пользователи"​ и "​Администраторы"​
 Все создаваемые пользователи перемещаются в группу "​Администраторы"​ и у них не будет ограничен срок действия пароля. Все создаваемые пользователи перемещаются в группу "​Администраторы"​ и у них не будет ограничен срок действия пароля.
-===== Питание ===== +===== Электропитание ===== 
-  * Создание схемы питания "HORM+  * Создание схемы питания "Always On
-  * Переключение между схемами питания "HORM" и "​Сбалансированная"​+  * Переключение между схемами питания "Always On" и "​Сбалансированная"​
   * Экспорт/​импорт схем питания   * Экспорт/​импорт схем питания
-В схеме питания "HORM" будут отключены все энергосберегающие функции и запрос пароля при выходе из режима гибернации.+В схеме питания "Always On" будут отключены все энергосберегающие функции и запрос пароля при выходе из режима гибернации.
 ===== Сообщения и уведомления ===== ===== Сообщения и уведомления =====
-"​Сообщения и уведомления"​ - папка с группой ​однотипных ​настроек: +"​Сообщения и уведомления"​ - папка с группой настроек 
-  ​* ​Сообщения об ошибках +==== Сообщения об ошибках ​==== 
-  ​* ​Запросы об отправке отчетов об ошибках +Скрипт включает / отключает отображение диалоговых окон уведомляющих об ошибке.\\ 
-  ​* ​Всплывающие уведомления +Для проверки настройки отключения ошибок можно воспользоваться утилитой «ShowError.com»,​ эта утилита работает только в DOS'​е,​ а в Windows выдает ошибку. 
-  ​* ​Политика диагностики +==== Запросы об отправке отчетов об ошибках ​==== 
-  ​* ​Отображение ошибок при загрузке +Скрипт включает / отключает отображение диалоговых окон с запросом на подтверждение отправки отчета об ошибках 
-  ​* ​Отображение синего экрана +==== Всплывающие уведомления ​==== 
-  * Уведомления ​об обновлениях +Скрипт включает / отключает всплывающие уведомления. 
-С помощью ​скриптов можно установить ​значения настроек ​"вкл./выкл."+==== Политика диагностики ​==== 
 +Скрипт включает / отключает политику диагностики. 
 +==== Отображение ошибок при загрузке ​==== 
 +Скрипт включает / отключает отображение ошибок при загрузке системы. 
 +==== Отображение синего экрана ​==== 
 +Скрипт ​включает / отключает отображение синего экрана.\\ 
 +Поведение системы при синем экране можно проверить с помощью ​[[#ручной_вызов_синего_экрана|ручного вызова синего экрана]] 
 +==== Уведомления ​об обновлениях ==== 
 +Скрипт ​включает ​отключает уведомления об обновлениях.
 ===== Обновления ===== ===== Обновления =====
 Включение / отключение получения всех обновлений. Включение / отключение получения всех обновлений.
Строка 86: Строка 108:
 При настройке запуска приложения для пользователя или группы скрипт предложит выбрать запускаемый файл. После выбора файла скрипит пропишет в настройки Shell Launcher'​а запуск выбранного файла для выбранного пользователя или группы и установит перезапуск приложения при его закрытии.\\ При настройке запуска приложения для пользователя или группы скрипт предложит выбрать запускаемый файл. После выбора файла скрипит пропишет в настройки Shell Launcher'​а запуск выбранного файла для выбранного пользователя или группы и установит перезапуск приложения при его закрытии.\\
 Открытие настроек Shell Launcher'​а запускает редактор реестра с позиционированием на ветке с настройками Shell Launcher'​а. Открытие настроек Shell Launcher'​а запускает редактор реестра с позиционированием на ветке с настройками Shell Launcher'​а.
 +==== Shell Launcher V2 ====
 +  * Включение / отключение Shell Launcher'​а
 +  * Применение файлов конфигурации
 +  * Отображение текущей конфигурации
 +  * Удаление настроек
 ==== Ограниченный доступ ==== ==== Ограниченный доступ ====
   * Открытие окна "​Настройка киоска"​   * Открытие окна "​Настройка киоска"​
Строка 98: Строка 125:
   * Удаление конфигурации мультикиоска   * Удаление конфигурации мультикиоска
 При применении конфигурации мультикиоска скрипт берет содержимое указанного XML файла и меняет одинаковые значения указанные как параметр ID на созданные GUID, в сам файл изменения не вносятся. Поэтому для связки профиля и конфигурации в ID можно указать имя пользователя. При применении конфигурации мультикиоска скрипт берет содержимое указанного XML файла и меняет одинаковые значения указанные как параметр ID на созданные GUID, в сам файл изменения не вносятся. Поэтому для связки профиля и конфигурации в ID можно указать имя пользователя.
 +==== Открытие приложений после перезапуска ====
 +Некоторые приложения могут быть восстановлены после загрузки системы,​ если они были открыты до перезагрузки системы. Такое поведение системы будет мешать если для приложения настроен автозапуск,​ в таком случае одно приложение будет запущено с помощью автозапуска,​ а второе будет восстановлено.\\
 +Скрипт отключает восстановление работы приложений,​ работавших на момент перезагрузки.
 +==== AUMID ====
 +Отображает [[+tab|https://​docs.microsoft.com/​ru-ru/​windows/​configuration/​find-the-application-user-model-id-of-an-installed-app|AUMID]] (Application User Model ID) приложений
 ===== Устройства ввода ===== ===== Устройства ввода =====
 "​Устройства ввода"​ - папка с группой однотипных настроек:​ "​Устройства ввода"​ - папка с группой однотипных настроек:​
   * Отключение экранных жестов   * Отключение экранных жестов
   * Фильтр клавиатуры   * Фильтр клавиатуры
-==== Экранные жесты ​==== +==== Сенсорный экран ==== 
-Включение / отключение прокрутки от краев.+Включение / отключение прокрутки от краев.\\ 
 +Включение / отключение чувствительности экрана.
 ==== Фильтр клавиатуры ==== ==== Фильтр клавиатуры ====
   * Включение / отключение фильтра клавиатуры   * Включение / отключение фильтра клавиатуры
Строка 163: Строка 196:
   * Перечня учетных записей в меню «Пуск»   * Перечня учетных записей в меню «Пуск»
   * Перечня учетных записей на экране входа в систему (при блокировке или выходе из системы)   * Перечня учетных записей на экране входа в систему (при блокировке или выходе из системы)
-====== ​Ограничение запуска ​приложений (AppLocker======+====== ​WDAC ====== 
 +  * Конвертация политики в бинарный файл 
 +  * Применение ​политик из файла 
 +  * Очистка журнала 
 +  * Установка "​WDACWizard"​ 
 +====== ​AppLocker ======
 Настройка ограничений запуска приложений с помощью AppLocker'​а:​ Настройка ограничений запуска приложений с помощью AppLocker'​а:​
   * Отображение текущего состояния работы AppLocker'​а   * Отображение текущего состояния работы AppLocker'​а
Строка 174: Строка 212:
 Настройка правил по результатам аудита делает очень простым настройку по белому списку. Настройка правил по результатам аудита делает очень простым настройку по белому списку.
 ====== Блокировка устройств ====== ====== Блокировка устройств ======
-В наборе данный скрипт находится в папке "​Ограничение установки драйверов"​\\ +Скрипт находится в папке "​Ограничение установки драйверов"​\\
-\\+
 Запрет установки драйверов по ID или GUID'​у класса устройства Запрет установки драйверов по ID или GUID'​у класса устройства
   * Отображение текущий правил в виде таблицы с возможностью удаления выбранных правил   * Отображение текущий правил в виде таблицы с возможностью удаления выбранных правил
   * Выбор блокируемых устройств из таблицы с отображением имени и описания устройств   * Выбор блокируемых устройств из таблицы с отображением имени и описания устройств
   * Блокировка работы уже установленных драйверов   * Блокировка работы уже установленных драйверов
-Скрипт отображает ID устройств ​с обрезанным окончанием, окончание обрезано по маскам:​+===== Отображение устройств ​при добавлении правила ===== 
 +В списке будут отображены только те устройства, которые отсутствуют в списке изменяемого правила.\\ 
 +У отображаемых ID устройств будут ​обрезаны окончания ​по маскам:​
   * &​SUBSYS.*   * &​SUBSYS.*
   * &REV.*   * &REV.*
   * &CC.*   * &CC.*
 Т.е. в из ID будет удален указанный фрагмент и все, что за ним.\\ Т.е. в из ID будет удален указанный фрагмент и все, что за ним.\\
-ID устройств будут добавлены в правила в обрезанном виде.+ID устройств будут добавлены в правила в обрезанном виде.\\ 
 +\\ 
 +После исключения устройства из черного списка скрипт включит ранее запрещенное устройство,​ после ручного исключения из черного списка необходимо задействовать устройство вручную. 
 +===== Отображение устройств при просмотре / изменении правил ===== 
 +В колонке «Param» отображаются названия параметров политики,​ в поле «ParamNum» отображаются номера конкретных значений параметров.\\ 
 +\\ 
 +После применения правил будут отображены текущие настройки. Для завершения корректировки настроек необходимо закрыть окно.
 ====== Фильтр записи ====== ====== Фильтр записи ======
 +Общее описание возможностей:​
   * Отображение настроек для текущей и следующей сессии   * Отображение настроек для текущей и следующей сессии
-  * Переключение размеров оверлея RAM между (максимальный и стандартный+  * Настройка параметров оверлея
-  * Переключение уровня ​порогов (предупреждения и критический) ​между (оптимальный и стандартный) +
-  * Добавление задачи на перезагрузку при достижении критического порога+
   * Добавление задачи на включении фильтра записи при активации системы   * Добавление задачи на включении фильтра записи при активации системы
-  * Переключение режимов оверлея RAM / Disk и постоянный / временный 
-  * Включение режима HORM 
   * Создание задачи на гибернацию с указанием времени запуска задачи   * Создание задачи на гибернацию с указанием времени запуска задачи
-  * Демонстрация содержимого оверлея системного диска +"​VirusEmulator.vbs"​ - создает на рабочем столе столько ярлыков, ​сколько указано в поле ввода 
-Максимальный размер ​оверлея RAM общий объем RAM минус (1ГБ для x32 или 2ГБ для x64) + 
-Оптимальный уровень порогов: предупреждения - 20% от оверлеякритический - 10% от оверлея.+====== Автоматический вход пользователя ​====== 
 +  ​В версии ​Windows после 1903 скрипт включит возможность отключения требования пароля в оснастке учетных записей пользователя 
 +  - Скрипт запустит оболочку, которую можно вызывать по команде "​Netplwiz"​\\
 ====== Отображение загрузки системы и входа пользователя ====== ====== Отображение загрузки системы и входа пользователя ======
 "​Отображение загрузки системы и входа пользователя"​ - папка с группами настроек связанных с отображением загрузки системы:​ "​Отображение загрузки системы и входа пользователя"​ - папка с группами настроек связанных с отображением загрузки системы:​
Строка 207: Строка 251:
   * Включение / отключение анимации в виде крутящихся шариков при загрузке   * Включение / отключение анимации в виде крутящихся шариков при загрузке
 ====== Тиражирование ====== ====== Тиражирование ======
-"​Тиражирование" - группа скриптов для записи загрузочного носителя и создания / разворачивания образа ​системного тома. +===== Подготовка загрузочного носителя ===== 
-Скрипт ​записи загрузочного носителя: +==== Возможности ==== 
-  * Подготовка загрузочного носителя WinPE +  * Подготовка загрузочного носителя с WinPE 
-  * Запись установочного образа +  * Запись установочного образа на USB-носитель 
-При подготовке загрузочного носителя WinPE скрипт+==== Требования ==== 
-  - Создаст ​тома ​FAT32 и NTFS +  * Подключенный установочный образ Windows 
-  - Скопирует WinPE из установочного образа +  * Подключенный USB накопитель, который может быть отформатирован 
-  - В образ загрузки добавит скрипт тиражирования +==== Результат подготовки загрузочного носителя ​WinPE ==== 
-Скрипт ​тиражирования:+На выбранном носителе для подготовки будет:​ 
 +  - Основной раздел с файловой системой NTFS 
 +  - Загрузочный ​раздел с файловой системой FAT32 
 +Раздел для хранения образов будет первым т.к. версии Windows 10 до 1703 не видят второго раздела на флэш-диске.\\ 
 +На основной раздел будет скопирован файл «Menu.js» - скрипт ​с меню, отвечающий за создание и развертывание образов.\\ 
 +На загрузочный раздел будут скопированы файлы, необходимые для загрузки WinPE. В образ «boot.wim» будут помещены файлы из папки «Menu»
 +  * Windows\System32\Winpeshl.ini 
 +  * Windows\System32\Winpeshl.vbs 
 +В файле «Winpeshl.ini» указана информация ​о запускаемом файле ​вместо стандартной оболочки. Файл «Winpeshl.vbs» ​отвечает за поиск и запуск файла «Menu.js»,​ который ​находится на основном разделе. 
 +==== Результат записи установочного образа ​==== 
 +Скрипт выполнит все действия,​ как и для [[#​результат_подготовки_загрузочного_носителя_winpe|подготовки ​загрузочного носителя WinPE]]. А затем ​скопирует на основной раздел NTFS файлы, необходимые для запуска штатного установщика Windows и пропишет необходимые настройки для автоматического запуска «setup.exe» скриптом «Menu.js» при загрузке WinPE.\\ 
 +Если в WinPE закрыть штатный ​установщик Windows, то можно использовать меню скрипта. Автоматический ​запуск установщика Windows при необходимости можно отключить. 
 + 
 + 
 +===== Возможности ​скрипта тиражирования ​«Menu.js» ===== 
 +<wrap em>​Действия по снятию и развертыванию системы необходимо выполнять в WinPE</​wrap>​\\ 
 +\\ 
 +Общие возможности скрипта:
   * Снятие образа системного тома - автоматическое создание образа при выборе пункта   * Снятие образа системного тома - автоматическое создание образа при выборе пункта
   * Развертывание образа - возможность выбора WIM файла образа,​ а затем индекса образа   * Развертывание образа - возможность выбора WIM файла образа,​ а затем индекса образа
-  * Выбор целевого диска, если в системе более одного диска +  * Подключение \ отключение сетевого диска 
-  * Установка необходимых драйверов для текущей системы в среду ​WinPE на основании подготовленной базы скриптом для работы с [[+tab|Драйверы|драйверами]]+  * Экспорт драйверов развернутой системы 
 +  * Импорт необходимых драйверов в развернутую систему на основании подготовленной базы скриптом для работы с [[#​драйверы|драйверами]] 
 +  * Установка необходимых драйверов в среду WinPE на основании подготовленной базы скриптом для работы с [[#​драйверы|драйверами]] 
 +  * Автоматическое выполнение любой функции скрипта тиражирования до запуска меню скрипта 
 +==== Создание образа ==== 
 +При выборе пункта меню создания образа скрипт снимет образ первого найденного тома с системой. Образ будет сохранен в папке «Images» рабочего каталога. Название файла образа будет сформировано автоматически с добавлением даты и времени. 
 +==== Развертывание образа ==== 
 +Начальная директория выбора файла образа – папка «Images» рабочего каталога. Перед развертыванием образа ​диск ​будет очищен и отформатирован. По умолчанию выполняется быстрое форматированиедля выполнения полного форматирования необходимо ​создать файл «Config.ini» в рабочем каталоге,​ а в нем создать секцию «Config» с ключом «FullFormat»,​ значение которого будет «1». Пример:​ 
 +<​code>​ 
 +[Config] 
 +FullFormat = 1 
 +</​code>​ 
 +==== Подключение / отключение сетевого диска ==== 
 +Для подключения сетевого диска необходимо указать параметры подключения в файле «Config.ini»,​ который должен находиться в каталоге скрипта. При подключении сетевого диска рабочий каталог будет автоматически изменен на подключенную сетевую папку. При отключении сетевого диска ​рабочий каталог будет автоматически изменен на каталог расположения скрипта. Пример указания параметров подключения:​ 
 +<​code>​ 
 +[MapNetDrive] 
 +LanPath = \\PCName\d ; (сетевая папка) 
 +User = UserName ; (имя пользователя для подключения к папке) 
 +Password = Password ; (пароль для подключения к папке) 
 +</​code>​ 
 +==== Автоматическое выполнение команд до отображения меню ==== 
 +<wrap em>​Чтобы избежать случайного удаления данных автоматическое выполнение команд производится только в WinPE</​wrap>​\\ 
 +\\ 
 +Любую функцию скрипта «Menu.js» можно выполнить автоматически при запуске скрипта,​ так же можно выполнить любую команду JScript. Для автоматического выполнения функции или команды необходимо их прописать в файл «AutoRun.txt»,​ который должен находиться в рабочем каталоге. __**Файл «AutoRun.txt» необходимо сохранить в кодировке «ANSI», если файл будет сохранен в кодировке «UTF-8», то первая команда должна находится на второй строке**__. Для включения режима автоматического выполнения необходимо создать файл «Config.ini» в рабочем каталоге,​ а в нем создать секцию «Config» с ключом «AutoRun»,​ значение которого будет «1». При изменении значения на «0» автоматическое выполнение будет отключено. Пример:​ 
 +<​code>​ 
 +[Config] 
 +AutoRun = 1 
 +</​code>​ 
 +Команды будут выполнены до отображения основного меню. Выполнение команд будет построчным,​ поэтому многострочные конструкции не будут работать.\\ 
 +\\ 
 +Всё, что находится за двойной косой чертой будет проигнорировано 
 +<​code>//​ Текст, который будет проигнорирован</​code>​ 
 +Пример файла «AutoRun.txt» в формате «ANSI» и пример файла «Config.ini» находятся в папке «Menu» 
 +==== Запуск выполнения команд ==== 
 +<wrap em>В пути к имени файла все косые черты должны быть задвоенными.</​wrap>​\\ 
 +\\ 
 +Если [[#​автоматическое_выполнение_команд_до_отображения_меню|настроено выполнение]] функции «AutoRun»,​ то функция выполняется однократно. Но можно запустить ее повторное выполнение.\\ 
 +\\ 
 +AutoRun([File],​ [ShowAllErrors],​ [ShowErr]) 
 +  * File – относительный путь к файлу с перечнем команд. По умолчанию – «AutoRun.txt» 
 +  * ShowAllErrors – если при ​выполнении ​команд, указанных в текстовом файле, ​будут ошибки,​ то после выполнения всех команд скрипт будет остановлен для отображения ошибок. Допустимые значения:​ 
 +    * 0 - не отображать ошибки 
 +    * 1 - отображать ошибки (значение по умолчанию) 
 +  * ShowErr - определяет требуется ли отображение ошибок с остановкой действия во время исполнения. Допустимые значения:​ 
 +    * 0 - не требуется 
 +    * 1 - требуется (значение по умолчанию) 
 +Пример:​ 
 +<​code>​ 
 +AutoRun("​Run.txt"​) //​Выполнение команд из файла «Run.txt»,​ который находится в рабочем каталоге 
 +</​code>​ 
 +==== Подключение сетевого диска ==== 
 +Автоматическое подключение сетевого диска до появления основного меню.\\ 
 +MapNetDrive([Section],​ [ShowErr]) 
 +  * Section – имя секции в файле «Config.ini» с настройками для подключения. По умолчанию – «MapNetDrive» 
 +  * ShowErr - определяет требуется ли отображение ошибок с остановкой действия во время исполнения. Допустимые значения:​ 
 +    * 0 - не требуется 
 +    * 1 - требуется (значение по умолчанию) 
 +Настройки подключения будут использоваться те же, что и при [[#подключение_отключение_сетевого_диска|ручном подключении]]. 
 +<​code>​ 
 +MapNetDrive() //​Подключение сетевого диска с получением настроек подключения из секции «MapNetDrive» с остановкой при наличии ошибок 
 +</​code>​ 
 +==== Создание образа системного тома ==== 
 +Автоматическое создание образа системного тома до появления основного меню.\\ 
 +CaptureSystemVolume([Confirm],​ [ShowMsg], [ShowErr]) 
 +  * Confirm – определяет требуется ли подтверждение для выполнения действия 
 +    * 0 – не требуется 
 +    * 1 – требуется (значение по умолчанию) 
 +  * ShowMsg – определяет требуется ли отображать уведомления о завершении действия с остановкой скрипта 
 +    * 0 – не требуется 
 +    * 1 – требуется (значение по умолчанию) 
 +  * ShowErr - определяет требуется ли отображение ошибок с остановкой действия во время исполнения. Допустимые значения:​ 
 +    * 0 - не требуется 
 +    * 1 - требуется (значение по умолчанию) 
 +Примеры:​ 
 +<​code>​ 
 +CaptureSystemVolume() //​Создание образа с запросом подтверждения на создание образа и с остановкой для демонстрации результатов или отображения ошибок. 
 +CaptureSystemVolume(0) //Создание образа без запроса на подтверждение создания образа. 
 +CaptureSystemVolume(0,​ 0, 0) //​Создание образа без остановок.  
 +</​code>​ 
 +==== Развертывание образа системного тома ==== 
 +Автоматическое развертывание образа системного тома до появления основного меню.\\ 
 +\\ 
 +<wrap em>В пути к имени файла все косые черты должны быть задвоенными.</​wrap>​\\ 
 +\\ 
 +DeployImage([ImageFile],​ [ImageIndex],​ [DiskNum], [Confirm], [ShowMsg], [ShowErr]) 
 +  * ImageFile – путь к WIM-файлу относительно рабочего каталога. (строковое значение) 
 +  * ImageIndex – индекс образа в указанном WIM-файле. (положительное целое число) 
 +  * DiskNum – номер ​диска, на который будет развернут образ (положительное целое число) 
 +  * Confirm – определяет требуется ли подтверждение для выполнения действия 
 +    * 0 – не требуется 
 +    * 1 – требуется (значение по умолчанию) 
 +  * ShowMsg – определяет требуется ли отображать уведомления о завершении действия с остановкой скрипта 
 +    * 0 – не требуется 
 +    * 1 – требуется (значение по умолчанию) 
 +  * ShowErr - определяет требуется ли отображение ошибок с остановкой действия во время исполнения. Допустимые значения:​ 
 +    * 0 - не требуется 
 +    * 1 - требуется (значение по умолчанию) 
 +Примеры:​ 
 +<​code>​ 
 +DeployImage("​Images\\Image.wim",​ 2, 1) //​Развертывание образа из файла «Image.wim» с индексом «2» на диск «1» с запросом на подтверждение развертывания и остановкой для отображения ошибок и сообщений. 
 +DeployImage("​Images\\Image.wim",​ 2, 1, 0) //​Развертывание образа из файла «Image.wim» с индексом «2» на диск «1» без запроса на подтверждение. 
 +DeployImage("​Images\\Image.wim",​ 2, 1, 0, 0, 0) //​Развертывание образа из файла «Image.wim» с индексом «2» на диск «1» без запроса на подтверждение,​ и без остановки для отображение сообщений и ошибок. 
 +</​code>​ 
 +==== Экспорт драйверов из развернутой ОС ==== 
 +Автоматический экспорт драйверов из развернутой ОС до появления основного меню.\\ 
 +ExportDrivers([Source],​ [Destination],​ [Confirm], [ShowMsg], [ShowErr]) 
 +  * Source – полный путь к образу,​ из которого будут извлечены драйверы. По умолчанию – первый найденный том с установленной ​системой. 
 +  * Destination – полный путь или путь относительно рабочего каталога,​ куда будут сохранены драйверы. По умолчанию «Drivers\(YYYY.MM.DD_HH.MM.SS)». Если указанного каталога не существует,​ то он будет создан 
 +  * Confirm – определяет требуется ли подтверждение для выполнения действия 
 +    * 0 – не требуется 
 +    * 1 – требуется (значение по умолчанию) 
 +  * ShowMsg – определяет требуется ли отображать уведомления о завершении действия с остановкой ​скрипта 
 +    * 0 – не требуется 
 +    * 1 – требуется (значение по умолчанию) 
 +  * ShowErr - определяет требуется ли отображение ошибок с остановкой действия во время исполнения. Допустимые значения:​ 
 +    * 0 - не требуется 
 +    * 1 - требуется (значение по умолчанию) 
 +Пример:​ 
 +<​code>​ 
 +ExportDrivers(0,​ "​SystemDrivers",​ 0) //​Экспорт драйверов из первого найденного тома с установленной системой в каталог "​SystemDrivers",​ который будет создан в рабочем каталоге. Запрос на подтверждение экспорта отключен. 
 +</​code>​ 
 +==== Импорт драйверов в развернутую ОС ==== 
 +Автоматический импорт драйверов в развернутую ОС до появления основного меню.\\ 
 +\\ 
 +<wrap em>В указанном пути все косые черты должны быть задвоенными.</​wrap>​\\ 
 +\\ 
 +ImportDrivers([Source], ​[Destination],​ [Confirm], [ShowMsg], [ShowErr]) 
 +  * Source – путь к папке с драйверами,​ inf-файлу или базе данных со сведениями о драйверах. При указании папки будут импортированы драйверы из всех подпапок. Если путь не будет указан,​ то будет предоставлен выбор папки или файла. При указании пути к базе, будут импортированы только подходящие драйверы для развернутой системы. [[#​драйверы|Как создать базу данных описано в разделе ​Драйверы]]. 
 +  * Destination – путь к развернутой системе. По умолчанию – первый найденный том с установленной системой. 
 +  * Confirm – определяет требуется ли подтверждение для выполнения действия 
 +    * 0 – не требуется 
 +    * 1 – требуется (значение по умолчанию) 
 +  * ShowMsg – определяет требуется ли отображать уведомления о завершении действия с остановкой скрипта 
 +    * 0 – не требуется 
 +    * 1 – требуется (значение по умолчанию) 
 +  * ShowErr - определяет требуется ли отображение ошибок с остановкой действия во время исполнения. Допустимые значения:​ 
 +    * 0 - не требуется 
 +    * 1 - требуется (значение по умолчанию) 
 +Примеры:​ 
 +<​code>​ 
 +ImportDrivers("​Drivers",​ 0, 0) //​Импорт всех драйверов без подтверждения из папки "​Drivers"​ в развернутую систему,​ которая будет найдена автоматически. 
 +ImportDrivers("​Drivers\\Base.db",​ 0, 0) //​Импорт подходящих драйверов в развернутую систему,​ которая будет найдена автоматически. 
 +</​code>​ 
 +==== Установка драйверов в среду WinPE ==== 
 +Автоматическая установка драйверов в среду WinPE до появления основного меню.\\ 
 +InstallDriverWinPE([Source], [Confirm], [ShowMsg], [ShowErr]) 
 +  * Source – путь к папке с драйверами,​ inf-файлу или базе данных со сведениями о драйверах. При указании папки будут установлены драйверы из всех подпапок. Если путь не будет указан,​ то будет предоставлен выбор папки или файла. При указании пути к базе, будут установлены только подходящие драйверы для текущей системы. [[#​драйверы|Как создать базу данных описано в разделе Драйверы]]. 
 +  * Confirm – определяет требуется ли подтверждение для выполнения действия 
 +    * 0 – не требуется 
 +    * 1 – требуется (значение по умолчанию) 
 +  * ShowMsg – определяет требуется ли отображать уведомления о завершении действия с остановкой скрипта 
 +    * 0 – не требуется 
 +    * 1 – требуется (значение по умолчанию) 
 +  * ShowErr - определяет требуется ли отображение ошибок с остановкой действия во время исполнения. Допустимые значения:​ 
 +    * 0 - не требуется 
 +    * 1 - требуется (значение по умолчанию) 
 +Пример:​ 
 +<​code>​ 
 +InstallDriverWinPE("​Drivers\\Base.db",​ 0, 0, 0) //​Установка подходящих драйверов в текущую среду с отключением:​ подтверждения на установку,​ сообщения о завершении действия,​ отображения ошибок. 
 +</​code>​ 
 +==== Возможные проблемы и решения ==== 
 +=== Система не загружается после развертывания образа === 
 +Для загрузки в UEFI режиме требуется инициализация загрузочного раздела. Инициализацию можно выполнить с помощью различных команд. Для решения проблемы попробуйте использовать разные команды инициализации загрузочного раздела. 
 +  * bcdboot W:\Windows /s S: /f ALL – используется в скрипте 
 +  * bcdboot W:\Windows /s S: 
 +  * bcdboot W:​\Windows 
 +W – буква тома, куда была развернута система\\ 
 +S – буква загрузочного раздела
  
 ====== Драйверы ====== ====== Драйверы ======
 Скрипт позволяет:​ Скрипт позволяет:​
-  * Собрать сведения о драйверах из указанной папки в единую базу данных с указанием номера очередности +  ​* Экспортировать драйверы из текущей системы 
-  ​* ​Автоматически установить необходимые драйверы, на основании сведений из подготовленной базы, по очереди в соответствии с номерами очередности+  * Импорт всех драйверов из указанной папки в хранилище текущей системы 
 +  * Установка подходящих драйверов в текущую систему 
 +  ​* Собрать сведения о драйверах из указанной папки в единую базу данных 
 +  * Отображение всех драйверов в базе 
 +  * Отображение только драйверов из базы, которые подходят для текущей системы 
 +  * Автоматическая установка необходимых драйверов, на основании сведений базы с соблюдением ​очередности 
 +===== Автоматическая установка драйверов ===== 
 +При автоматической ​установке драйверов,​ с помощью скрипта, будут установлены только те драйверы,​ которые подходят для текущей системы. Определение ​необходимости установки драйвера производится по «ID» оборудования. Установка ​драйверов будет производится по очереди в соответствии с номерами очередностикоторые будут присвоены inf-файлам. 
 +==== Сбор сведений о драйверах ==== 
 +Перед использованием автоматического поиска необходимо собрать ​сведения об используемом наборе ​драйверов. 
 +  - Поместите все драйверы,​ которые хотите использовать для установки,​ в единую папку 
 +  - Запустите скрипт и выберите пункт, который отвечает за сбор сведений о драйверах 
 +  - Укажите папку, в которой размещены драйверы. 
 +Скрипт создаст базу данных в корне указанного каталога. В базе будут сохранены сведения о драйверах и __**относительные**__ пути к inf-файлам драйверов. Каждому inf-файлу будет присвоен номер очередностикоторый будет определять ​очередность установки драйвера. Номера ​очередности присваиваются ​в соответствии с очередностью результатов поиска inf-файлов. Т.е. __**порядок очередности драйверов будет влиять на порядок установки драйверов**__. 
 +==== Установка драйверов ==== 
 +Выполнить установку драйверов ​можно выбрав соответствующий пункт меню скрипта и указав базу данных,​ которая была создана при сборе сведений о драйверах.\\ 
 +\\ 
 +Для автоматической установки необходимо запустить скрипт и в качестве аргумента указать полный путь к созданной базе данных. Пример: 
 +<​code>​ 
 +powershell -command "​Start-Process powershell.exe -ArgumentList '​-ExecutionPolicy Unrestricted -Command C:​\Script\16.Драйверы\Drivers.ps1 C:​\Script\16.Драйверы\Drivers\Base.db'"​ 
 +</​code>​ 
 ====== Tools ====== ====== Tools ======
 В папке "​Tools"​ находятся модули (PSM1) и утилиты необходимые для работы скриптов "​PS1"​. А также некоторые вспомогательные скрипты. В папке "​Tools"​ находятся модули (PSM1) и утилиты необходимые для работы скриптов "​PS1"​. А также некоторые вспомогательные скрипты.
 ===== LGPO ===== ===== LGPO =====
-В данной папке находится сама утилита "​LGPO.exe"​ и скрипт для автоматизации экспорта и импорта настроек локальной групповой политики +В данной папке находится сама утилита "​LGPO.exe"​ и скрипт для автоматизации экспорта и импорта настроек локальной групповой политики. Подробности о работе с локальной групповой политикой можно [[+tab|локальная_групповая_политика|прочитать здесь]].
 ===== Ручной вызов синего экрана ===== ===== Ручной вызов синего экрана =====
-Скрипт для включения / отключения ручного вызова синего экрана+Для включения / отключения ​[[+tab|синий_экран_смерти#​проверка_поведения_системы_при_синем_экране|ручного вызова синего экрана]] скрипт меняет значения в реестре для обоих типов клавиатур
 ===== Брендирование ===== ===== Брендирование =====
-Добавление сведений о производителе и логотипа в окно сведений о системе+С помощью скрипта можно добавлять группу заранее указанных параметров,​ которые  
 +[[+tab|oeminformation|указаны здесь]].\\ 
 +В файле «Config\Config.ini» создайте секцию с любым названием и введите необходимые данные,​ как в примере секции «Кварта Технологии».\\ 
 +\\ 
 +Скопируйте логотип в формате «bmp» в папку «Config\Logo».\\ 
 +\\ 
 +Запустите скрипт и выберите пункт внесения ​сведений о производителе, если в конфигурационном файле будет более одной секции,​ то скрипт предложит выбрать из какой секции будут добавлены данные. 
 +===== Контроль времени выключения пробной версии ===== 
 +Пробная версия Windows выключается каждый час. Скрипт уведомляет о выключении системы за пять минут. 
 +===== Политика выполнения сценариев PowerShell ===== 
 +Скрипт упрощает настройку политики выполнения сценариев PowerShell. 
 +===== Установка универсальных приложений ===== 
 +  - Загрузите компоненты универсального ​приложения,​ [[+tab|uwpinstall_win10_iot_enterprise|как описано здесь]] 
 +  - Скопируйте ​все необходимые ​компоненты приложения в папку 
 +  - При необходимости установить более одного приложения создайте папку в которой будут находится папки с компонентами приложений 
 +  - Запустите скрипт установки универсальных приложений и укажите папку с компонентами универсального приложения 
 +Скрипт установит компоненты универсальных приложений,​ которые будут находится в указанном каталоге и всех его подкаталогах 
 + 
 + 
 +===== Освобождение места ===== 
 +Скрипт помогает использовать возможности освобождения места [[+tab|optimize-space|перечисленные здесь]]\\ 
 +Удаление:​ 
 +  * Пакетов приложений 
 +  * Возможностей системы 
 +Сжатие:​ 
 +  * Перевод ОС в режим сжатия 
 +  * Сжатие dll файлов на системном томе 
 +===== PSM1 ===== 
 +Модули,​ используемые в наборе скриптов 
 +==== Модуль "​FileAndDir"​ ==== 
 +Функция "​Open-File"​ служит для диалога выбора файлов. Вы можете изменить способ в консоли или в окне с помощью параметра "​D"​. Без данного параметра выбор файла будет в консоли,​ а с параметров в стандартной форме "​OpenFileDialog"​ 
 +====== Многоязычность ====== 
 +В скриптах две независимых системы поддержки множества языков 
 +  * Для скриптов PowerShell - для настройки Windows 
 +  * Для скрипта JScript - скрипт тиражирования запускаемый в WinPE 
 +===== Скрипты настройки Windows ===== 
 +В самих скриптах указаны ключи, по которым берутся значения из json файлов,​ которые находятся в папке "​Tools\PSM1\Lang"​. Скрипт берет значение из файла, название которого соответствует текущему значению полученному после выполнения команды 
 +<​code>​ 
 +(Get-UICulture).Name 
 +</​code>​ 
 +Если указанного ключа в текущем файле нет, то поиск ключа будет выполнен в файле "​en-us"​. Если ключ не найден в файле "​en-us",​ то вместо значения будет подставлен ключ. 
 +===== Скрипт тиражирования ===== 
 +В скрипте указаны ключи, по которым берутся значения из ini файлов,​ которые находятся в папке «15.Deployment\01.Create bootable media\Menu\Lang». Скрипт берет значение из файла, название которого соответствует текущему значению полученному из реестра в WinPE. Название секции тоже должно соответствовать значению получаемому нижеуказанным способом 
 +<​code>​ 
 +"​HKEY_CURRENT_USER\Control Panel\International\LocaleName"​ 
 +</​code>​ 
 +Если указанного ключа в текущем файле нет, то поиск ключа будет выполнен в файле «en-us». Если ключ не найден в файле «en-us», то вместо значения будет подставлен ключ.
автоматизация_win_10_iot_enterprise.1621245412.txt.gz · Последние изменения: 2021/05/17 12:56 — vladimir