Дополнение B. Перенос загрузочного диска Windows
Содержание
Диски вычислительных систем давно стали рассматриваться в качестве расходного материала. Они старятся и имеют тенденцию выходить из строя. Для предотвращения этого существуют технологии дублирования (зеркалирования) и резервного копирования. Кроме того, присутствующая практически во всех современных дисках технология S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) позволяет отслеживать жизнеспособность диска. К сожалению, сами операционные системы, как правило не обладают инструментарием выдачи сообщений о критическом состоянии S.M.A.R.T., однако на рынке имеется масса средств, способствующая решению данной задачи (например, бесплатный CrystalDiskInfo, подробнее о сведениях S.M.A.R.T.). Помимо этого также существуют интегрированные инструменты разбивки, диагностики, шифрования, восстановления, клонирования, форматирования дисков (см., например обзор). К сожалению, интегрированные инструменты не всегда приводят к полному успеху, а потому неплохо понимать что стоит за их магией и как осуществлять её "своими" руками при помощи более простых средств, осуществляющих магические действия пошагово, то есть предоставляя возможности исправления ошибок сразу после их возникновения, причём желательно чтобы эти средства были от самого производителя ОС. Кроме того, понимание всех этапов данного процесса будет полезным и при возникновении прочих проблем с загрузочным диском. В данном Дополнении мы ограничимся ОС Windows. Итак, что нам делать, когда S.M.A.R.T. начал сообщать нам о плохом состоянии носителя?
Windows PE (WinPE, Windows Preinstallation Environment) — это небольшая операционная система, применяемая для установки, развёртывания и восстановления редакций Windows для настольных ПК, Windows Server и прочих операционных систем Windows. Из Windows PE вы можете:
-
Настраивать свой жёсткий диск перед установкой Windows.
-
Устанавливать Windows из сетевой среды или с локального диска при помощи приложений или сценариев.
-
Фиксировать и применять образы Windows.
-
Изменять саму операционную систему до её запуска.
-
Настраивать инструменты автоматического восстановления.
-
Восстанавливать данные на потерявших возможность загрузки устройствах.
-
Добавлять свою собственную оболочку или графический интерфейс для решения подобных задач.
WinPE — это дополнение к комплекту экспертизы и развёртывания Windows (ADK, Assessment and Deployment Kit). До Windows 10 версии 1809 WinPE была включена в ADK и не являлась надстройкой. {Подробнее: Обзор средств предустановки Windows (WinPE), Microsoft.}
Комплект экспертизы и развёртывания Windows (Windows ADK) и надстройка Windows PE содержат инструменты, необходимые для настройки образов Windows как для крупномасштабного развёртывания, так и для проверки качества и производительности вашей системы, добавленных в неё компонентов и запущенных в неё приложений. Windows ADK содержит:
-
Набор средств экспертизы Windows и инструментарий сопоставления производительности Windows для оценки качества и производительности систем или компонентов.
-
Инструментарий Анализа совместимости администратора и стандартного пользователя (Compatibility Administrator and the Standard User Analyzer).
-
Средства развёртывания, такие как Windows PE, Sysprep и прочие инструменты, которые вы можете применять для персонализации и развёртывания образов Windows.
-
Среду предустановки Windows (Windows PE) в виде обособленной загрузки из комплекта экспертизы и развёртывания (ADK). Для добавить среды предустановки Windows к установке ADK, после установки ADK загрузите и установите надстройку среды предустановки Windows. 32-разрядные версии Windows PE больше не включаются в надстройки Windows PE, начиная с ADK для Windows 11 версии 22H2. Последняя поддерживаемая версия 32-разрядной среды предустановки Windows доступна в надстройке среды предустановки Windows для Windows 10 версии 2004. {Подробнее: Скачайте и установите Windows ADK, Microsoft.}
CopyPE
Copype
создаёт рабочий каталог, который содержит файлы Windows Preinstallation Environment (Windows PE). Вы пользуетесь этими файлами для персонализации образов и (совместно со сценариемMakewinpemedia
) для создания загружаемого носителя. {Подробнее: Параметры командной строки Copype, Microsoft.}Makewinpemedia
Для создания загружаемого носителя Windows Preinstallation Environment (Windows PE), вы можете воспользоваться сценарием
Makewinpemedia
{Подробнее: Параметры командной строки Makewinpemedia, Microsoft.}Создание загружаемого носителя Windows PE
Запустите Deployment and Imaging Tools Environment (из появившейся в меню Пуск после установки Windows ADK закладки Windows Kits или через набор этого словосочетания в приглашении Поиска).
Выполните
copype
для создания рабочего каталога файлов WindowsPE и копирования в него необходимых системных файлов вашей архитектуры, например:copype amd64 E:\WinPE_amd64
Выполните персонализацию своего образа WindowsPE (в случае такой необходимости). Для этого:
-
Когда ваша конфигурация оборудования обладает некими специфическими особенностями, при запуске из Window PE Windows Setup вы можете сталкиваться с ошибкой. В этом случае вам может понадобиться к уже имеющемуся набору компонентов Window PE добавить дополнительные из имеющихся для вашей архитектуры {Подробнее: Возможные компоненты Window PE, Microsoft.}
-
Добавьте обновление {Подробнее: Монтирование и персонализация Window PE, Microsoft.}
-
Добавьте поддержку драйверов видео и сетевых устройств {Подробнее: Добавление драйверов Window PE, Microsoft.}
-
Добавьте поддержку сценариев PowerShell {Подробнее: Добавление к Window PE поддержки PowerShell, Microsoft.}
-
Для высокой производительности настройте схему электропитания {Подробнее: Монтирование и персональные настройки высокой производительности Window PE, Microsoft.}
-
Оптимизируйте WindowsPE для устройств и хранилищ с ограниченной памятью, а также добавления или изменения драйверов {Подробнее: Оптимизация образа Window PE, Microsoft.}
Перед запуском
Makewinpemedia
вы можете отформатировать свой создаваемый носитель. СценарийMakewinpemedia
отформатирует ваше устройство под FAT32. Если у вас есть необходимость хранения в WindowsPE файлов с размером более 4ГБ, вы можете создать устройство USB со множеством разделов для наличия дополнительного отформатированного под NTFS раздела {Подробнее: Оптимизация образа Window PE, Microsoft.}Для форматирования и установки Windows PE вставленного в вашу рабочую машину создаваемого загрузочного носителя исполните сценарий
Makewinpemedia
с параметром/UFD
, например:MakeWinPEMedia /UFD E:\WinPE_amd64 P:
Предостережение Этот сценарий отформатирует указанное устройство, в нашем случае,
Р:
!Вы можете создать загружаемый образ ISO при помощи параметра
/ISO
, например:MakeWinPEMedia /ISO E:\WinPE_amd64 E:\WinPE_amd64\WinPE_amd64.iso
Для прожига DVD/ CD в Windows вы можете кликнуть в Проводнике Windows правой кнопкой и выбрать Burn disc image > Burn с последующими приглашениями на ввод.
Для установки WindowsPE в загружаемом образе виртуальной машины через файл VHD:
-
При помощи инструмента
diskpart
создайте виртуальное дисковое устройство (.vhdx
) и назначьте ему букву, в нашем случае этоV
:diskpart create vdisk file="E:\WinPE.vhdx" maximum=1000 attach vdisk create partition primary assign letter=V format fs=ntfs quick exit
-
Подготовьте это устройство с применением
MakeWinPEMedia
:MakeWinPEMedia /UFD E:\WinPE_amd64 V:
Отсоедините это устройство, опять воспользовавшись
diskpart
:diskpart select vdisk file="E:\WinPE.vhdx" detach vdisk exit
Загрузитесь с созданного вами носителя в требующей этого системе.
{Подробнее: Создание загружаемого носителя Window PE, Microsoft.}
Инструмент командной строки Обслуживания и сопровождения развёртываемого образа (Deployment Image Servicing and Management,
DISM.exe
) можно применять для обслуживания и поддержки образов Windows, причём включая те, которые применяются для Windows PE, Windows RE (Windows Recovery Environment) и Windows Setup. DISM может применяться для обслуживания образа Windows (Windows IMage,.wim
) или виртуального жёсткого диска (virtual hard disk.vhd
либо.vhdx
). DISM поставляется встроенным в Windows и доступен для запуска из командной строки или PowerShell. Дополнительно с применением DISM в PowerShell можно ознакомиться при помощи Deployment Imaging Servicing Management (DISM) Cmdlets in Windows PowerShell.DISM может применяться для монтирования и обслуживания образов из файла
.wim
,.ffu
или.vhdx
. Тем не менее, мы не можем применять образы, которые предшествовали нашей установленной версии DISM. Для полного технического описания WIM отсылаем вас к Windows Imaging File Format (WIM) white paper. Полный список поддерживаемых DISM платформ приводится в DISM Supported Platforms. Подробнее в DISM Overview.WinPE поставляется в виде файла
.wim
. У вас имеется возможность монтирования и приспосабливая под свои нужды WinPE образ следуя тем же процессом, что и любой иной образ Windows. Помимо общей для образов Windows и WinPE персонализации, такой как драйверы и пакеты, WinPE к тому же обладает некими собственными особенностями.Распространённые возможности персонализации:
-
Драйверы устройств (файлы .ini). Вы можете персонально настраивать драйверы устройств, например, драйверы, которые поддерживают сетевые карты и устройства хранения.
-
Пакеты (файлы .cab, также именуемые необязательными компонентами WinPE). Добавление языков, последних исправлений, либо поддержка такой функциональности как PowerShell и HTML Application Language (HTA).
-
Добавление файлов и папок. Всё это может быть непосредственно в образ WinPE.
-
DISM: применение более новой версии. Когда некая новая версия Windows требует функциональных возможностей от самой последней версии DISM, у вас имеется возможность добавлять DISM непосредственно в WinPE.
-
Сценарии запуска. Примеры содержат настройку сетевых подключений или добавление персональных приложений, таких как программное обеспечение диагностики.
-
Прикладные приложения. Обращаем внимание, что WinPE поддерживает лишь наследуемые прикладные приложения.
-
Временное хранилище (Рабочее пространство). Если вашему приложению требуется временное файловое хранилище, у вас имеется возможность резервирования дополнительного пространства памяти в Оперативной памяти.
Для монтирования своего образа WinPE во временное местоположение в своём техническом устройстве из Среды инструментов развёртывания и подготовки образов (Deployment and Imaging Tools Environment):
> Dism /Mount-Image /ImageFile:"E:\WinPE_amd64\media\sources\boot.wim" /index:1 /MountDir:"E:\WinPE_amd64\mount"
Для добавления драйверов устройств в свой образ WinPE применяйте
DISM /add-driver
. В одной команде вы можете добавлять множество драйверов, но это может стать источником проблем.При помощи
DISM /add-package
вы можете добавлять в свой образ необязательные компоненты, пакеты и поддержку языков. Например, для поддержки PowerShell, после выполнения монтирования (см. выше), исполните из Среды инструментов развёртывания и подготовки образов (Deployment and Imaging Tools Environment) следующее:> Dism /Add-Package /Image:"E:\WinPE_amd64\mount" /PackagePath:"E:\bin\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab" > Dism /Add-Package /Image:"E:\WinPE_amd64\mount" /PackagePath:"E:\bin\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\ru-ru\WinPE-WMI_ru-ru.cab" > Dism /Add-Package /Image:"E:\WinPE_amd64\mount" /PackagePath:"E:\bin\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-NetFx.cab" > Dism /Add-Package /Image:"E:\WinPE_amd64\mount" /PackagePath:"E:\bin\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\ru-ru\WinPE-NetFx_ru-ru.cab" > Dism /Add-Package /Image:"E:\WinPE_amd64\mount" /PackagePath:"E:\bin\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-Scripting.cab" > Dism /Add-Package /Image:"E:\WinPE_amd64\mount" /PackagePath:"E:\bin\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\ru-ru\WinPE-Scripting_ru-ru.cab" > Dism /Add-Package /Image:"E:\WinPE_amd64\mount" /PackagePath:"E:\bin\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-PowerShell.cab" > Dism /Add-Package /Image:"E:\WinPE_amd64\mount" /PackagePath:"E:\bin\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\ru-ru\WinPE-PowerShell_ru-ru.cab" > Dism /Unmount-Image /MountDir:"E:\WinPE_amd64\mount" /commit
Последняя команда завершает монтирование изменяемого образа и фиксирует в нём изменения. Подробнее о подготовке WinPE при помощи DISM в WinPE: Mount and Customize, Microsoft.
Если вы загрузились в необходимом устройстве, обобщите её образ для возможности развёртывания в прочих устройствах {Подробнее: Sysprep (Generalize) a Windows installation, Microsoft.} В противном случае в новом устройстве ваш образ может не обладать необходимой для него поддержкой устройств.
Загрузите своё переносимое устройство при помощи подготовленного ранее загружаемого носителя Windows PE.
Оптимизируйте образ (не обязательно) для сокращения времени загрузки устройства после применения этого образа. Это в особенности полезно при создании образа, который будет применяться для развёртывания в большом числе машин, скажем, в сценарии сборки со склада.
DISM /image:C:\ /optimize-image /boot
Зафиксируйте необходимый раздел Windows, например:
Dism /Capture-Image /ImageFile:"E:\Images\MyBoot.wim" /CaptureDir:C:\ /Name:MyBoot
Здесь
E:
это устройство для переноса фиксируемого образа.При применении созданного вами ранее образа вам помогут приводимые ниже сценарии.
Вспомогательные сценарии
Перевод Примеров сценариев лабораторных занятий развёртывания, Microsoft
Скопируйте сценарии Лабораторного занятия в корень своего устройства Windows PE. Данный архив содержит следующие сценарии:
-
ApplyImage.bat
: Данный сценарий применят образ Windows на новом устройстве.Замечание При копировании и вставке приводимого ниже содержимого для создания необходимого файла .bat при обнаружении встроенного ПО вы можете столкнуться с ошибкой. Для успешного обнаружения встроенного ПО убедитесь что в начинающейся с
for /f "tokens=2* delims= " %%A
строке присутствует следующий за пробелом символ табуляции междуdelims=
и" %%A
.@echo Apply-Image.bat @echo Запускайте с эталонного устройства в среде WinPE. @echo. @echo Данный сценарий зачищает ваш первичный жёсткий диск и применяет новый образ. @echo. @echo Убедитесь что этот сценарий запускается из той папки, которая содержит все @echo сценарии поддержки @echo. @echo UPDATE (November 2017) @echo * Добавлена поддержка для развёртываний FFU. @echo. @echo UPDATE (JULY 2016): @echo * Данный сценарий останавливается сразу после применения необходимого образа. @echo Это предоставляет вам возможность добавления разрозненных пакетов подготовки (siloed provisioning packages, @echo SPP) @echo с тем, чтобы вы имели возможность их включения в свои инструменты восстановления. @echo. @echo Для завершения настроек инструментов восстановления воспользуйтесь @echo после завершения данного сценария. @echo. @echo * Данный сценарий теперь содержит поддержку переменных /EA variables для более быстрых @echo фиксации и восстановления образа. @echo. @echo * Данный сценарий теперь выполняет проверку того что вы загрузились из в Windows PE. @echo. @if not exist X:\Windows\System32 echo ERROR: Данный сценарий собран для запуска в Windows PE. @if not exist X:\Windows\System32 goto END @if %1.==. echo ERROR: Для выполнения этого сценария, добавьте путь к файлу образа Windows. @if %1.==. echo Example: ApplyImage D:\WindowsWithFrench.wim @if %1.==. goto END @echo ************************************************************************************************* @echo == Настраиваем схему электропитания с высокой производительностью для ускорения развёртывания == @call powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c @echo ************************************************************************************************* @echo Выполняем проверку типа развёртываемого образа @if "%~x1" == ".wim" (GOTO WIM) @if "%~x1" == ".ffu" (GOTO FFU) @echo ********************************************************************* @if not "%~x1" == ".ffu". if not "%~x1" == ".wim" echo Please use this script with a WIM or FFU image. @if not "%~x1" == ".ffu". if not "%~x1" == ".wim" GOTO END :WIM @echo Стартуем развёртывание WIM @echo ********************************************************************* @echo Выполняем проверку в каком режиме запускалось это устройство: в BIOS или в UEFI. wpeutil UpdateBootInfo for /f "tokens=2* delims= " %%A in ('reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareType') DO SET Firmware=%%B @echo Обратите внимание: delims отделяется символом TAB вслед за символом пробела. @if x%Firmware%==x echo ERROR: Не могу определить под каким встроенным ПО мы запущены. @if x%Firmware%==x echo Обычно помогает исправление: В приведённой выше команде: @if x%Firmware%==x echo for /f "tokens=2* delims= " @if x%Firmware%==x echo ...замените пробелы на символ TAB следующий за пробелом. @if x%Firmware%==x goto END @if %Firmware%==0x1 echo Данное устройство запущено в режиме BIOS. @if %Firmware%==0x2 echo Данное устройство запущено в режиме UEFI. @echo ********************************************************************* @echo Вы хотите создать раздел восстановления (Recovery)? @echo (Если вы намерены работать с FFU, и вам требуется @echo расширить свой раздел Windows после применения такого FFU, наберите N). @SET /P RECOVERY=(Y or N): @if %RECOVERY%.==y. set RECOVERY=Y @echo Форматирование вашего первичного диска... @if %Firmware%==0x1 echo ...с применением формата и разделов BIOS (MBR). @if %Firmware%==0x2 echo ...с применением формата и разделов UEFI (GPT). @echo ПРЕДОСТЕРЕЖЕНИЕ: все имеющиеся на этом диске данные будут УДАЛЕНЫ. @SET /P READY=Уничтожить все данные и продолжить? (Y or N): @if %READY%.==y. set READY=Y @if not %READY%.==Y. goto END @if %Firmware%.==0x1. if %RECOVERY%.==Y. diskpart /s CreatePartitions-BIOS.txt @if %Firmware%.==0x1. if not %RECOVERY%.==Y. diskpart /s CreatePartitions-BIOS-FFU.txt @if %Firmware%.==0x2. if %RECOVERY%.==Y. diskpart /s CreatePartitions-UEFI.txt @if %Firmware%.==0x2. if not %RECOVERY%.==Y. diskpart /s CreatePartitions-UEFI-FFU.txt @echo ********************************************************************* @echo == Применить к разделу Windows указанный образ == @SET /P COMPACTOS=Развёртывать как Compact OS? (Y or N): @if %COMPACTOS%.==y. set COMPACTOS=Y @echo Содержит ли данный образ Extended Attributes? @echo (Если вы не уверены, наберите N). @SET /P EA=(Y or N): @if %EA%.==y. set EA=Y @if %COMPACTOS%.==Y. if %EA%.==Y. dism /Apply-Image /ImageFile:%1 /Index:1 /ApplyDir:W:\ /Compact /EA @if not %COMPACTOS%.==Y. if %EA%.==Y. dism /Apply-Image /ImageFile:%1 /Index:1 /ApplyDir:W:\ /EA @if %COMPACTOS%.==Y. if not %EA%.==Y. dism /Apply-Image /ImageFile:%1 /Index:1 /ApplyDir:W:\ /Compact @if not %COMPACTOS%.==Y. if not %EA%.==Y. dism /Apply-Image /ImageFile:%1 /Index:1 /ApplyDir:W:\ @echo ********************************************************************* @echo == Копируем файлы запуска в раздел System == W:\Windows\System32\bcdboot W:\Windows /s S: @echo ********************************************************************* @echo Следующие шаги: @echo * Добавляем классические прикладные приложения Windows (не обязательно): @echo DISM /Apply-SiloedPackage /ImagePath:W:\ @echo /PackagePath:"D:\App1.spp" /PackagePath:"D:\App2.spp" ... @echo. @echo * Настраиваем раздел Recovery при помощи ApplyRecovery.bat @echo. @echo * Reboot: @echo exit @GOTO END :FFU @echo Запускаем развёртывание FFU @echo list disk > x:\listdisks.txt @echo exit >> x:\listdisks.txt @diskpart /s x:\listdisks.txt @del x:\listdisks.txt @echo Введите номер диска того устройства, в которое вы намерены развёртывать FFU (обычно 0). @SET /P DISKNUMBER=(Enter the Disk Number from above): @echo Это уничтожит все данные на диске %DISKNUMBER%. Продолжать? @SET /P ERASEALL=(Y or N): @if %ERASEALL%.==y. set ERASEALL=Y @if %ERASEALL%==Y DISM /apply-ffu /ImageFile=%1 /ApplyDrive:\\.\PhysicalDrive%DISKNUMBER% @if not %ERASEALL%==Y GOTO END @echo FFU применён. Вы хотите настроить раздел восстановления? @SET /P CONFIGRECOVERY=(Y or N): @if %CONFIGRECOVERY%.==y. SET CONFIGRECOVERY=Y @if %CONFIGRECOVERY%==Y ApplyRecovery.bat @if not %CONFIGRECOVERY%==Y GOTO END :END
-
Сценарий
ApplyImage.bat
полагается на приводимые ниже сценарииDiskPart
, которые обязаны присутствовать в той же папке. Для форматирования и настройки разделов жёсткого диска применяйте эти сценарии совместно сDiskPart
, включая инструментарий восстановления. Для установления соответствия вашему устройству, если это необходимо, отрегулируйте размеры разделов.CreatePartitions-UEFI.txt
создаёт разделы System, MSR, Windows и инструментов восстановления для устройств с UEFI.Данный сценарий временно присваивает такие буквы:
System=S
,Windows=W
, аRecovery=R
. РазделMSR
не получает буквенного обозначения. Значение буквыW
применяется во избежание потенциального конфликта букв. После перезапуска разделуWindows
присваивается букваC
, а прочие разделы не получают буквенного обозначения.Раздел
Recovery
обязан быть разделом после разделаWindows
для гарантии того, чтоwinre.wim
может отслеживаться в актуальном состоянии на протяжении жизни данного устройства.Приводимая ниже схема отображает получаемые в результате разделы:
rem == CreatePartitions-UEFI.txt == rem == Данные команды применяются с помощью DiskPart для rem создания четырёх разделов rem для устройства на основе UEFI/GPT. rem Если требуется, отрегулируйте размеры соответствующего раздела для rem заполнения вашего диска. == select disk 0 clean convert gpt rem == 1. Раздел System ========================= create partition efi size=100 rem ** Замечание: Для расширенного формата устройств 4Kn, rem замените это значение на размер = 260 ** format quick fs=fat32 label="System" assign letter="S" rem == 2. Раздел Microsoft Reserved (MSR) ======= create partition msr size=16 rem == 3. Раздел Windows ======================== rem == a. Создаём раздел Windows ========== create partition primary rem == b. Создаём пространство для инструментов восстановления === rem ** Обновите это размер для приведения в соответствие rem имеющимися инструментами восстановления (winre.wim) rem плюс немного свободного пространства. shrink minimum=500 rem == c. Подготавливаем раздел Windows ========= format quick fs=ntfs label="Windows" assign letter="W" rem === 4. Раздел Recovery ====================== create partition primary format quick fs=ntfs label="Recovery" assign letter="R" set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac" gpt attributes=0x8000000000000001 list volume exit
-
CreatePartitions-UEFI-FFU.txt
Данный сценарий отталкивается отCreatePartitions-UEFI.txt
, однако он не создаёт раздела восстановления. Это обусловлено тем, что наш разделWindows
выступает самым последним разделом на своём диске и может расширяться. В случае применения данного сценария наш раздел восстановления может быть настроен позднее при помощиApplyRecovery.bat
.rem == CreatePartitions-UEFI-FFU.txt == rem == Данные команды применяются DiskPart для rem создания четырёх разделов rem под устройство на основе UEFI/GPT. rem Если требуется, отрегулируйте размеры соответствующего раздела для rem заполнения вашего диска. == select disk 0 clean convert gpt rem == 1. Раздел System ========================= create partition efi size=100 rem ** Замечание: Для расширенного формата устройств 4Kn, rem замените это значение на размер = 260 ** format quick fs=fat32 label="System" assign letter="S" rem == 2. Раздел Microsoft Reserved (MSR) ======= create partition msr size=16 rem == 3. Раздел Windows ======================== rem == a. Создаём раздел Windows ========== create partition primary rem == c. Подготавливаем раздел Windows ========= format quick fs=ntfs label="Windows" assign letter="W" list volume exit
-
CreatePartitions-BIOS.txt
создаёт разделы System, MSR, Windows и инструментов восстановления для устройств с BIOS.Данный сценарий временно присваивает такие буквы:
System=S
,Windows=W
, аRecovery=R
. Значение буквыW
применяется во избежание потенциального конфликта букв. После перезапуска разделуWindows
присваивается букваC
, а прочие разделы не получают буквенного обозначения.Раздел
Recovery
обязан быть разделом после разделаWindows
для гарантии того, чтоwinre.wim
может отслеживаться в актуальном состоянии на протяжении жизни данного устройства.Приводимая ниже схема отображает получаемые в результате разделы:
rem == CreatePartitions-BIOS.txt == rem == Эти команды применяются DiskPart для rem создания трёх разделов rem в устройстве на основе BIOS/MBR. rem Если требуется, отрегулируйте размеры соответствующего раздела для rem заполнения вашего диска. == select disk 0 clean rem == 1. Раздел System ====================== create partition primary size=100 format quick fs=ntfs label="System" assign letter="S" active rem == 2. Раздел Windows ===================== rem == a. Создаём раздел Windows ======= create partition primary rem == b. Создаём пространство для инструментов восстановления === rem ** Обновите это размер для приведения в соответствие rem имеющимися инструментами восстановления (winre.wim) rem плюс немного свободного пространства. shrink minimum=500 rem == c. Подготавливаем раздел Windows ========= format quick fs=ntfs label="Windows" assign letter="W" rem == 3. Раздел Recovery ==================== create partition primary format quick fs=ntfs label="Recovery image" assign letter="R" set id=27 list volume exit
-
CreatePartitions-BIOS-FFU.txt
Данный сценарий отталкивается отCreatePartitions-BIOS.txt
, однако он не создаёт раздела восстановления. Это обусловлено тем, что наш разделWindows
выступает самым последним разделом на своём диске и может расширяться. В случае применения данного сценария наш раздел восстановления может быть настроен позднее при помощиApplyRecovery.bat
.rem == CreatePartitions-BIOS-FFU.txt == rem == Эти команды применяются DiskPart для rem создания трёх разделов rem в устройстве на основе BIOS/MBR. rem Если требуется, отрегулируйте размеры соответствующего раздела для rem заполнения вашего диска. == select disk 0 clean rem == 1. Раздел System ====================== create partition primary size=100 format quick fs=ntfs label="System" assign letter="S" active rem == 2. Раздел Windows ===================== rem == a. Создаём раздел Windows ======= create partition primary rem == c. Подготавливаем раздел Windows ========= format quick fs=ntfs label="Windows" assign letter="W" list volume exit
-
ApplyRecovery.bat
Пользуйтесь этим сценарием для подготовки раздела восстановления Windows. Этот сценарий вызываетсяApplyImage.bat
, однако может также запускаться самостоятельно.Замечание При копировании и вставке приводимого ниже содержимого для создания необходимого файла .bat при обнаружении встроенного ПО вы можете столкнуться с ошибкой. Для успешного обнаружения встроенного ПО убедитесь что в начинающейся с
for /f "tokens=2* delims= " %%A
строке присутствует следующий за пробелом символ табуляции междуdelims=
и" %%A
.@echo == ApplyRecovery.bat == @rem ********************************************************************* @echo Выполняем проверку в каком режиме запускалось это устройство: в BIOS или в UEFI. wpeutil UpdateBootInfo for /f "tokens=2* delims= " %%A in ('reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareType') DO SET Firmware=%%B @echo Обратите внимание: за delims с пробелом следует символ TAB. @if x%Firmware%==x echo ERROR: Не могу определить под каким встроенным ПО мы запущены. @if x%Firmware%==x echo Обычно помогает исправление: В приведённой выше команде: @if x%Firmware%==x echo for /f "tokens=2* delims= " @if x%Firmware%==x echo ...замените пробелы на символ TAB следующий за пробелом. @if x%Firmware%==x goto END @if %Firmware%==0x1 echo The PC is booted in BIOS mode. @if %Firmware%==0x2 echo The PC is booted in UEFI mode. @echo ********************************************************************* @echo У вас на этом диске уже имеется раздел восстановления? (Y или N): @SET /P RECOVERYEXIST=(Y or N): @if %RECOVERYEXIST%.==y. set RECOVERYEXIST=Y @if %RECOVERYEXIST%.==Y. GOTO COPYTOTOOLSPARTITION @if not %RECOVERYEXIST%.==Y. GOTO CREATEFFURECOVERY @echo ********************************************************************* :COPYTOTOOLSPARTITION @echo == Копируем имеющийся образ Windows RE в свой раздел инструментов Windows RE == md R:\Recovery\WindowsRE xcopy /h W:\Windows\System32\Recovery\Winre.wim R:\Recovery\WindowsRE\ @echo ********************************************************************* @echo == Регистрируем значение местоположения для инструментов восстановления == W:\Windows\System32\Reagentc /Setreimage /Path R:\Recovery\WindowsRE /Target W:\Windows @echo ********************************************************************* @IF EXIST W:\Recovery\Customizations\USMT.ppkg (GOTO CUSTOMDATAIMAGEWIM) else goto HIDEWIMRECOVERYTOOLS :CUSTOMDATAIMAGEWIM @echo == В случае Compact OS, предоставляется пакет восстановления единственного экземпляра == @echo. @echo *Замечание: данный шаг работает только если вы создали пакет ScanState с названием @echo USMT.ppkg как это указывается в лабораторном занятии OEM Deployment. Если вы не следовали @echo этим шагом в данном лабораторном занятии, выберите N. @echo. @echo Варианты: N: Нет @echo Y: Да @echo D: Да, но отложите шаги очистки до первого запуска. @echo Воспользуйтесь этим если шаги очистки требуют более 30 минут. @echo отложите шаги очистки до первого запуска. @SET /P COMPACTOS=Deploy as Compact OS? (Y, N, or D): @if %COMPACTOS%.==y. set COMPACTOS=Y @if %COMPACTOS%.==d. set COMPACTOS=D @if %COMPACTOS%.==Y. dism /Apply-CustomDataImage /CustomDataImage:W:\Recovery\Customizations\USMT.ppkg /ImagePath:W:\ /SingleInstance @if %COMPACTOS%.==D. dism /Apply-CustomDataImage /CustomDataImage:W:\Recovery\Customizations\USMT.ppkg /ImagePath:W:\ /SingleInstance /Defer @echo ********************************************************************* :HIDEWIMRECOVERYTOOLS @echo == Скрываем раздел инструментов восстановления if %Firmware%==0x1 diskpart /s %~dp0HideRecoveryPartitions-BIOS.txt if %Firmware%==0x2 diskpart /s %~dp0HideRecoveryPartitions-UEFI.txt @echo ********************************************************************* @echo == Проверяем состояние конфигурации своих образов. == W:\Windows\System32\Reagentc /Info /Target W:\Windows @echo (Замечание: состояние Windows RE может оказаться Disabled, это НОРМАЛЬНО.) @echo ********************************************************************* @echo Всё сделано! @echo Отключите устройство USB drive от эталонного диска. @echo Для перезапуска наберите exit. @echo. GOTO END :CREATEFFURECOVERY @echo ********************************************************************* @echo == Создание раздела инструментов восстановления @if %Firmware%==0x1 diskpart /s CreateRecoveryPartitions-BIOS.txt @if %Firmware%==0x2 diskpart /s CreateRecoveryPartitions-UEFI.txt @echo находим диск Windows @echo ********************************************************************* @IF EXIST C:\Windows SET windowsdrive=C:\ @IF EXIST D:\Windows SET windowsdrive=D:\ @IF EXIST E:\Windows SET windowsdrive=E:\ @IF EXIST W:\Windows SET windowsdrive=W:\ @echo Наш диск Windows это %windowsdrive% md R:\Recovery\WindowsRE @echo ********************************************************************* @echo Поиск Winre.wim @IF EXIST %windowsdrive%Recovery\WindowsRE\winre.wim SET recoveryfolder=%windowsdrive%Recovery\WindowsRE\ @IF EXIST %windowsdrive%Windows\System32\Recovery\winre.wim SET recoveryfolder=%windowsdrive%Windows\System32\Recovery\ @echo ********************************************************************* @echo копирование Winre.wim xcopy /h %recoveryfolder%Winre.wim R:\Recovery\WindowsRE\ @echo ********************************************************************* @echo == Регистрируем значение местоположения инструментов восстановления == %windowsdrive%Windows\System32\Reagentc /Setreimage /Path R:\Recovery\WindowsRE /Target %windowsdrive%Windows @echo ********************************************************************* @IF EXIST W:\Recovery\Customizations\USMT.ppkg (GOTO CUSTOMDATAIMAGEFFU) else goto HIDERECOVERYTOOLSFFU :CUSTOMDATAIMAGEFFU @echo == В случае Compact OS, предоставляется пакет восстановления единственного экземпляра == @echo. @echo *Замечание: данный шаг работает только если вы создали пакет ScanState с названием @echo USMT.ppkg как это указывается в лабораторном занятии OEM Deployment. Если вы не следовали @echo этим шагом в данном лабораторном занятии, выберите N. @echo. @echo Варианты: N: Нет @echo Y: Да @echo D: Да, но отложите шаги очистки до первого запуска. @echo Воспользуйтесь этим если шаги очистки требуют более 30 минут. @echo отложите шаги очистки до первого запуска. @SET /P COMPACTOS=Deploy as Compact OS? (Y, N, or D): @if %COMPACTOS%.==y. set COMPACTOS=Y @if %COMPACTOS%.==d. set COMPACTOS=D @if %COMPACTOS%.==Y. dism /Apply-CustomDataImage /CustomDataImage:%windowsdrive%Recovery\Customizations\USMT.ppkg /ImagePath:%windowsdrive% /SingleInstance @if %COMPACTOS%.==D. dism /Apply-CustomDataImage /CustomDataImage:%windowsdrive%Recovery\Customizations\USMT.ppkg /ImagePath:%windowsdrive% /SingleInstance /Defer :HIDERECOVERYTOOLSFFU @rem ********************************************************************* @echo == Скрываем раздел инструментов восстановления @if %Firmware%==0x1 diskpart /s HideRecoveryPartitions-BIOS.txt @if %Firmware%==0x2 diskpart /s HideRecoveryPartitions-UEFI.txt @echo ********************************************************************* @echo == Проверяем значение состояния своих образов. == %windowsdrive%Windows\System32\Reagentc /Info /Target %windowsdrive%Windows @echo (Замечание: состояние Windows RE может оказаться Disabled, это НОРМАЛЬНО.) @echo ********************************************************************* @echo Всё сделано! @echo Отключите устройство USB drive от эталонного диска. @echo Для перезапуска наберите exit. @GOTO END :END
-
CreateRecoveryPartitions-UEFI.txt
rem == CreateRecoveryPartitions-UEFI.txt == rem == Находим и помечаем раздел Windows rem ** Данный сценарий полагается на схему разделов из rem CreatePartitions-UEFI или CreatePartitions-UEFI-FFU select disk 0 select partition 3 assign letter="W" rem == Расширяем свой раздел Windows extend rem == Создаём пространство для инструментов восстановления rem ** Обновляем данный размер для приведения в соответствие размеру rem наших инструментов восстановления (winre.wim) rem плюс немного свободного пространства. shrink minimum=500 rem == Создаём раздел восстановления create partition primary format quick fs=ntfs label="Recovery" assign letter="R" set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac" gpt attributes=0x8000000000000001 list volume exit
-
CreateRecoveryPartitions-BIOS.txt
rem == CreateRecoveryPartitions-BIOS.txt == rem == Находим и помечаем раздел Windows rem ** Данный сценарий полагается на схему разделов из rem CreatePartitions-BIOS или CreatePartitions-BIOS-FFU select disk 0 select partition 2 assign letter="W" rem == Расширяем раздел Windows == shrink minimum=500 extend rem == Создаём пространство для инструментов восстановления rem ** Обновляем данный размер для приведения в соответствие размеру rem наших инструментов восстановления (winre.wim) rem плюс немного свободного пространства. shrink minimum=500 rem == Подготавливаем свой раздел восстановления ====== select disk 0 create partition primary format quick fs=ntfs label="Recovery image" assign letter="R" set id=27 list volume exit
-
HideRecoveryPartitions-UEFI.txt
rem === HideRecoveryPartitions-UEFI.txt === rem ** Данный сценарий полагается на схему разделов из rem CreatePartitions-UEFI или CreatePartitions-UEFI-FFU select disk 0 select partition 4 set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac gpt attributes=0x8000000000000001 remove list volume exit
-
Макет запуска
LayoutModification.xml
в Windows 10 предоставляет OEM возможность добавления к макету <Пуск> плиток по умолчанию для включения веб- ссылок, дополнительных плиток, приложений Windows, и прикладных приложений. OEM- производители могут применять данный макет для его использования в нескольких областях или рынка не дублируя большую часть работы. Кроме того, OEM- производители могут добавлять до ьрёх приложений по умолчанию в раздел часто используемых приложений в системной области, что предоставляет пользователю управляемые системой списки, включая важные или часто применяемые системные местоположения и недавно установленные приложения.Чтобы воспользоваться преимуществами всей этой новой функциональности и получить наиболее надёжный и законченный опыт настройки первичного экрана для Windows 10 рассмотрите возможность наличия файла
LayoutModification.xml
. Данный файл указывает как в меню <Пуск> должны размещаться плитки OEM. Дополнительные сведения о настройке нового макета начального экрана доступны в разделе Настройка начального экрана Windows 10 документации для партнёров по Windows 10.<LayoutModificationTemplate xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1"> <RequiredStartGroupsCollection> <RequiredStartGroups Region="DE|ES|FR|GB|IT|US"> <AppendGroup Name="Fabrikam Group 1"> <start:DesktopApplicationTile DesktopApplicationID="Microsoft.Windows.Explorer" Size="2x2" Row="0" Column="4"/> </AppendGroup> <AppendGroup Name="Fabrikam Group 2"> <start:Tile AppUserModelID="Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" Size="2x2" Row="0" Column="0"/> <!-- <start:Tile AppUserModelID="App2!App" Size="2x2" Row="2" Column="0"/> Update the APUMID to reflect the app you installed with the region specified --> </AppendGroup> </RequiredStartGroups> <RequiredStartGroups> <AppendGroup Name="Fabrikam Group 1"> <start:SecondaryTile AppUserModelID="Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" TileID="MyWeblinkTile" Arguments="http://www.fabrikam.com" DisplayName="Fabrikam" Square150x150LogoUri="ms-appx:///Assets/MicrosoftEdgeSquare150x150.png" Wide310x150LogoUri="ms-appx:///Assets/MicrosoftEdgeWide310x150.png" ShowNameOnSquare150x150Logo="true" ShowNameOnWide310x150Logo="false" BackgroundColor="#FF112233" Size="2x2" Row="0" Column="2"/> <!-- <start:Tile AppUserModelID="App2!App" Size="2x2" Row="2" Column="0"/> Update the APUMID to reflect the app you installed with no specific region --> </AppendGroup> </RequiredStartGroups> </RequiredStartGroupsCollection> <AppendOfficeSuite/> <AppendOfficeSuiteChoice Choice="DesktopBridgeSubscription"/> </LayoutModificationTemplate>
-
При помощи
TaskbarLayoutModification.xml
вы можете закрепить приложения в Панели задач. За дополнительными сведениями отсылаем вас к разделу Плитки панели задач OEM.<?xml version="1.0" encoding="utf-8"?> <LayoutModificationTemplate xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout" Version="1"> <CustomTaskbarLayoutCollection PinListPlacement="Replace"> <defaultlayout:TaskbarLayout> <taskbar:TaskbarPinList> <taskbar:UWA AppUserModelID="Microsoft.Windows.Photos_8wekyb3d8bbwe!App" /> <taskbar:DesktopApp DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Paint.lnk"/> </taskbar:TaskbarPinList> </defaultlayout:TaskbarLayout> <defaultlayout:TaskbarLayout Region="US|GB"> <taskbar:TaskbarPinList > <taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad.lnk" /> <taskbar:UWA AppUserModelID="Microsoft.WindowsCalculator_8wekyb3d8bbwe!App" /> </taskbar:TaskbarPinList> </defaultlayout:TaskbarLayout> <defaultlayout:TaskbarLayout Region="CN|TW"> <taskbar:TaskbarPinList> <taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad.lnk" /> <taskbar:UWA AppUserModelID="Microsoft.Windows.Photos_8wekyb3d8bbwe!App" /> <taskbar:DesktopApp DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Paint.lnk"/> </taskbar:TaskbarPinList> </defaultlayout:TaskbarLayout> </CustomTaskbarLayoutCollection> </LayoutModificationTemplate>
-
Запуск для аудита
Добавляет файл ответов для образа Windows в
C:\mount\windows\Windows\Panther\unattend.xml
для указания ему при запуске в режиме аудита. Вы можете создавать этот файл ответов в Диспетчере образа системы Windows Windows System Image Manager.BootToAudit-x64
<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <!-- BootToAudit-x64.xml --> <settings pass="oobeSystem"> <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Reseal> <Mode>Audit</Mode> </Reseal> </component> </settings> </unattend>
-
Сохранение настроек Windows при восстановлении
Windows автоматически не сохраняет настройки, создаваемые в файлах установки
unattend.xml
, ни при персонализации меню Пуск Windows, создаваемого при помощиLayoutModification.xml
при полном сбросе системы, ни при первой регистрации черезoobe.xml
. Для гарантии сохранности ваших персональных настроек, они содержат этапы помещения файловunattend.xml
,LayoutModification.xml
иoobe.xml
обратно на место. Вот некоторые образца сценариев, которые показывают как удерживать эти настройки и помещать их обратно в точки. Сохраните копииunattend.xml
,LayoutModification.xml
иoobe.xml
плюс два данных текстовых файлаResetConfig.xml
иEnableCustomizations.cmd
вC:\Recovery\OEM\:
:ResetConfig.xml
<?xml version="1.0" encoding="utf-8"?> <!-- ResetConfig.xml --> <Reset> <Run Phase="BasicReset_AfterImageApply"> <Path>EnableCustomizations.cmd</Path> <Duration>2</Duration> </Run> <Run Phase="FactoryReset_AfterImageApply"> <Path>EnableCustomizations.cmd</Path> <Duration>2</Duration> </Run> </Reset>
EnableCustomizations.cmd
rem EnableCustomizations.cmd rem Set the variable %TARGETOS% (Typically this is C:\Windows) for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C rem Set the variable %TARGETOSDRIVE% (Typically this is C:) for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A rem Add back Windows settings, Start menu, and OOBE.xml customizations copy "%TARGETOSDRIVE%\Recovery\OEM\Unattend.xml" "%TARGETOS%\Panther\Unattend.xml" /y copy "%TARGETOSDRIVE%\Recovery\OEM\LayoutModification.xml" "%TARGETOSDRIVE%\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml" /y xcopy "%TARGETOSDRIVE%\Recovery\OEM\OOBE\Info" "%TARGETOS%\System32\Info\" /s rem Recommended: Create a pagefile for devices with 1GB or less of RAM. wpeutil CreatePageFile /path=%TARGETOSDRIVE%\PageFile.sys /size=256
Для знакомства с применением точек расширения для кнопки включения сброса обратитесь к разделу Add extensibility scripts to push-button reset.
-
Повторная установка прикладных приложений поставки Windows.
После добавления нового языка установите заново прикладные приложения поставки Windows. Вы можете устанавливать эти прикладные приложения повторно без их первичного удаления.
ReinstallInboxApps-x64.cmd
DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Getstarted_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.Getstarted_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.6.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.GetHelp_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.GetHelp_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.6.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Messaging_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.Messaging_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.6.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Microsoft3DViewer_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.Microsoft3DViewer_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.7.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.MicrosoftOfficeHub_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.MicrosoftOfficeHub_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.MicrosoftSolitaireCollection_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.MicrosoftSolitaireCollection_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Advertising.Xaml.x64.10.0.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Advertising.Xaml.x86.10.0.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Services.Store.Engagement.x64.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Services.Store.Engagement.x86.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.6.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.MSPaint_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.MSPaint_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Office.OneNote_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.Office.OneNote_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.OneConnect_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.OneConnect_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.6.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.People_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.People_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Services.Store.Engagement.x64.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Services.Store.Engagement.x86.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Advertising.Xaml.x64.10.0.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Advertising.Xaml.x86.10.0.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.SkypeApp_kzf8qxf38zg5c.appxbundle /licensepath:.\Appx\Microsoft.SkypeApp_kzf8qxf38zg5c.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.7.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.StorePurchaseApp_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.StorePurchaseApp_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.6.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Wallet_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.Wallet_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.7.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.WebMediaExtensions_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.WebMediaExtensions_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Windows.Photos_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.Windows.Photos_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.7.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.WindowsAlarms_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.WindowsAlarms_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.WindowsCalculator_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.WindowsCalculator_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.WindowsCamera_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.WindowsCamera_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.7.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.WindowsCommunicationsApps_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.WindowsCommunicationsApps_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Advertising.Xaml.x64.10.0.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Advertising.Xaml.x86.10.0.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.WindowsFeedbackHub_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.WindowsFeedbackHub_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.7.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.WindowsMaps_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.WindowsMaps_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.7.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.7.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.WindowsSoundRecorder_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.WindowsSoundRecorder_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.WindowsStore_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.WindowsStore_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.6.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.XboxApp_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.XboxApp_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.6.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.XboxGameOverlay_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.XboxGameOverlay_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.XboxIdentityProvider_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.XboxIdentityProvider_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.6.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.XboxSpeechToTextOverlay_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.XboxSpeechToTextOverlay_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.ZuneMusic_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.ZuneMusic_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.ZuneVideo_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.ZuneVideo_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\microsoft.print3d_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\microsoft.print3d_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.Xbox.TCUI_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.Xbox.TCUI_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Framework.x86.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x64.1.6.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.NET.Native.Runtime.x86.1.6.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.XboxGamingOverlay_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.XboxGamingOverlay_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.MixedReality.Portal_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.MixedReality.Portal_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.ScreenSketch_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.ScreenSketch_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.YourPhone_8wekyb3d8bbwe.appxbundle /licensepath:.\Appx\Microsoft.YourPhone_8wekyb3d8bbwe.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.HEIFImageExtension_8wekyb3d8bbwe.x64.appx /licensepath:.\Appx\Microsoft.HEIFImageExtension_8wekyb3d8bbwe.x64.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VP9VideoExtensions_8wekyb3d8bbwe.x64.appx /licensepath:.\Appx\Microsoft.VP9VideoExtensions_8wekyb3d8bbwe.x64.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.WebpImageExtension_8wekyb3d8bbwe.x64.appx /licensepath:.\Appx\Microsoft.WebpImageExtension_8wekyb3d8bbwe.x64.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx @echo Optional codecs - the following packages are optional depending on your codec choices and needs DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.x64.appx /licensepath:.\Appx\Microsoft.HEVCVideoExtension_8wekyb3d8bbwe.x64.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx DISM /image:C:\Mount\Windows /add-ProvisionedAppxPackage /packagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.MPEG2VideoExtension_8wekyb3d8bbwe.x64.appx /licensepath:.\Appx\Microsoft.MPEG2VideoExtension_8wekyb3d8bbwe.x64.xml /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x64.14.00.appx /dependencypackagepath:C:\Temp\Lab\Apps\Inbox\amd64\Microsoft.VCLibs.x86.14.00.appx
-
Поиск букв устройств при помощи сценария
Для выявления устройств, которые обладают папкой с названием "Images" воспользуйтесь данным сценарием в Windows PE:
@echo Find a drive that has a folder titled Images. @for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do @if exist %%a:\Images\ set IMAGESDRIVE=%%a @echo The Images folder is on drive: %IMAGESDRIVE% @dir %IMAGESDRIVE%:\Images /w
Применение созданного образа
Запустите своё устройство при помощи созданного ранее Windows PE.
Очистите необходимый жёсткий диск и настройте новые разделы жёсткого диска при помощи приведённого выше сценария
CreatePartitions-UEFI.txt
(илиCreatePartitions-BIOS.txt
для более старых устройств с наследованием - legacy - BIOS).Ниже приводится упрощённый сценарий применения образа:
diskpart /s CreatePartitions-UEFI.txt
Примените необходимый образ воспользовавшись сценарием из предыдущего раздела, например:
E:\ApplyImage.bat E:\Images\MyBoot.wim
Ниже приводится упрощённый сценарий применения образа для созданной нами разбивки диска:
rem == ApplyImage.bat == rem == Данные команды развёртывают предписанный файл образа Windows rem в раздел Windows partition и настраивают системный раздел. rem Usage: ApplyImage WimFileName rem Example: ApplyImage E:\Images\ThinImage.wim == rem == Устанавливаем высокопроизводительную схему электропитания для ускорения развёртывания == call powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c rem == Применяем указанный образ к разделу Windows == dism /Apply-Image /ImageFile:%1 /Index:1 /ApplyDir:W:\ rem == Копируем файлы запуска в раздел System == W:\Windows\System32\bcdboot W:\Windows /s S: :rem == Копируем образ Windows RE image в :rem раздел инструментов Windows RE == md R:\Recovery\WindowsRE xcopy /h W:\Windows\System32\Recovery\Winre.wim R:\Recovery\WindowsRE\ :rem == Регистрируем местоположение инструментов восстановления == W:\Windows\System32\Reagentc /Setreimage /Path R:\Recovery\WindowsRE /Target W:\Windows :rem == Проверяем значение состояния конфигурации своих образов. == W:\Windows\System32\Reagentc /Info /Target W:\Windows
Источник: Capture and apply a Windows image using a single .WIM file. Если ваш файл образа не умещается на один носитель, вы можете разделить его на несколько носителей.
Разбить диск на разделы можно следуя процедуре предыдущего раздела или из консоли
diskmgmt.msc
.Файлы со старого диска можно скопировать при помощи утилиты robocopy. Данный вариант, теоретически, может оказаться привлекательным для определённой дефрагментации и избавления от шлака. Например:
robocopy E:\ D:\ /E /COPYALL /SL /XJ /R:3 /W:3 /UNILOG:"D:\rcopy.log" /TEE
Возможные ошибки копирования фиксируются в файле
rcopy.log
. Подробнее о вариантах примененияrobocopy
, например, в статье Использование Robocopy для синхронизации и резервного копирования файлов, примеры.Восстановление загрузчика UEFI/GPT.
Определяем системный раздел:
> Diskpart Diskpart> List vol Volume ### Ltr Label FS Type Size Status ---------- --- ---------- ----- --------- ------ -------- Volume 0 F DVD-ROM 0B No Media Volume 1 FAT32 Partition 100MB Healthy Volume 2 NTFS Partition 350MB Healthy Volume 3 C NTFS Partition 99MB Healthy
В нашем случае это
Volume 1
с типом FAT32 и размером 100MB. Назначаем ему буквуM
:Diskpart> select volume 1 Diskpart> assign letter M: Diskpart> exit
Теперь изменяем конфигурацию BCD начального загрузчика:
cd /d m:\efi\microsoft\boot\ ren BCD BCD.bak bcdboot С:\Windows /l en-us /s M: /f ALL
Восстановление загрузчика BIOS/MBR.
Определяем раздел Windows:
> Diskpart Diskpart> List vol Volume ### Ltr Label FS Type Size Status ---------- --- ---------- ----- --------- ------ -------- Volume 0 F DVD-ROM 0B No Media Volume 1 FAT32 Partition 100MB Healthy Volume 2 NTFS Partition 350MB Healthy Volume 3 C NTFS Partition 99MB Healthy Diskpart> exit
Разделу Windows назначена буква
C:
. Восстанавливаем наC:
загрузчик BCD:bcdboot C:\Windows /S C:
Исправляем в начальном загрузчике записи MBR и BCD:
bootrec.exe /FixMbr bootrec.exe /FixBoot bootrec.exe /RebuildBcd
К сожалению, скопировав саму систему, мы можем столкнуться ещё с рядом проблем, по причине которых мы не сможем продолжить полноценную работу в своём домене. Это же, к примеру, может происходить и при переносе виртуальных машин, кстати. Попытаемся дать ряд советов.
При подключении с воссозданной машиной через интерфейс удалённого рабочего стола вы можете сталкиваться с ошибкой, выдающей следующее сообщение:
The Remote Computer requires network level authentication
. Оно сигнализирует, что пользователь представляет определённый набор данных до установки сеанса подключения (для превращения процесса аутентификации в более безопасный), но этот уровень не соответствует требуемому. В Интернете присутствует множество советов как отключать данный уровень, но нам представляется более правильным проверить состояние NLA и изменить его, в случае необходимости. Для этого воспользуемся двумя сценариями PowerShell lazywinadmin.Get-NetworkLevelAuthentication.ps1:
function Get-NetworkLevelAuthentication { <# .SYNOPSIS This function will get the NLA setting on a local machine or remote machine .DESCRIPTION This function will get the NLA setting on a local machine or remote machine .PARAMETER ComputerName Specify one or more computer to query .PARAMETER Credential Specify the alternative credential to use. By default it will use the current one. .EXAMPLE Get-NetworkLevelAuthentication This will get the NLA setting on the localhost ComputerName : XAVIERDESKTOP NLAEnabled : True TerminalName : RDP-Tcp TerminalProtocol : Microsoft RDP 8.0 Transport : tcp .EXAMPLE Get-NetworkLevelAuthentication -ComputerName DC01 This will get the NLA setting on the server DC01 ComputerName : DC01 NLAEnabled : True TerminalName : RDP-Tcp TerminalProtocol : Microsoft RDP 8.0 Transport : tcp .EXAMPLE Get-NetworkLevelAuthentication -ComputerName DC01, SERVER01 -verbose This will get the NLA setting on the servers DC01 and the SERVER01 .EXAMPLE Get-Content .\Computers.txt | Get-NetworkLevelAuthentication -verbose This will get the NLA setting for all the computers listed in the file Computers.txt .EXAMPLE Get-NetworkLevelAuthentication -ComputerName (Get-Content -Path .\Computers.txt) This will get the NLA setting for all the computers listed in the file Computers.txt .NOTES DATE : 2014/04/01 AUTHOR : Francois-Xavier Cat WWW : http://lazywinadmin.com Twitter : @lazywinadmin Article : http://lazywinadmin.com/2014/04/powershell-getset-network-level.html .LINK https://github.com/lazywinadmin/PowerShell #> #Requires -Version 3.0 [CmdletBinding()] PARAM ( [Parameter(ValueFromPipeline)] [String[]]$ComputerName = $env:ComputerName, [Alias("RunAs")] [pscredential] [System.Management.Automation.Credential()] $Credential = [System.Management.Automation.PSCredential]::Empty )#Param BEGIN { TRY { IF (-not (Get-Module -Name CimCmdlets)) { Write-Verbose -Message 'BEGIN - Import Module CimCmdlets' Import-Module -Name CimCmdlets -ErrorAction 'Stop' -ErrorVariable ErrorBeginCimCmdlets } } CATCH { IF ($ErrorBeginCimCmdlets) { Write-Error -Message "BEGIN - Can't find CimCmdlets Module" } } }#BEGIN PROCESS { FOREACH ($Computer in $ComputerName) { TRY { # Building Splatting for CIM Sessions $CIMSessionParams = @{ ComputerName = $Computer ErrorAction = 'Stop' ErrorVariable = 'ProcessError' } # Add Credential if specified when calling the function IF ($PSBoundParameters['Credential']) { $CIMSessionParams.credential = $Credential } # Connectivity Test Write-Verbose -Message "PROCESS - $Computer - Testing Connection..." Test-Connection -ComputerName $Computer -count 1 -ErrorAction Stop -ErrorVariable ErrorTestConnection | Out-Null # CIM/WMI Connection # WsMAN IF ((Test-WSMan -ComputerName $Computer -ErrorAction SilentlyContinue).productversion -match 'Stack: 3.0') { Write-Verbose -Message "PROCESS - $Computer - WSMAN is responsive" $CimSession = New-CimSession @CIMSessionParams $CimProtocol = $CimSession.protocol Write-Verbose -message "PROCESS - $Computer - [$CimProtocol] CIM SESSION - Opened" } # DCOM ELSE { # Trying with DCOM protocol Write-Verbose -Message "PROCESS - $Computer - Trying to connect via DCOM protocol" $CIMSessionParams.SessionOption = New-CimSessionOption -Protocol Dcom $CimSession = New-CimSession @CIMSessionParams $CimProtocol = $CimSession.protocol Write-Verbose -message "PROCESS - $Computer - [$CimProtocol] CIM SESSION - Opened" } # Getting the Information on Terminal Settings Write-Verbose -message "PROCESS - $Computer - [$CimProtocol] CIM SESSION - Get the Terminal Services Information" $NLAinfo = Get-CimInstance -CimSession $CimSession -ClassName Win32_TSGeneralSetting -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'" [pscustomobject][ordered]@{ 'ComputerName' = $NLAinfo.PSComputerName 'NLAEnabled' = $NLAinfo.UserAuthenticationRequired -as [bool] 'TerminalName' = $NLAinfo.TerminalName 'TerminalProtocol' = $NLAinfo.TerminalProtocol 'Transport' = $NLAinfo.transport } } CATCH { Write-Warning -Message "PROCESS - Error on $Computer" $_.Exception.Message if ($ErrorTestConnection) { Write-Warning -Message "PROCESS Error - $ErrorTestConnection" } if ($ProcessError) { Write-Warning -Message "PROCESS Error - $ProcessError" } }#CATCH } # FOREACH }#PROCESS END { if ($CimSession) { Write-Verbose -Message "END - Close CIM Session(s)" Remove-CimSession $CimSession } Write-Verbose -Message "END - Script is completed" } }
Set-NetworkLevelAuthentication.ps1:
function Set-NetworkLevelAuthentication { <# .SYNOPSIS This function will set the NLA setting on a local machine or remote machine .DESCRIPTION This function will set the NLA setting on a local machine or remote machine .PARAMETER ComputerName Specify one or more computers .PARAMETER EnableNLA Specify if the NetworkLevelAuthentication need to be set to $true or $false .PARAMETER Credential Specify the alternative credential to use. By default it will use the current one. .EXAMPLE Set-NetworkLevelAuthentication -EnableNLA $true .EXAMPLE Set-NetworkLevelAuthentication -EnableNLA $true -computername "SERVER01","SERVER02" .EXAMPLE Set-NetworkLevelAuthentication -EnableNLA $true -computername (Get-Content ServersList.txt) .NOTES DATE : 2014/04/01 AUTHOR : Francois-Xavier Cat WWW : http://lazywinadmin.com Twitter : @lazywinadmin Article : http://lazywinadmin.com/2014/04/powershell-getset-network-level.html .LINK https://github.com/lazywinadmin/PowerShell #> #Requires -Version 3.0 [CmdletBinding()] PARAM ( [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)] [System.String[]]$ComputerName = $env:ComputerName, [Parameter(Mandatory)] [System.Boolean]$EnableNLA, [Alias("RunAs")] [pscredential] [System.Management.Automation.Credential()] $Credential = [System.Management.Automation.PSCredential]::Empty )#Param BEGIN { TRY { IF (-not (Get-Module -Name CimCmdlets)) { Write-Verbose -Message '[BEGIN] Import Module CimCmdlets' Import-Module -Name CimCmdlets -ErrorAction 'Stop' -ErrorVariable ErrorBeginCimCmdlets } } CATCH { IF ($ErrorBeginCimCmdlets) { Write-Error -Message "[BEGIN] Can't find CimCmdlets Module" } } }#BEGIN PROCESS { FOREACH ($Computer in $ComputerName) { Write-Verbose -message $Computer TRY { # Building Splatting for CIM Sessions Write-Verbose -message "$Computer - CIM/WIM - Building Splatting" $CIMSessionParams = @{ ComputerName = $Computer ErrorAction = 'Stop' ErrorVariable = 'ProcessError' } # Add Credential if specified when calling the function IF ($PSBoundParameters['Credential']) { Write-Verbose -message "[PROCESS] $Computer - CIM/WMI - Add Credential Specified" $CIMSessionParams.credential = $Credential } # Connectivity Test Write-Verbose -Message "[PROCESS] $Computer - Testing Connection..." Test-Connection -ComputerName $Computer -Count 1 -ErrorAction Stop -ErrorVariable ErrorTestConnection | Out-Null # CIM/WMI Connection # WsMAN IF ((Test-WSMan -ComputerName $Computer -ErrorAction SilentlyContinue).productversion -match 'Stack: 3.0') { Write-Verbose -Message "[PROCESS] $Computer - WSMAN is responsive" $CimSession = New-CimSession @CIMSessionParams $CimProtocol = $CimSession.protocol Write-Verbose -message "[PROCESS] $Computer - [$CimProtocol] CIM SESSION - Opened" } # DCOM ELSE { # Trying with DCOM protocol Write-Verbose -Message "[PROCESS] $Computer - Trying to connect via DCOM protocol" $CIMSessionParams.SessionOption = New-CimSessionOption -Protocol Dcom $CimSession = New-CimSession @CIMSessionParams $CimProtocol = $CimSession.protocol Write-Verbose -message "[PROCESS] $Computer - [$CimProtocol] CIM SESSION - Opened" } # Getting the Information on Terminal Settings Write-Verbose -message "[PROCESS] $Computer - [$CimProtocol] CIM SESSION - Get the Terminal Services Information" $NLAinfo = Get-CimInstance -CimSession $CimSession -ClassName Win32_TSGeneralSetting -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'" $NLAinfo | Invoke-CimMethod -MethodName SetUserAuthenticationRequired -Arguments @{ UserAuthenticationRequired = $EnableNLA } -ErrorAction 'Continue' -ErrorVariable ErrorProcessInvokeWmiMethod } CATCH { Write-Warning -Message "Error on $Computer" Write-Error -Message $_.Exception.Message if ($ErrorTestConnection) { Write-Warning -Message "[PROCESS] Error - $ErrorTestConnection" } if ($ProcessError) { Write-Warning -Message "[PROCESS] Error - $ProcessError" } if ($ErrorProcessInvokeWmiMethod) { Write-Warning -Message "[PROCESS] Error - $ErrorProcessInvokeWmiMethod" } }#CATCH FINALLY { if ($CimSession) { # CLeanup/Close the remaining session Write-Verbose -Message "[PROCESS] Finally Close any CIM Session(s)" Remove-CimSession -CimSession $CimSession } } } # FOREACH }#PROCESS END { Write-Verbose -Message "[END] Script is completed" } }
Для просмотра текущих установок выполните
PS > .\Get-Set-NetworkLevelAuthentication.ps1
Для изменения текущих настроек выполните
PS > Set-NetworkLevelAuthentication -EnableNLA $true
К сожалению, настройка должным образом NLA может не спасти. Вы будете продолжать испытывать проблемы с восстановленной машиной при весьма неожиданных обстоятельствах. К примеру, будете получать сообщения что у вас недостаточно прав на доступ к ресурсам домена (хотя у вас их может быть даже больше чем нужно) и ряд прочих чудес. Очень хорошо, если вы столкнётесь с таким проявлением проблем в системе:
The security database on the server does not have a computer account for this workstation trust relationship.
(База данных диспетчера учётных записей на сервере не содержит записи для регистрации компьютера через доверительные отношения с этой рабочей станцией.
) или нечто типаНе удалось установить доверительные отношения между этой рабочей станцией и основным доменом
, что сразу укажет вам на суть проблемы. К сожалению, это не всегда так.Суть проблемы состоит в том, что когда прообраз вашего восстановленного компьютера был зарегистрирован в AD, для него была создана отдельная учётная запись с типом
computer
. У каждого компьютера, как и у пользователя, имеется свой пароль, необходимый для его аутентификации в домене и установления доверенного подключения. В отличии от паролей пользователей, он устанавливается автоматически. Компьютеры регулярно (по умолчанию это раз в 30 дней) изменяют свои пароли в AD. Максимальный срок жизни пароля компьютера устанавливается в GPO Domain member: Maximum machine account password, которая пребывает в разделе Computer Configuration-> Windows Settings-> Security Settings-> Local Policies-> Security Options и устанавливается в диапазоне от 0 до 999 дней. На пароль компьютера не распространяется политика паролей для пользователя. Даже когда компьютер был выключен более установленного политикой срока, после его включения он нормально идентифицируется первым DC в AD и только после этого его локальная службаNetlogon
изменит пароль (находится в улье реестра его локальная службаHKLM\SECURITY\Policy\Secrets\$machine.ACC
) и затем в AD в ближайшем DC, который через FSMO с ролью эмулятора PDC изменяется в остальных контроллерах. Но ваш компьютер мог быть восстановлен с того момента, когда пароль в AD ещё не был изменён. А после его изменения в AD он уже не будет обладать доверием. Или же в определённый момент времени в домене показались оба компьютера (прототип и его восстановленная копия). Или же, в компьютере может сбиться системное время. Дальше можете продолжить это ряд ситуаций. В общем, суть проблемы ясна. Проще её решить, чем выяснять причину (хотя это может быть не так, если ваш домен подвергся компрометации).Первая задача состоит в том, чтобы всё- таки зарегистрироваться в этом компьютере. Это вы можете сделать под локальной учётной записью данного компьютера, либо под доменной записью, предварительно физически отключившись от сетевой среды AD (выдернув сетевой кабель, например). Дальше в консоли Windows PowerShell выполните:
PS > Test-ComputerSecureChannel –verbose VERBOSE: Performing the operation "Test-ComputerSecureChannel" on target <ваш компьютер> False VERBOSE: The secure channel between the local computer and the domain <ваш домен> is broken.
Для принудительной смены пароля можно воспользоваться командлетом
Reset-ComputerMachinePassword
, например:PS > Reset-ComputerMachinePassword -Server <dc01> -Credential <domain\domain_admin> VERBOSE: Performing the operation "Test-ComputerSecureChannel" on target <ваш компьютер> False VERBOSE: The secure channel between the local computer and the domain <ваш домен> is broken.
, где <dc01> контроллер домена, а <domain\domain_admin> обладающий должными полномочиями пользователь, естественно, из соображений безопасности, нежели непосредственно применять учётную запись администратора домена, лучше для этой операции временно делегировать права выполняющему данную операцию пользователю.
После этого снова проверьте наличие безопасного канала и убедитесь что теперь возвращается значение
True
:PS > Test-ComputerSecureChannel True (The Secure channel between the local computer and the <domain> is in good condition)
Того же эффекта можно достичь и самой командой
Test-ComputerSecureChannel
, вводя необходимые учётные данный во всплывающем окне регистрации:PS > Test-ComputerSecureChannel –Repair –Credential (Get-Credential)
С помощью командлета
Get-ADComputer
из модуля AD Windows PowerShell можно проверять значение времени последней смены пароля компьютера:PS > Get-ADComputer –Identity <computer> -Properties PasswordLastSet
Наличие безопасного канала можно выполнять и такой командой:
> nltest /sc_verify:<domain> Flags: b0 HAS_IP HAS_TIMESERV Trusted DC Name \\<Controller.domain> Trusted DC Connection Status Status = 0 0x0 NERR_Success Trust Verification Status = 0 0x0 NERR_Success The command completed successfully
В более ранних версиях без надлежащего PowerShell это выполнялось после регистрации под локальным администратором (
.\Administrator
):> Netdom resetpwd /Server:<DomainController> /UserD:<Administrator> /PasswordD:<Password>
-