Compartir a través de


Actualizar medios de instalación de IoT Enterprise

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

  1. 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
  2. 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.wim

    md 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
    
  3. Copia de archivos desde medios originales
    Copie todos los archivos de los medios de instalación originales en c:\MediaRefresh\Out.

    1. 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 ISO

      Tome nota de DriveLetter, ya que necesitaremos usarlo en el paso siguiente.

    2. Copie los archivos del medio de instalación original que se indica aquí en la carpeta <DriveLetter> a c:\MediaRefresh\Out usando Robocopy.

      robocopy <DriveLetter>:\ c:\MediaRefresh\Out /Copy:DT /e
      

      Donde <DriveLetter> representa la letra de unidad asociada al archivo ISO montado

    3. Mueva boot.wim e install.wim de la carpeta c:\MediaRefresh\Out\Sources a c:\MediaRefresh\WIM, la carpeta de trabajo para actualizar los archivos WIM, usando Robocopy.

      robocopy c:\mediarefresh\out\sources c:\MediaRefresh\WIM *.wim /Mov
      
    4. 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.

  4. 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 Arm64
    Windows 10 IoT Enterprise LTSC 2021 19044 Mostrar historial de actualizaciones Mostrar actualizaciones de x64
    Mostrar actualizaciones de Arm64
    Windows 10 IoT Enterprise LTSC 2019 17763 Mostrar historial de actualizaciones Mostrar actualizaciones de x64
    Mostrar actualizaciones de Arm64
    Windows 10 IoT Enterprise LTSC 2016 14393 Mostrar historial de actualizaciones Mostrar actualizaciones de x64
    Mostrar actualizaciones de x86
    Windows 10 IoT Enterprise LTSC 2015 10240 Mostrar historial de actualizaciones Mostrar actualizaciones de x64
    Mostrar actualizaciones de x86
  5. [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 carpeta c:/MediaRefresh/drivers o como subcarpetas en c:/MediaRefresh/drivers.

  6. [Opcional] Recopilación de scripts de configuración
    Coloque los scripts personalizados Setupcomplete.cmd y ErrorHandler.cmd que se ejecutan durante o después del proceso de instalación de Windows en la carpeta c:\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.

  1. Montaje de WinPE boot.wim

    1. El primer paso para actualizar el entorno de WinPE es crear una carpeta temporal denominada mounted en c:\mediarefresh con el comando New-Item de PowerShell.

      MD c:\MediaRefresh\mounted
      
    2. 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
      
    3. 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"
      
    4. El contenido de la imagen WinPE almacenada en boot.wim en el índice 2 es ahora visible en c:\mediarefresh\mounted.

  2. Aplicación de controladores de terceros a WinPE
    Instale los controladores de terceros que ha agregado en la carpeta de c:\mediarefresh\drivers en WinPE en c:\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
    
  3. Aplicación de actualizaciones de mantenimiento a WinPE
    Aplique la actualización acumulativa más reciente y sus dependencias que descargó en la carpeta c:\mediarefresh\packages a WinPE en c:\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.

    1. 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"
      
    2. 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.
  4. Copiar Setup.exe y setuphost.exe actualizados Antes de continuar copiando el setup.exe actualizado y setuphost.exe de WinPE en c:\mediarefresh\mounted\sources a c:\mediarefresh\out\sources mediante Robocopy.

    1. En primer lugar, es necesario quitar el atributo ReadOnly en c:\mediarefresh\mounted\sources\setup.exe y c:\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
      
    2. Ahora podemos copiar setup.exe y setuphost.exe de c:\mediarefresh\mounted\sources a c:\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
      
  5. 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 de c:\mediarefresh\mounted. Si no lo hace, se produce un error al intentar desmontar.

    Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
    
  6. 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
    
  7. Publique Boot.wim en la carpeta out

    Ahora copie el boot.wim actualizado de c:\mediarefresh\wim a c:\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.

  1. Montaje del sistema operativo install.wim

    1. El primer paso para actualizar el entorno de WinPE es crear una carpeta temporal denominada mounted en c:\mediarefresh con el comando New-Itemde PowerShell.

      MD c:\MediaRefresh\mounted
      
    2. 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
      
    3. 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"
      
    4. 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.

  2. Instalación de controladores de terceros
    Instale los controladores de terceros que ha agregado en la imagen de sistema operativo de c:\mediarefresh\drivers en WinPE en c:\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.

  3. Agregar scripts de instalación personalizados

    1. Antes de agregar scripts de instalación personalizados a la imagen del sistema operativo, cree primero una carpeta scripts en c:\mediarefresh\mounted\windows\setup\ mediante el comando New-Item de PowerShell.

      MD c:\mediarefresh\mounted\windows\setup\scripts
      
    2. Copie scripts de c:\mediarefresh\scripts a c:\mediarefresh\mounted\windows\setup\scripts mediante Robocopy.

      robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd
      
  4. 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 carpeta c:\mediarefresh\packages a WinPE en c:\mediarefresh\mounted usando el comando de PowerShell Add-WindowsPackage.

    1. 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"
      
    2. 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.
  5. 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 de c:\mediarefresh\mounted. Si no lo hace, se produce un error al intentar desmontar.

    Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
    
  6. Eliminar carpeta temporal mounted
    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
    
  7. 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 carpeta c:\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

  1. Conecte la unidad flash al dispositivo de destino.

  2. 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.

  3. 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

Otros recursos