Обновление носителя установки IoT Enterprise
В этой статье описана настройка среды обновления мультимедиа и сбор всех необходимых компонентов, необходимых для обновления среды WinPE и основной операционной системы, установка драйверов
Подготовка среды обслуживания мультимедиа
Запустите PowerShell с правами администратора.
Мы используем этот экземпляр PowerShell для завершения процесса обслуживания установочного носителя для применения обновлений и при необходимости включаем необходимые драйверы, которые не являются частью установочного носителя Windows.- Выберите команду Запустить.
- Тип PowerShell
- Щелкните правой кнопкой мыши Windows PowerShell
- Выберите " Запуск от имени администратора"
Создание папок для хранения файлов во время обслуживания мультимедиа
Используйте команду PowerShell New_Item , чтобы создать следующие папки на компьютере технического специалиста для хранения файлов, необходимых во время обслуживания мультимедиа.c:\MediaRefresh: родительская папка для хранения файлов во время обслуживания мультимедиа.
c:\MediaRefresh\Out: копия исходного носителя, обновленного во время обслуживания.
c:\MediaRefresh\Packages\LCU: последнее накопительное обновление c:\MediaRefresh\Packages\SSU: обновление стека обслуживания при необходимости
c:\MediaRefresh\Drivers: сторонние драйверы.
c:\MediaRefresh\Scripts: пользовательские скрипты установки. c:\MediaRefresh\WIM: рабочий каталог для обновления boot.wim и install.wimmd c:\MediaRefresh\Drivers md c:\MediaRefresh\Out md c:\MediaRefresh\Packages\LCU md c:\MediaRefresh\Packages\SSU md c:\MediaRefresh\Scripts md c:\MediaRefresh\WIM
Копирование файлов из исходного носителя
Скопируйте все файлы из исходного носителяc:\MediaRefresh\Out
установки в .Перейдите к шагу
b.
, если у вас есть физический носитель, в противном случае необходимо сначала подключить ISO установки Windows IoT Enterprise с помощью mount-DiskImage и отобразить итоговую букву подключенного диска с помощью Get-Volume.Mount-DiskImage -ImagePath <ISO Path> | Get-Volume
Где
<ISO Path>
есть полный путь к ISOЗапишите DriveLetter, так как нам потребуется использовать его на следующем шаге.
Скопируйте файлы из исходного носителя установки, обозначаемого здесь,
<DriveLetter>
вc:\MediaRefresh\Out
папку с помощью Robocopy.robocopy <DriveLetter>:\ c:\MediaRefresh\Out /Copy:DT /e
Где
<DriveLetter>
находится буква диска, связанная с подключенным ISO-файломПереместите boot.wim и install.wim из
c:\MediaRefresh\Out\Sources
c:\MediaRefresh\WIM
папки в рабочую папку для обновления ФАЙЛОВ WIM с помощью Robocopy.robocopy c:\mediarefresh\out\sources c:\MediaRefresh\WIM *.wim /Mov
Перейдите к следующему шагу, если вы не подключали ISO для предыдущей команды, в противном случае необходимо сначала отключить ISO установки Windows IoT Enterprise с помощью Dismount-Diskimage
Dismount-DiskImage -ImagePath <ISO Path>
Где
<ISO Path>
указан полный путь к ISO-файлу.
Сбор пакетов обслуживания
Скачайте последний накопительный накопительный файл обновления обслуживания Майкрософт (MSU) в папку
c:\MediaRefresh\Packages\LCU
.Если требуется зависимость обновления стека обслуживания (MSU), скачайте ее в
c:\MediaRefresh\Packages\SSU
папку. Используйте следующую таблицу, чтобы найти обновления для конкретной версии Windows IoT Enterprise.Выпустить Версия Журнал обновлений Каталог обновлений Windows 11 IoT Enterprise LTSC 2024 [24H2] 26100 Отображение журнала обновлений Отображение обновлений x64 с отображением обновлений
Arm64Windows 10 IoT Корпоративная 2021 с долгосрочным обслуживанием 19044 Отображение журнала обновлений Отображение обновлений x64 с отображением обновлений
ARM64Windows 10 IoT Корпоративная LTSC 2019 17763 Отображение журнала обновлений Отображение обновлений x64 с отображением обновлений
ARM64Windows 10 IoT Корпоративная LTSC 2016 14393 Отображение журнала обновлений Отображение обновлений x64 с отображением обновлений
x86Windows 10 IoT Корпоративная LTSC 2015 10240 Отображение журнала обновлений Отображение обновлений x64 с отображением обновлений
x86[Необязательно] Сбор сторонних драйверов
Поместите сторонние драйверы, необходимые для устройства в несжатом формате, в корневойc:/MediaRefresh/drivers
папке или в виде вложенных папокc:/MediaRefresh/drivers
.[Необязательно] Сбор скриптов конфигурации
Поместите своиSetupcomplete.cmd
иErrorHandler.cmd
пользовательские скрипты, которые выполняются во время или после процесса установки Windows в папкуc:\MediaRefresh\Scripts
.Дополнительные сведения см. в разделе "Добавление пользовательского скрипта в программу установки Windows"
Обновление среды предварительной установки Windows (WinPE)
Среда предварительной установки Windows (WinPE) содержится в boot.wim
исходном носителе установки в папке \sources
. В этом разделе мы рассмотрим процесс обновления boot.wim
последнего накопительного обновления обслуживания и включения сторонних драйверов при необходимости в среду WinPE с помощью среды обслуживания мультимедиа.
Подключение WinPE boot.wim
Первым шагом в обновлении среды WinPE является создание временной папки с именем
mounted
c:\mediarefresh
с помощью команды PowerShell New-ItemMD c:\MediaRefresh\mounted
Перед обновлением
boot.wim
необходимо убедиться, что его атрибут файла не задан как ReadOnly. Используйте команду PowerShell Set-ItemProperty, чтобы удалить атрибут ReadOnly.Set-ItemProperty -Path "c:\mediarefresh\wim\boot.wim" -Name IsReadOnly -Value $false
Теперь можно подключить образ WinPE, хранящийся в
boot.wim
индексе 2, с помощью команды PowerShell Mount-WindowsImageMount-WindowsImage -ImagePath "c:\mediarefresh\wim\boot.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
Содержимое образа WinPE, хранящегося в
boot.wim
индексе 2, теперь доступноc:\mediarefresh\mounted
для просмотра.
Применение сторонних драйверов к WinPE
Установите сторонние драйверы, собранные в папкеc:\mediarefresh\drivers
, в WinPEc:\mediarefresh\mounted
с помощью команды PowerShell Add-WindowsDriver.Примечание.
Для тестирования можно использовать для
-ForceUnsigned
добавления неподписанных драйверов и переопределения требования, необходимые драйверам для цифровой подписи. Дополнительные сведения о требованиях к подписи драйверов см. в разделе "Общие сведения о драйверах устройств и развертывании".Add-WindowsDriver -Path "c:\mediarefresh\Mounted" -Driver "c:\mediarefresh\drivers" -Recurse
Применение обновлений обслуживания к WinPE
Примените последнее накопительное обновление и его зависимости, скачанные в папку, кc:\mediarefresh\packages
WinPE сc:\mediarefresh\mounted
помощью команды PowerShell Add-WindowsPackage. Этот процесс может занять несколько минут, однако он гарантирует, что образ Windows уже имеет последнее обновление обслуживания.Сначала примените зависимость обновления стека обслуживания.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
Теперь примените последнее накопительное обновление.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU"
Совет
При возникновении ошибки 0x800f0823 обновление обслуживания может иметь зависимость, которая должна быть применена сначала. Если вы уже скачали свою зависимость, попробуйте выполнить указанную выше команду во второй раз. Если проблема не устранена, может потребоваться скачать дополнительное условие для обновления.
- Запишите базу знаний####### в имени файла обновления в c:\mediarefresh\packages.
- Поиск support.microsoft.com с помощью базы знаний#######
- Откройте первый раздел, соответствующий и найдите термин "предварительные требования".
- Скачайте все указанные предварительные требования и снова запустите приведенную выше команду. Обратите внимание, что для первого применения необходимо выполнить команду дважды.
- Перейдите к следующему шагу после устранения ошибки.
Копирование обновлено
Setup.exe
Перед продолжением копирования обновленногоsetup.exe
из WinPE наc:\mediarefresh\mounted\sources
c:\mediarefresh\out\sources
использование Robocopy.Сначала необходимо удалить атрибут ReadOnly с
c:\mediarefresh\mounted\sources\setup.exe
помощью команды Set-ItemProperty PowerShell.Set-ItemProperty -Path "c:\mediarefresh\out\sources\setup.exe" -Name IsReadOnly -Value $false
Теперь можно скопировать
setup.exe
сc:\mediarefresh\mounted\sources
c:\mediarefresh\out\sources
помощью Robocopy.robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setup.exe
Отключение и сохранение изменений в WinPE
Чтобы завершить процесс обслуживания, используйте команду PowerShell Dismount-WindowsImage для сохранения изменений.
Внимание
Перед выполнением
Dismount-WindowsImage
команды убедитесь, что у вас нет проводник представлений или окон команд, в которых просматриваются содержимоеc:\mediarefresh\mounted
. Сбой этого приведет к ошибке при попытке отключения.Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
Удаление временной папки
После успешного отключения boot.wim теперь можно удалить временную папку
c:\mediarefresh\mounted
с помощью команды PowerShell Remove-ItemRD c:\MediaRefresh\mounted
Публикация
Boot.wim
в папкеout
Теперь скопируйте обновленную
boot.wim
версиюc:\mediarefresh\out\sources
сc:\mediarefresh\wim
помощью Robocopy.robocopy c:\mediarefresh\wim c:\mediarefresh\out\sources boot.wim
Среда Предустановки Windows (WinPE), сохраненная как boot.wim
и setup.exe
расположенная под c:\mediarefresh\out\sources\
ней, полностью обновляются.
Обновление Windows IoT Enterprise
Образ Windows IoT Enterprise содержится в install.wim
исходном носителе установки в папке \sources
. В разделе " Подготовка среды обслуживания мультимедиа" мы переехали install.wim
в рабочую папку. В этом разделе мы рассмотрим процесс обновления install.wim
с помощью последнего накопительного обновления обслуживания и включения сторонних драйверов при необходимости на целевом устройстве с помощью среды обслуживания мультимедиа. После завершения обновления разбиение install.wim
на небольшие *.swm
файлы, чтобы их можно было скопировать на флэш-накопитель, отформатированный как FAT32.
Подключение ОС install.wim
Первым шагом в обновлении среды WinPE является создание временной папки с именем
mounted
с помощью команды PowerShell New-Itemc:\mediarefresh
.MD c:\MediaRefresh\mounted
Прежде чем обновить install.wim, необходимо убедиться, что его атрибут файла не имеет значения ReadOnly. Используйте команду PowerShell Set-ItemProperty, чтобы удалить атрибут ReadOnly.
Set-ItemProperty -Path "c:\mediarefresh\wim\install.wim" -Name IsReadOnly -Value $false
Теперь можно подключить образ Windows IoT Enterprise, хранящийся в install.wim в индексе 2, с помощью команды PowerShell Mount-WindowsImage
Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
Содержимое хранилища образов Windows IoT Enterprise в install.wim в индексе 2 теперь доступно для
c:\mediarefresh\mounted
просмотра.
Установка сторонних драйверов
Установите сторонние драйверы, собранные в папкеc:\mediarefresh\drivers
, на образc:\mediarefresh\mounted
ОС с помощью команды PowerShell Add-WindowsDriver. Параметр-recurse
включает обработку вложенных папок.Add-WindowsDriver -Path "c:\mediarefresh\mounted" -Driver "c:\mediarefresh\drivers" -Recurse
Примечание.
Для тестирования можно использовать для
-ForceUnsigned
добавления неподписанных драйверов и переопределения требования, необходимые драйверам для цифровой подписи. Дополнительные сведения о требованиях к подписи драйверов см. в разделе "Общие сведения о драйверах устройств и развертывании".Добавление пользовательских скриптов установки
Перед добавлением пользовательских скриптов установки в образ ОС сначала создайте
scripts
папку сc:\mediarefresh\mounted\windows\setup\
помощью команды PowerShell New-Item.MD c:\mediarefresh\mounted\windows\setup\scripts
Копирование скриптов с
c:\mediarefresh\scripts
c:\mediarefresh\mounted\windows\setup\scripts
помощью Robocopy.robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd
Применение пакетов обслуживания к образу ОС
Примените последнее накопительное обновление и его зависимости, скачанные в папку, кc:\mediarefresh\packages
WinPE сc:\mediarefresh\mounted
помощью команды PowerShell Add-WindowsPackage.Сначала примените зависимость обновления стека обслуживания.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
Теперь примените последнее накопительное обновление.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU"
Совет
При возникновении ошибки 0x800f0823 обновление обслуживания может иметь зависимость, которая должна быть применена сначала. Если вы уже скачали свою зависимость, попробуйте выполнить указанную выше команду во второй раз. Если проблема не устранена, может потребоваться скачать дополнительное условие для обновления.
- Запишите базу знаний####### в имени файла обновления в c:\mediarefresh\packages.
- Поиск support.microsoft.com с помощью базы знаний#######
- Откройте первый раздел, соответствующий и найдите термин "предварительные требования".
- Скачайте все указанные предварительные требования и снова запустите приведенную выше команду. Обратите внимание, что для первого применения необходимо выполнить команду дважды.
- Перейдите к следующему шагу после устранения ошибки.
Сохранение и отключение обновленного install.wim
Чтобы завершить процесс обслуживания, используйте команду PowerShell Dismount-WindowsImage для сохранения изменений.Внимание
Перед выполнением
Dismount-WindowsImage
команды убедитесь, что у вас нет проводник представлений или окон команд, в которых просматриваются содержимоеc:\mediarefresh\mounted
. Сбой этого приведет к ошибке при попытке отключения.Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
Удаление временной папки
mounted
После успешного отключения boot.wim теперь можно удалить временную папкуc:\mediarefresh\mounted
с помощью команды PowerShell Remove-ItemRD c:\mediarefresh\mounted
Разделение WIM для поддержки файловой системы FAT32
Чтобы убедиться, что новый install.wim помещается в носитель флэш-памяти, отформатированный как FAT32, который имеет максимальный размер файла в 4 ГБ, разделенный файлом образа Windows (install.wim) на набор небольших (SWM) файлов с максимальным размером 4000 МБ с помощью команды PowerShell Split-WindowsImage. Полученные*.swm
файлы записываются в папкуc:\mediarefresh\out\sources
.Split-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -SplitImagePath "c:\mediarefresh\out\sources\install.swm" -FileSize 4000 -CheckIntegrity
Образ установки ОС, изначально сохраненный как install.wim
, теперь хранится в c:\mediarefresh\out\sources\
том виде install.swm
, install2.swm
в котором используется настройка, как если бы они были исходными install.wim
.
Копирование обновленного носителя на флэш-диск
Если вы еще не создали загрузочный флэш-диск, сделайте это, прежде чем продолжить, выполнив действия по установке Windows с флэш-диска.
Последним шагом создания обновленного носителя установки является копирование содержимого c:\mediarefresh\out
загрузочного флэш-диска с помощью Robocopy.
robocopy c:\mediarefresh\out <DriveLetter>:\ /e
Где <DriveLetter>
находится буква диска, связанная с флэш-диском
Установка Windows на новое устройство
Подключите флэш-диск к целевому устройству.
Включите устройство и нажмите клавишу, открывающую меню выбора загрузочного устройства для компьютера, например клавиши ESC/F10/F12. Выберите параметр, который загружает устройство с флэш-диска.
Запускается программа установки Windows. Следуйте инструкциям по установке Windows
Совет
Возможно, вам потребуется обратиться к инструкциям производителя устройства, чтобы настроить его для загрузки с флэш-диска, который этот процесс не работает на устройстве.
После завершения начального этапа установки и перезагрузки устройства программа установки может начаться снова с самого начала. Если программа установки запускается снова, отмените установку и завершите работу компьютера, удалите флэш-диск и включите устройство, чтобы продолжить следующий этап установки.
Совет
Если по какой-то причине во время процесса установки возникает ошибка, ознакомьтесь со следующими статьями по устранению неполадок.
Полный сценарий
В этом разделе содержится полный скрипт, который выполняет каждый из шагов обслуживания мультимедиа в последовательности автоматически. Перед использованием этого скрипта необходимо выполнить раздел "Подготовка среды обслуживания носителей" этой статьи. После готовности скопируйте следующий скрипт PowerShell в c:\mediarefresh\mediarefresh.ps1.
$LogFile = ".\MediaRefresh.log"
$LogDetail = ".\MediaRefreshDetail.log"
"================================================" >> $LogFile
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Starting MediaRefresh" >> $LogFile
"================================================" >> $LogFile
Write-Host "Updating Boot.wim" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Boot.wim Update Started" >> $LogFile
Write-Host " Preparing to mount boot.wim" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Checking for existing .\Mounted folder" >> $LogFile
if ( -not (Test-Path -Path 'c:\MediaRefresh\mounted' -PathType Container)) {
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Create .\Mounted folder" >> $LogFile
MD c:\MediaRefresh\mounted >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Created .\Mounted folder" >> $LogFile
}
else {
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | .\Mounted folder already existed" >> $LogFile
}
Write-Host " Setting boot.wim file attributes to read-write" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Setting boot.wim file attributes to read-write" >> $LogFile
Set-ItemProperty -Path "c:\mediarefresh\wim\boot.wim" -Name IsReadOnly -Value $false | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Set boot.wim file attributes to read-write" >> $LogFile
Write-Host " Mounting boot.wim" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Mount-WindowsImage boot.wim Started" >> $LogFile
Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\boot.wim" -Index 2 -Path "c:\mediarefresh\Mounted" >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Mount-WindowsImage boot.wim Completed" >> $LogFile
Write-Host " Installing Drivers" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Add-WindowsDrivers to boot.wim Started" >> $LogFile
Add-WindowsDriver -Path "c:\mediarefresh\mounted" -Driver "c:\mediarefresh\drivers" -Recurse >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Add-WindowsDrivers to boot.wim Completed" >> $LogFile
Write-Host " Installing Servicing Stack Update" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Add-WindowsPackage SSU to boot.wim Started" >> $LogFile
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU" >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Add-WindowsPackage SSU to boot.wim Completed" >> $LogFile
Write-Host " Installing Latest Cumulative Update" -ForegroundColor Blue
Write-Host " Note: This process may take several minutes to complete." -ForegroundColor Cyan
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Add-WindowsPackage LCU to boot.wim Started" >> $LogFile
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU" >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Add-WindowsPackage LCU to boot.wim Completed" >> $LogFile
Write-Host " Setting read-write attribute on \out\sources\setup.exe" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Setting \out\sources\setup.exe file attributes to read-write" >> $LogFile
Set-ItemProperty -Path "c:\mediarefresh\out\sources\setup.exe" -Name IsReadOnly -Value $false >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Set \out\sources\setup.exe file attributes to read-write" >> $LogFile
Write-Host " Copying updated setup.exe to \out\sources" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Copy updated setup.exe to .\out\sources Started" >> $LogFile
robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setup.exe | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Copy updated setup.exe to .\out\sources Completed" >> $LogFile
Write-Host " Saving and dismounting boot.wim" -ForegroundColor Blue
Write-Host " Note: This process may take several minutes to complete." -ForegroundColor Cyan
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Dismount-WindowsImage boot.wim Started" >> $LogFile
Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save -CheckIntegrity -LogLevel 3 >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Dismount-WindowsImage boot.wim Completed" >> $LogFile
Write-Host " Removing \Mounted folder" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Removing .\mounted folder" >> $LogFile
RD c:\mediarefresh\mounted | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | .\mounted folder removed" >> $LogFile
Write-Host " Copying updated boot.wim to \out\sources" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Copy boot.wim to .\out\sources Started" >> $LogFile
robocopy c:\mediarefresh\wim c:\mediarefresh\out\sources boot.wim | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Copy boot.wim to .\out\sources Completed" >> $LogFile
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Boot.wim Update Completed" >> $LogFile
Write-Host "Updating Boot.wim Complete" -ForegroundColor Blue
Write-Host "Updating Install.wim" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Install.wim Update Started" >> $LogFile
Write-Host " Preparing to mount install.wim" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Checking for existing .\Mounted folder" >> $LogFile
if ( -not (Test-Path -Path 'c:\MediaRefresh\mounted' -PathType Container)) {
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Create .\Mounted folder" >> $LogFile
MD c:\MediaRefresh\mounted >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Created .\Mounted folder" >> $LogFile
}
else {
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | .\Mounted folder already existed" >> $LogFile
}
Write-Host " Setting read-write attribute on install.wim" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Setting install.wim file attributes to read-write" >> $LogFile
Set-ItemProperty -Path "c:\mediarefresh\wim\install.wim" -Name IsReadOnly -Value $false | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Set install.wim file attributes to read-write" >> $LogFile
Write-Host " Mounting install.wim" -ForegroundColor Blue
Write-Host " Note: This process may take several minutes to complete." -ForegroundColor Cyan
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Mount-WindowsImage install.wim Started" >> $LogFile
Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -Index 2 -Path "c:\mediarefresh\Mounted" >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Mount-WindowsImage install.wim Completed" >> $LogFile
Write-Host " Installing Drivers" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Add-WindowsDrivers to install.wim Started" >> $LogFile
Add-WindowsDriver -Path "c:\mediarefresh\mounted" -Driver "c:\mediarefresh\drivers" -Recurse >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Add-WindowsDrivers to install.wim Completed" >> $LogFile
Write-Host " Creating folder \Windows\Setup\Scripts" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Checking for existing \windows\setup\scripts folder" >> $LogFile
if ( -not (Test-Path -Path 'c:\mediarefresh\mounted\windows\setup\scripts' -PathType Container)) {
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Create \windows\setup\scripts folder" >> $LogFile
MD c:\mediarefresh\mounted\windows\setup\scripts >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Created \windows\setup\scripts folder" >> $LogFile
}
else {
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | \windows\setup\scripts already existed" >> $LogFile
}
Write-Host " Copying Scripts to \Windows\Setup\Scripts" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Copy scripts to \windows\setup\scripts Started" >> $LogFile
robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Copy scripts to \windows\setup\scripts Completed" >> $LogFile
Write-Host " Installing Servicing Stack Update" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Add-WindowsPackage SSU to install.wim Started" >> $LogFile
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU" >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Add-WindowsPackage SSU to install.wim Completed" >> $LogFile
Write-Host " Installing Latest Cumulative Update" -ForegroundColor Blue
Write-Host " Note: This process may take several minutes to complete." -ForegroundColor Cyan
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Add-WindowsPackage LCU to install.wim Started" >> $LogFile
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU" >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Add-WindowsPackage LCU to install.wim Completed" >> $LogFile
Write-Host " Saving and dismounting install.wim" -ForegroundColor Blue
Write-Host " Note: This process may take several minutes to complete." -ForegroundColor Cyan
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Dismount-WindowsImage install.wim Started" >> $LogFile
Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save -CheckIntegrity -LogLevel 3 >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Dismount-WindowsImage install.wim Completed" >> $LogFile
Write-Host " Removing \Mounted folder" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Removing .\mounted folder" >> $LogFile
RD c:\mediarefresh\mounted | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | .\mounted folder removed" >> $LogFile
Write-Host "Updating Install.wim Complete" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Install.wim Update Completed" >> $LogFile
Write-Host "Splitting Install.wim" -ForegroundColor Blue
Write-Host " Note: This process may take several minutes to complete." -ForegroundColor Cyan
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Split-WindowsImage Started" >> $LogFile
Split-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -SplitImagePath "c:\mediarefresh\out\sources\install.swm" -FileSize 4000 -CheckIntegrity >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Split-WindowsImage Completed" >> $LogFile
Write-Host "Update Complete" -ForegroundColor Blue
Write-Host "Copy contents of c:\mediarefresh\out to your flash drive" -ForegroundColor Blue