деплой_образов

This is an old revision of the document!


Деплой образов

Распаковка нужного 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 выбирает для установки диск с номером 0. Но что, если диск с номером 0 - HDD, в то время, как быстрый диск в компьютере имеет другой номер? В этом случае система будет установлена на HDD.

Чтобы этого избежать, в task sequence нужно встроить powershell скрипт, который детектит SSD или NVME диск и устанавливает систему именно туда.

Перед тем, как вставлять скрипт PS в task sequence - нужно убедиться, что наш boot image поддерживает powershell и нужные модули. Если нет - их обязательно нужно добавить. Список необходимых модулей показан на скриншоте.

После добавления модулей, в task sequence - нужно добавить запуск PS-скрипта, после шага “Restart in Windows PE”.

:!: В параметрах запуска PS-скрипта обязательно поменять execution policy на “bypass”, иначе получим ошибку.

Вот сам скрипт:

#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
деплой_образов.1663666564.txt.gz · Last modified: 2022/09/20 09:36 by jp