===== Деплой образов =====
==== Распаковка нужного install.wim из install.esd ====
Иногда (например, при скачивании образа при помощи Media Creation Tool) в папке //sources// нет файла //install.wim//, который нужен для создания образа в MECM, а есть только файл //install.esd//. Данный файл представляет собой зашифрованный архив, содержащий все доступные системы, собранные в конкретном ISO-образе.
В этом случае мы сначала можем посмотреть его содержимое.
Для просмотра выполним команду:
dism /Get-WimInfo /WimFile:"E:\custom_distr\Win 10 Enterprise\sources\install.esd"
Теперь ищем и запоминаем нужный ID, после чего выполняем команду, которая разархивирует нужный образ:
dism /Export-Image /SourceImageFile:"E:\custom_distr\Win 10 Enterprise\sources\install.esd" /SourceIndex:2 /DestinationImageFile:"E:\custom_distr\Win 10 Enterprise\sources\install.wim" /Compress:max /CheckIntegrity
----
=== Автоматический выбор быстрого диска для установки ===
Проблема: по умолчанию task sequence в MECM выбирает для установки диск с номером 0. Но что, если диск с номером 0 - HDD, в то время, как быстрый диск SSD (или NVMe) в компьютере имеет другой номер? В этом случае система будет установлена на HDD.
Чтобы этого избежать, в task sequence нужно встроить powershell скрипт, который находит SSD или NVME диск и устанавливает систему именно туда.
1. Перед тем, как вставлять скрипт PS в task sequence - нужно убедиться, что наш boot image поддерживает powershell, а также нужные PS-модули. Если нет - их обязательно нужно добавить. Список необходимых модулей показан на скриншоте.
;#;
{{::mecm_boot_ps_modules.jpg?direct&200|}}
;#;
2. После добавления модулей, в task sequence - добавляем запуск PS-скрипта, сразу за этапом //"Restart in Windows PE"//.
;#;
{{::mecm_find_fast_drive.jpg?direct&200|}}
;#;
:!: В параметрах запуска PS-скрипта нужно обязательно поменять execution policy на //"bypass"//, иначе скрипт не запустится.
Ниже приведен сам скрипт. Он сохраняет результат выбора диска в переменную **OSDDiskIndex**, которую мы будем использовать на дальнейших шагах.
#defalt value
$disk_idx = 0
#retrieve SSD
$ssd_disk = get-physicaldisk | where mediatype -like 'ssd'
#multiple SSD
if (@($ssd_disk).count -gt 1)
{
#multiple nvme SSD, choose the smallest one
if (@($ssd_disk | where bustype -like 'nvme').count -gt 1)
{
$disk_idx = $ssd_disk | Sort-Object -Property Size | Select-Object -ExpandProperty DeviceID -First 1
}
elseif (@($ssd_disk | where bustype -like 'nvme').count -eq 1)
{
$disk_idx = ($ssd_disk | where bustype -like 'nvme').deviceid
}
}
#singel SSD
elseif (@($ssd_disk).count -eq 1)
{
#multiple physical disks, choose SSD
if (@(get-physicaldisk).count -gt 1)
{
$disk_idx = ($ssd_disk).deviceid
}
#single pysical disks
else
{
$disk_idx = 0
}
}
#Write-Host "disk selected: $disk_idx"
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('OSDDiskIndex') = $disk_idx
3. Теперь на ОБОИХ (BIOS и UEFI) этапах "partition disk 0" - указываем вместо статического номера диска - переменную **OSDDiskIndex**, значение которой будет установлено PS-скриптом, который мы настроили.
;#;
{{::mecm_osd_disk_index.jpg?direct&200|}}
;#;
Теперь, при запуске, образ будет искать оптимальный диск для установки системы.
{{tag>Microsoft MECM MDT Deployment Windows PowerShell}}