os:win:unattended-install
Различия
Показаны различия между двумя версиями страницы.
| os:win:unattended-install [27.10.2025 07:28] – создано viacheslav | os:win:unattended-install [27.10.2025 09:29] (текущий) – viacheslav | ||
|---|---|---|---|
| Строка 15: | Строка 15: | ||
| https:// | https:// | ||
| + | |||
| + | ====== WDS ====== | ||
| + | ===== Смена каталога установки ===== | ||
| + | <code dos> | ||
| + | wdsutil / | ||
| + | robocopy \e \move " | ||
| + | wdsutil / | ||
| + | </ | ||
| + | https:// | ||
| + | |||
| + | ===== Альтернативы ===== | ||
| + | |||
| + | https:// | ||
| + | https:// | ||
| + | https:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | ====== MDT ====== | ||
| + | ===== Установка ===== | ||
| + | MDT: https:// | ||
| + | ADK: https:// | ||
| + | |||
| + | ===== Настройка ===== | ||
| + | ===== Создать Deployment Share ===== | ||
| + | <code powershell> | ||
| + | Import-Module " | ||
| + | $shares = Get-MDTPersistentDrive | ||
| + | |||
| + | ### VAR | ||
| + | # Common | ||
| + | $mdtServerName = " | ||
| + | # Share - Create | ||
| + | $shareName = " | ||
| + | $shareDisk = ' | ||
| + | # Share - User for access | ||
| + | $shareUser = " | ||
| + | |||
| + | # Create share | ||
| + | $shareFolder = $shareName -replace ' | ||
| + | $shareNum = " | ||
| + | mkdir -Path " | ||
| + | New-SmbShare -Name " | ||
| + | new-PSDrive -Name $shareNum -PSProvider " | ||
| + | # Set permissions to share user | ||
| + | icacls.exe " | ||
| + | Grant-SmbShareAccess -Name " | ||
| + | </ | ||
| + | |||
| + | ===== Добавить приложение ===== | ||
| + | Здесь - в режиме " | ||
| + | <code powershell> | ||
| + | Import-Module " | ||
| + | |||
| + | function Add-MDTApp ($shareName, | ||
| + | $share = Get-MDTPersistentDrive |? description -match $shareName | ||
| + | New-PSDrive -Name $share.name -PSProvider MDTProvider -Root $share.path | ||
| + | Import-MDTApplication -Path " | ||
| + | } | ||
| + | |||
| + | Add-MDTApp -shareName " | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Добавить/ | ||
| + | Добавить | ||
| + | <code powershell> | ||
| + | Import-Module " | ||
| + | New-PSDrive -Name " | ||
| + | new-item -path " | ||
| + | new-item -path " | ||
| + | </ | ||
| + | Удалить | ||
| + | <code powershell> | ||
| + | Import-Module " | ||
| + | New-PSDrive -Name " | ||
| + | remove-item -path " | ||
| + | </ | ||
| + | |||
| + | ===== Драйверы ===== | ||
| + | Configure the Inject Drivers task sequence step action with the following settings:\\ | ||
| + | Choose a selection profile: Nothing\\ | ||
| + | Install all drivers from the selection profile | ||
| + | |||
| + | The configuration above indicates that MDT should only use drivers from the folder specified by the DriverGroup001 property, which is defined by the " | ||
| + | |||
| + | For more information, | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | |||
| + | ===== Задачи ===== | ||
| + | ==== Конвертация ESD в WIM ==== | ||
| + | Если в ISO образ install.esd, | ||
| + | <code powershell> | ||
| + | $imgFrom = " | ||
| + | $imgTo = " | ||
| + | # Выяснить, | ||
| + | Get-WindowsImage -ImagePath $imgFrom | ||
| + | # Конвертировать, | ||
| + | $sourceIndex = 2 | ||
| + | Export-WindowsImage -SourceImagePath $imgFrom -DestinationImagePath $imgTo -SourceIndex $sourceIndex -CheckIntegrity -CompressionType max | ||
| + | </ | ||
| + | ==== Удаление встроенных приложений ==== | ||
| + | Размещение задачи: | ||
| + | Размещение скрипта в файловой системе: | ||
| + | Добавить задачу Powershell Script и вписать имя скрипта в строку " | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Добавить параметр '' | ||
| + | |||
| + | https:// | ||
| + | |||
| + | ==== Обновление со WSUS из определённой группы ==== | ||
| + | В customsettings.ini объявить свойство в разделе '' | ||
| + | Затем присвоить ему значение в '' | ||
| + | :!: Группу лучше писать на латинице и без пробелов, | ||
| + | |||
| + | < | ||
| + | [Settings] | ||
| + | Priority=Default | ||
| + | Properties=WSUSGroup | ||
| + | |||
| + | [Default] | ||
| + | WSUSGroup=wds | ||
| + | </ | ||
| + | |||
| + | В DeploymentShare, | ||
| + | |||
| + | <code vbscript> | ||
| + | If oEnvironment.Item(" | ||
| + | oShell.RegWrite " | ||
| + | oShell.RegWrite " | ||
| + | End if | ||
| + | </ | ||
| + | |||
| + | Финальный вид раздела: | ||
| + | <code vbscript> | ||
| + | '// | ||
| + | '// | ||
| + | '// | ||
| + | |||
| + | If oEnvironment.Item(" | ||
| + | |||
| + | ' Configure the WSUS server in the registry. | ||
| + | |||
| + | oLogging.CreateEntry " | ||
| + | |||
| + | oShell.RegWrite " | ||
| + | oShell.RegWrite " | ||
| + | |||
| + | If oEnvironment.Item(" | ||
| + | oShell.RegWrite " | ||
| + | oShell.RegWrite " | ||
| + | End if | ||
| + | |||
| + | End if | ||
| + | </ | ||
| + | |||
| + | [[https:// | ||
| + | [[https:// | ||
| + | |||
| + | После окончания настройки ПКМ на Deployment Share -> Update Deployment Share -> Completely regenerate boot images.\\ | ||
| + | На WDS импортировать wim-файл как загрузочный. | ||
| + | |||
| + | ==== Смена редакции Windows ==== | ||
| + | State Restore -> After Opt In to CEIP and WER | ||
| + | |||
| + | Convert to Enterprise | ||
| + | |||
| + | https:// | ||
| + | |||
| + | ===== Литература ===== | ||
| + | Документация по MDT: https:// | ||
| + | Создание эталонного образа: | ||
| + | [[https:// | ||
| + | Как установить Windows 11 22H2 (WDS + MDT) - [[https:// | ||
| + | Справка по параметрам MDT (customsettings.ini): | ||
| + | |||
| + | ===== Проблемы ===== | ||
| + | ==== Оснастка Deployment Workbench вылетает при заходе на вкладку Windows PE в свойствах установочной шары ==== | ||
| + | Решение - создать каталог '' | ||
| + | <code powershell> | ||
| + | mkdir ' | ||
| + | </ | ||
| + | |||
| + | ==== При загрузке образа по сети ошибка The value for the attribute is not valid : language, Code 80040049 ==== | ||
| + | < | ||
| + | Script: X: | ||
| + | Line: 2 | ||
| + | Char: 13 | ||
| + | Error: The value for the attribute is not valid : language | ||
| + | Code: 80040049 | ||
| + | Source: Windows Script Host | ||
| + | </ | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | - Install the most recent ADK from Microsoft. | ||
| + | - For the PE add-on, the most recent one that Microsoft is providing is a faulty one. | ||
| + | |||
| + | So download this one and it should be working fine: https:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | - Go here, follow these instructions: | ||
| + | This issue is now fixed using the latest LCU KB5031373 or newer for Server Operating Systems. [[https:// | ||
| + | |More details here]].\\ | ||
| + | [[https:// | ||
| + | </ | ||
| + | - Next, [[https:// | ||
| + | - Go into MDT, right click your Deployment Share, choose Update Deployment Share, and choose to completely regenerate your boot image. | ||
| + | - Replace your image in WDS using the new boot image you just generated in Step 3 (it will be in ''< | ||
| + | |||
| + | ==== Не обновляется установочная шара ==== | ||
| + | < | ||
| + | === Making sure the deployment share has the latest x86 tools === | ||
| + | |||
| + | === Processing LiteTouchPE (x86) boot image === | ||
| + | |||
| + | Building requested boot image profile. | ||
| + | |||
| + | System.Management.Automation.CmdletInvocationException: | ||
| + | --- Конец трассировки внутреннего стека исключений --- | ||
| + | в Microsoft.BDD.Core.BDDWimFile..ctor(String wimPath, Boolean forUpdate) | ||
| + | в Microsoft.BDD.PSSnapIn.UpdateDeploymentPoint.UpdateBootImage(String template, String platform, String dpPath, Boolean createISO, String isoName) | ||
| + | в Microsoft.BDD.PSSnapIn.UpdateDeploymentPoint.ProcessRecord() | ||
| + | в System.Management.Automation.CommandProcessor.ProcessRecord() | ||
| + | --- Конец трассировки внутреннего стека исключений --- | ||
| + | в System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input) | ||
| + | в Microsoft.BDD.Wizards.UpdateProgress.WizardProcessing() | ||
| + | в Microsoft.BDD.Wizards.WizardProgress.InitiateWizardProcessing() | ||
| + | </ | ||
| + | |||
| + | Решение: | ||
| + | Обходной путь (не проверял): | ||
| + | |||
| + | According to the official article, this is by design. The last supported version of 32-bit WinPE is available in the WinPE add-on for Windows 10, version 2004. The 32-bit versions of Windows PE (WinPE) in the WinPE add-ons for Windows 11 and Windows Server 2022 aren't supported. | ||
| + | |||
| + | https:// | ||
| + | |||
| + | === Не генерируется Unattend.xml === | ||
| + | :!: В целом можно забить, | ||
| + | < | ||
| + | Выполнение операции " | ||
| + | Starting: " | ||
| + | |||
| + | ����ࠡ�⠭��� �᪫�祭��: | ||
| + | � Microsoft.BDD.Catalog.Program.DoCatalog() | ||
| + | � Microsoft.BDD.Catalog.Program.Main(String[] args) | ||
| + | |||
| + | Non-zero return code from catalog utility, rc = -532462766 | ||
| + | |||
| + | </ | ||
| + | |||
| + | === Failure (5616): 15299: Verify BCDBootEx === | ||
| + | Ошибка при разливке образа. Решение: | ||
| + | |||
| + | Поместить скрипт FixUEFIDetection.wsf в каталог Scripts в DeploymentShare | ||
| + | |||
| + | ++++ FixUEFIDetection.wsf | | ||
| + | |||
| + | <file vbscript FixUEFIDetection.wsf> | ||
| + | <job id=" | ||
| + | < | ||
| + | < | ||
| + | |||
| + | ' // *************************************************************************** | ||
| + | ' // File: FixUEFIDetection.wsf | ||
| + | ' // Version: | ||
| + | ' // Author: | ||
| + | ' // *************************************************************************** | ||
| + | |||
| + | oLogging.CreateEntry " | ||
| + | oLogging.CreateEntry " | ||
| + | |||
| + | If oEnvironment.Item(" | ||
| + | |||
| + | oLogging.CreateEntry "We are in WinPE, detecting firmware type from registry...", | ||
| + | |||
| + | ' Getting firmware type from WinPE registry | ||
| + | PEFirmwareType = oShell.Regread(" | ||
| + | |||
| + | oLogging.CreateEntry " | ||
| + | |||
| + | If PEFirmwareType = " | ||
| + | oLogging.CreateEntry " | ||
| + | oEnvironment.Item(" | ||
| + | Else | ||
| + | oLogging.CreateEntry " | ||
| + | oEnvironment.Item(" | ||
| + | End If | ||
| + | Else | ||
| + | oLogging.CreateEntry " | ||
| + | |||
| + | Set objShell = CreateObject(" | ||
| + | Set objExecObject = objShell.Exec(" | ||
| + | |||
| + | Do While Not objExecObject.StdOut.AtEndOfStream | ||
| + | strText = objExecObject.StdOut.ReadLine() | ||
| + | If Instr(strText, | ||
| + | oLogging.CreateEntry " | ||
| + | oEnvironment.Item(" | ||
| + | Exit Do | ||
| + | End If | ||
| + | Loop | ||
| + | |||
| + | If oEnvironment.Item(" | ||
| + | ' All good, do nothing | ||
| + | Else | ||
| + | oEnvironment.Item(" | ||
| + | End If | ||
| + | |||
| + | |||
| + | End If | ||
| + | |||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ++++ | ||
| + | |||
| + | Task Sequence -> Preinstall -> New Computer only -> создать задачу "Run Command Line" перед первой задачей Format and Partitions Disk и указать там на скрипт. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | https:// | ||
os/win/unattended-install.txt · Последнее изменение: — viacheslav
