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

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


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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
автоматизация_win_10_iot_enterprise [2021/11/23 17:27]
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%>
 При запуске скрипта отдельно у большинства скриптов возможности будут шире чем при работе в группе. При запуске скрипта отдельно у большинства скриптов возможности будут шире чем при работе в группе.
Строка 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 на основании подготовленной базы скриптом для работы с [[автоматизация_win_10_iot_enterprise#​драйверы|драйверами]]+  * Экспорт драйверов развернутой ​системы 
 +  * Импорт необходимых драйверов в развернутую систему на основании подготовленной базы ​скриптом для работы с [[#​драйверы|драйверами]] 
 +  * Установка необходимых драйверов в среду 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 файлов на системном томе   * Сжатие 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.1637677654.txt.gz · Последние изменения: 2021/11/23 17:27 — vladimir