Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, configurará el entorno de actualización de medios y recopilará todos los requisitos previos necesarios para actualizar el entorno de WinPE y el sistema operativo principal, instalar controladores.
Preparar el entorno de mantenimiento de medios
Iniciar PowerShell con privilegios de administrador.
Usamos esta instancia de PowerShell para que termine el proceso de mantenimiento de los medios de instalación para aplicar actualizaciones y, si es necesario, incorporar controladores necesarios que no formen parte del medio de instalación de Windows- Seleccione Inicio.
- Tipo de PowerShell
- Haz clic en Windows PowerShell
- Seleccione Ejecutar como administrador
Crear carpetas para almacenar archivos durante el mantenimiento de medios
Use el comando de PowerShell New_Item para crear las siguientes carpetas en el equipo del técnico para almacenar los archivos necesarios durante el mantenimiento de medios.c:\MediaRefresh: carpeta principal para almacenar archivos durante el mantenimiento multimedia.
c:\MediaRefresh\Out: copia del medio original actualizado durante el mantenimiento.
c:\MediaRefresh\Packages\LCU: Actualización acumulativa más reciente c:\MediaRefresh\Packages\SSU: actualización de la pila de mantenimiento si es necesario
c:\MediaRefresh\Drivers: controladores de terceros.
c:\MediaRefresh\Scripts: script de instalación personalizados. c:\MediaRefresh\WIM: directorio de trabajo para actualizar boot.wim e 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
Copia de archivos desde medios originales
Copie todos los archivos de los medios de instalación originales enc:\MediaRefresh\Out
.Continúe con el paso
b.
si tiene medios físicos; de lo contrario, primero debe montar la ISO de instalación de Windows IoT Enterprise mediante Mount-DiskImage y mostrar la letra de unidad montada resultante mediante Get-Volume.Mount-DiskImage -ImagePath <ISO Path> | Get-Volume
Donde
<ISO Path>
es una ruta de acceso completa a su ISOTome nota de DriveLetter, ya que necesitaremos usarlo en el paso siguiente.
Copie los archivos del medio de instalación original que se indica aquí en la carpeta
<DriveLetter>
ac:\MediaRefresh\Out
usando Robocopy.robocopy <DriveLetter>:\ c:\MediaRefresh\Out /Copy:DT /e
Donde
<DriveLetter>
representa la letra de unidad asociada al archivo ISO montadoMueva boot.wim e install.wim de la carpeta
c:\MediaRefresh\Out\Sources
ac:\MediaRefresh\WIM
, la carpeta de trabajo para actualizar los archivos WIM, usando Robocopy.robocopy c:\mediarefresh\out\sources c:\MediaRefresh\WIM *.wim /Mov
Proceda al siguiente paso si no ha montado una ISO para el comando anterior, de lo contrario, primero debe desmontar la ISO de instalación de Windows IoT Enterprise usando Dismount-Diskimage
Dismount-DiskImage -ImagePath <ISO Path>
Donde
<ISO Path>
es una ruta de acceso completa al archivo ISO.
Recopilación de paquetes de mantenimiento
Descargue el archivo de Actualización de mantenimiento acumulativa de Microsoft (MSU) más reciente en la carpeta
c:\MediaRefresh\Packages\LCU
.Si se requiere una dependencia de Actualización de pila de mantenimiento (MSU), descárguela en la carpeta
c:\MediaRefresh\Packages\SSU
. Use la tabla siguiente para ayudarle a localizar las actualizaciones de su versión específica de Windows IoT Enterprise.Versión Versión Historial de actualizaciones Catálogo de actualizaciones Windows 11 IoT Enterprise LTSC 2024 [24H2] 26100 Mostrar historial de actualizaciones Mostrar actualizaciones de x64
Mostrar actualizaciones de Arm64Windows 10 IoT Enterprise LTSC 2021 19044 Mostrar historial de actualizaciones Mostrar actualizaciones de x64
Mostrar actualizaciones de Arm64Windows 10 IoT Enterprise LTSC 2019 17763 Mostrar historial de actualizaciones Mostrar actualizaciones de x64
Mostrar actualizaciones de Arm64Windows 10 IoT Enterprise LTSC 2016 14393 Mostrar historial de actualizaciones Mostrar actualizaciones de x64
Mostrar actualizaciones de x86Windows 10 IoT Enterprise LTSC 2015 10240 Mostrar historial de actualizaciones Mostrar actualizaciones de x64
Mostrar actualizaciones de x86[Opcional] Recopilación de controladores de terceros
Coloque los controladores de terceros necesarios para el dispositivo en un formato sin comprimir en la raíz de la carpetac:/MediaRefresh/drivers
o como subcarpetas enc:/MediaRefresh/drivers
.[Opcional] Recopilación de scripts de configuración
Coloque los scripts personalizadosSetupcomplete.cmd
yErrorHandler.cmd
que se ejecutan durante o después del proceso de instalación de Windows en la carpetac:\MediaRefresh\Scripts
.Para más información, vea Agregar un script personalizado a la instalación de Windows.
Actualizar entorno de preinstalación de Windows (WinPE)
El Entorno de preinstalación de Windows (WinPE) se encuentra en boot.wim
en los medios de instalación original en la carpeta \sources
. En esta sección, se explica el proceso de actualización de boot.wim
con la actualización de mantenimiento acumulativa más reciente e incorporamos controladores de terceros si es necesario en el entorno de WinPE mediante el entorno de mantenimiento de medios.
Montaje de WinPE boot.wim
El primer paso para actualizar el entorno de WinPE es crear una carpeta temporal denominada
mounted
enc:\mediarefresh
con el comando New-Item de PowerShell.MD c:\MediaRefresh\mounted
Para poder actualizar
boot.wim
, es necesario asegurarse de que su atributo de archivo no está establecido en ReadOnly. Use el comando de PowerShell Set-ItemProperty para quitar el atributo ReadOnly.Set-ItemProperty -Path "c:\mediarefresh\wim\boot.wim" -Name IsReadOnly -Value $false
Ahora podemos montar la imagen de WinPE almacenada en
boot.wim
en el índice 2 mediante el comando de PowerShell Mount-WindowsImage.Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\boot.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
El contenido de la imagen WinPE almacenada en
boot.wim
en el índice 2 es ahora visible enc:\mediarefresh\mounted
.
Aplicación de controladores de terceros a WinPE
Instale los controladores de terceros que ha agregado en la carpeta dec:\mediarefresh\drivers
en WinPE enc:\mediarefresh\mounted
usando el comando de PowerShell Add-WindowsDriver.Nota:
Con fines de prueba, puede usar
-ForceUnsigned
para agregar controladores sin firmar e invalidar el requisito de que los controladores deben tener una firma digital. Para más información sobre los requisitos de firma de controladores, consulte Introducción a los controladores de dispositivos y la implementación.Add-WindowsDriver -Path "c:\mediarefresh\Mounted" -Driver "c:\mediarefresh\drivers" -Recurse
Aplicación de actualizaciones de mantenimiento a WinPE
Aplique la actualización acumulativa más reciente y sus dependencias que descargó en la carpetac:\mediarefresh\packages
a WinPE enc:\mediarefresh\mounted
usando el comando de PowerShell Add-WindowsPackage. Este proceso tardará varios minutos en completarse, pero garantiza que la imagen de Windows ya tenga aplicada la actualización de mantenimiento más reciente.En primer lugar, aplique la dependencia de actualización de la pila de mantenimiento.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
Ahora aplique la actualización acumulativa más reciente.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU"
Sugerencia
Si se produce un error 0x800f0823, la actualización de mantenimiento puede tener una dependencia que se debe aplicar primero. Si ya ha descargado su dependencia, intente ejecutar el Add-WindowsPackage anterior una segunda vez. Si esto no resuelve el problema, es posible que tenga que descargar otro requisito previo para la actualización.
- Tome nota del KB####### en el nombre de archivo de la actualización en c:\mediarefresh\packages.
- Busque support.microsoft.com con el KB#######
- Abra el primer tema que coincida y busque el término "requisito previo".
- Descargue los requisitos previos mencionados y vuelva a ejecutar el comando Add-WindowsPackage anterior. Tenga en cuenta que es posible que tenga que ejecutar el comando dos veces para permitir que se aplique el requisito previo primero.
- Continúe con el paso siguiente una vez resuelto el error.
Copiar
Setup.exe
ysetuphost.exe
actualizados Antes de continuar copiando elsetup.exe
actualizado ysetuphost.exe
de WinPE enc:\mediarefresh\mounted\sources
ac:\mediarefresh\out\sources
mediante Robocopy.En primer lugar, es necesario quitar el atributo ReadOnly en
c:\mediarefresh\mounted\sources\setup.exe
yc:\mediarefresh\mounted\sources\setuphost.exe
mediante el comando set-ItemProperty de PowerShell.Set-ItemProperty -Path "c:\mediarefresh\out\sources\setup.exe" -Name IsReadOnly -Value $false Set-ItemProperty -Path "c:\mediarefresh\out\sources\setuphost.exe" -Name IsReadOnly -Value $false
Ahora podemos copiar
setup.exe
ysetuphost.exe
dec:\mediarefresh\mounted\sources
ac:\mediarefresh\out\sources
mediante Robocopy.robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setup.exe robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setuphost.exe
Desmontar y guardar los cambios en WinPE
Para completar el proceso de mantenimiento, use el comando de PowerShell Dismount-WindowsImage para guardar los cambios.
Importante
Antes de ejecutar el comando
Dismount-WindowsImage
, asegúrese de no tener ninguna vista del Explorador de archivos ni ventanas de comandos que vean el contenido dec:\mediarefresh\mounted
. Si no lo hace, se produce un error al intentar desmontar.Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
Eliminar carpeta temporal
Después de desmontar correctamente el archivo boot.wim, ahora podemos quitar la carpeta temporal
c:\mediarefresh\mounted
mediante el comando Remove-Item de PowerShell.RD c:\MediaRefresh\mounted
Publique
Boot.wim
en la carpetaout
Ahora copie el
boot.wim
actualizado dec:\mediarefresh\wim
ac:\mediarefresh\out\sources
mediante robocopy.robocopy c:\mediarefresh\wim c:\mediarefresh\out\sources boot.wim
El entorno de preinstalación de Windows (WinPE) almacenado como boot.wim
y setup.exe
, ambos ubicados en c:\mediarefresh\out\sources\
, están totalmente actualizados.
Actualización de Windows IoT Enterprise
La imagen de Windows IoT Enterprise se encuentra en install.wim
en los medios de instalación originales en la carpeta \sources
. En la sección Preparar el entorno de mantenimiento de medios, trasladamos install.wim
a una carpeta de trabajo. En esta sección, recorremos el proceso de actualización del install.wim
con la actualización acumulativa de mantenimiento más reciente e incorporamos controladores de terceros si el dispositivo de destino los necesita usando el Entorno de mantenimiento de medios. Una vez completada la actualización, divida el install.wim
en archivos *.swm
más pequeños para poder copiarlos en una unidad flash con formato FAT32.
Montaje del sistema operativo install.wim
El primer paso para actualizar el entorno de WinPE es crear una carpeta temporal denominada
mounted
enc:\mediarefresh
con el comando New-Itemde PowerShell.MD c:\MediaRefresh\mounted
Para poder actualizar install.wim, es necesario asegurarse de que su atributo de archivo no está establecido en ReadOnly. Use el comando de PowerShell Set-ItemProperty para quitar el atributo ReadOnly.
Set-ItemProperty -Path "c:\mediarefresh\wim\install.wim" -Name IsReadOnly -Value $false
Ahora podemos montar la imagen de Windows IoT Enterprise almacenada en install.wim en el índice 2 mediante el comando de PowerShell Mount-WindowsImage.
Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
El contenido del almacén de imágenes de Windows IoT Enterprise en install.wim en el índice 2 ahora se puede ver en
c:\mediarefresh\mounted
.
Instalación de controladores de terceros
Instale los controladores de terceros que ha agregado en la imagen de sistema operativo dec:\mediarefresh\drivers
en WinPE enc:\mediarefresh\mounted
usando el comando de PowerShell Add-WindowsDriver. El parámetro-recurse
habilita el procesamiento de subcarpetas.Add-WindowsDriver -Path "c:\mediarefresh\mounted" -Driver "c:\mediarefresh\drivers" -Recurse
Nota:
Con fines de prueba, puede usar
-ForceUnsigned
para agregar controladores sin firmar e invalidar el requisito de que los controladores deben tener una firma digital. Para más información sobre los requisitos de firma de controladores, consulte Introducción a los controladores de dispositivos y la implementación.Agregar scripts de instalación personalizados
Antes de agregar scripts de instalación personalizados a la imagen del sistema operativo, cree primero una carpeta
scripts
enc:\mediarefresh\mounted\windows\setup\
mediante el comando New-Item de PowerShell.MD c:\mediarefresh\mounted\windows\setup\scripts
Copie scripts de
c:\mediarefresh\scripts
ac:\mediarefresh\mounted\windows\setup\scripts
mediante Robocopy.robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd
Aplicación de paquetes de mantenimiento a la imagen del sistema operativo
Aplique la actualización acumulativa más reciente y sus dependencias que descargó en la carpetac:\mediarefresh\packages
a WinPE enc:\mediarefresh\mounted
usando el comando de PowerShell Add-WindowsPackage.En primer lugar, aplique la dependencia de actualización de la pila de mantenimiento.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
Ahora aplique la actualización acumulativa más reciente.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU"
Sugerencia
Si se produce un error 0x800f0823, la actualización de mantenimiento puede tener una dependencia que se debe aplicar primero. Si ya ha descargado su dependencia, intente ejecutar el comando anterior Add-WindowsPackage una segunda vez. Si esto no resuelve el problema, es posible que tenga que descargar otro requisito previo para la actualización.
- Tome nota del KB####### en el nombre de archivo de la actualización en c:\mediarefresh\packages.
- Busque support.microsoft.com con el KB#######
- Abra el primer tema que coincida y busque el término "requisito previo".
- Descargue los requisitos previos mencionados y vuelva a ejecutar el comando anterior. Tenga en cuenta que es posible que tenga que ejecutar el comando dos veces para permitir que se aplique el requisito previo primero.
- Continúe con el paso siguiente una vez resuelto el error.
Guardar y desmontar install.wim actualizado
Para completar el proceso de mantenimiento, use el comando de PowerShell Dismount-WindowsImage para guardar los cambios.Importante
Antes de ejecutar el comando
Dismount-WindowsImage
, asegúrese de no tener ninguna vista del Explorador de archivos ni ventanas de comandos que vean el contenido dec:\mediarefresh\mounted
. Si no lo hace, se produce un error al intentar desmontar.Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
Eliminar carpeta temporal
mounted
Después de desmontar correctamente el archivo boot.wim, ahora podemos quitar la carpeta temporalc:\mediarefresh\mounted
mediante el comando Remove-Item de PowerShell.RD c:\mediarefresh\mounted
Dividir WIM para admitir el sistema de archivos FAT32
Para asegurarse de que el nuevo archivo install.wim se ajusta a medios flash con formato FAT32, que tiene un tamaño máximo de archivo de 4 GB, divida el archivo de imagen de Windows (install.wim) en un conjunto de archivos más pequeños (.swm) con un tamaño máximo de 4000 MB mediante el comando de PowerShell Split-WindowsImage. Los archivos*.swm
resultantes se escriben en la carpetac:\mediarefresh\out\sources
.Split-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -SplitImagePath "c:\mediarefresh\out\sources\install.swm" -FileSize 4000 -CheckIntegrity
La imagen de instalación del sistema operativo, que originalmente se almacena como install.wim
, ahora se almacena en c:\mediarefresh\out\sources\
como install.swm
y install2.swm
, que la configuración usa como si fueran el install.wim
original.
Copia de medios actualizados en la unidad flash
Si no ha creado una unidad flash de arranque, hágalo antes de continuar siguiendo los pasos para Instalar Windows desde una unidad flash.
El último paso para crear los medios de instalación actualizados es copiar el contenido de c:\mediarefresh\out
en la unidad flash de arranque mediante Robocopy.
robocopy c:\mediarefresh\out <DriveLetter>:\ /e
Donde <DriveLetter>
es la letra de unidad asociada a la unidad flash.
Instalación de Windows en el nuevo dispositivo
Conecte la unidad flash al dispositivo de destino.
Active el dispositivo y presione la tecla que abre el menú de selección del dispositivo de arranque para el equipo, como las teclas Esc/F10/F12. Seleccione la opción que arranca el dispositivo desde la unidad flash.
Se inicia el programa de instalación de Windows. Siga las instrucciones para instalar Windows.
Sugerencia
Es posible que deba consultar las instrucciones del fabricante del dispositivo para configurarla para arrancar desde la unidad flash si este proceso no funciona en el dispositivo.
Una vez completada la fase inicial del programa de instalación y se reinicia el dispositivo, el programa de instalación puede empezar de nuevo desde el principio. Si el programa de instalación se inicia de nuevo, cancele el programa de instalación y apague el equipo, quite la unidad flash y active el dispositivo para continuar con la siguiente fase de configuración.
Sugerencia
Si, por algún motivo, se produce un error durante el proceso de instalación, consulte los siguientes artículos para obtener instrucciones para la solución de problemas.
Script completo
Esta sección contiene un script completo que realiza cada uno de los pasos de mantenimiento de medios de forma sucesiva. Antes de usar este script, debe completar la sección Preparar el entorno de servicio de medios de este artículo. Cuando esté listo, copie el siguiente script de PowerShell en 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