Teh Hermit
Trace: • деплой_образов

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

Распаковка нужного 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-модули. Если нет - их обязательно нужно добавить. Список необходимых модулей показан на скриншоте.

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

:!: В параметрах запуска 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-скриптом, который мы настроили.

Теперь, при запуске, образ будет искать оптимальный диск для установки системы.

Microsoft, MECM, MDT, Deployment, Windows, PowerShell
Previous Next

Teh Hermit

Table of Contents

  

Microsoft

  Active Directory
  Active Directory Certificate Services
  Active Directory Federation Services
  BitLocker
  Terminal Services
  HYPER-V
  Exchange
  Internet Information Services (IIS)
  Storage Spaces Direct
  WSUS
  Windows Server
  Windows Server Core
  Windows
  Windows Admin Center
  Windows Backup
  Windows Firewall
  Windows 11
  Microsoft Office
  IPAM
  NPS и RADIUS
  Office Online
  Microsoft SQL Server
  Microsoft Endpoint Configuration Manager
  PowerShell
  KMS-активация

Unix-like

  Astra Linux
  Asterisk и FreePBX
  SQUID
  Debian
  CentOS
  Ubuntu Server + Desktop
  pfSense
  PostgreSQL
  SSH
  OpenSSL
  Zabbix

  

Hardware

  Keychron
  WakeOnLan
  Серверы HP
  Серверы SNR
  Настройка планшетов Handheld

  

Networking

  Cisco
  D-Link
  Mikrotik
  Keenetic

  

Other

  1С
  Docker
  DokuWiki
  Ghost Blog
  GoodbyeDPI
  Graylog
  VMWare
  ProxMox
  PrivateBin
  Outline VPN
  Wireguard
  Российская криптография
  Р-Виртуализация
  Kaspersky
  FileZilla ftp-сервер
  Soti MobiControl
  SysInternals
  VeraCrypt
  Non-Sucking Service Manager
  NMAP

     

DevOps

  Git
  Gitlab