Partager via


Actualiser le support d'installation IoT Enterprise

Dans cet article, vous configurez votre environnement d’actualisation des supports et réunissez toutes les conditions préalables requises pour mettre à jour l’environnement WinPE et le système d’exploitation principal et installer les pilotes

Préparer l'environnement de service multimédia

  1. Démarrez PowerShell avec les privilèges d’administrateur.
    Nous utilisons cette instance de PowerShell pour le processus de bout en bout de maintenance du support d’installation afin d’appliquer les mises à jour et, si nécessaire, d’incorporer les pilotes requis qui ne font pas partie du support d’installation Windows

    • Sélectionnez Démarrer
    • Tapez PowerShell
    • Cliquez avec le bouton droit sur Windows PowerShell
    • Sélectionnez Exécuter en tant qu'administrateur
  2. Créer des dossiers pour stocker des fichiers pendant la maintenance du support
    Utilisez la commande PowerShell New_Item pour créer les dossiers suivants sur votre PC de technicien afin de stocker les fichiers nécessaires pendant la maintenance du support.

    c:\MediaRefresh : Dossier parent pour stocker les fichiers pendant la maintenance multimédia.
    c:\MediaRefresh\Out : Copie du support original mis à jour lors de la maintenance.
    c:\MediaRefresh\Packages\LCU : Dernière mise à jour cumulative c:\MediaRefresh\Packages\SSU : Mise à jour de la pile de maintenance si nécessaire
    c:\MediaRefresh\Drivers : pilotes tiers.
    c:\MediaRefresh\Scripts : Scripts d'installation personnalisés. c:\MediaRefresh\WIM : Répertoire de travail pour la mise à jour de boot.wim et 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. Copier des fichiers à partir d’un support d’origine
    Copiez tous les fichiers du support d’installation d’origine vers c:\MediaRefresh\Out.

    1. Passez à l’étape b. si vous disposez d’un support physique, sinon vous devez d’abord monter l’ISO d’installation de Windows IoT Enterprise à l’aide de Mount-DiskImage et afficher la lettre de lecteur monté résultant à l’aide de Get-Volume.

      Mount-DiskImage -ImagePath <ISO Path> | Get-Volume
      

      <ISO Path> se trouve un chemin complet vers votre ISO

      Notez la DriveLetter car nous devrons l’utiliser à l’étape suivante.

    2. Copiez les fichiers du support d'installation d'origine indiqué ici dans le dossier <DriveLetter> à l'aide c:\MediaRefresh\Out de Robocopy.

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

      <DriveLetter> est la lettre de lecteur associée au fichier ISO monté

    3. Déplacez boot.wim et install.wim du c:\MediaRefresh\Out\Sources vers le dossier c:\MediaRefresh\WIM, le dossier de travail pour la mise à jour des fichiers WIM, à l’aide de Robocopy.

      robocopy c:\mediarefresh\out\sources c:\MediaRefresh\WIM *.wim /Mov
      
    4. Passez à l'étape suivante si vous n'avez pas monté d'ISO pour la commande précédente, sinon vous devez d'abord démonter l'ISO d'installation de Windows IoT Enterprise à l'aide de Dismount-Diskimage

      Dismount-DiskImage -ImagePath <ISO Path>  
      

      <ISO Path> se trouve un chemin complet vers votre fichier ISO.

  4. Rassembler des packages de maintenance

    Téléchargez le fichier de la dernière Microsoft Servicing Update (MSU) cumulative dans le dossier c:\MediaRefresh\Packages\LCU.

    Si une dépendance de la mise à jour de la pile de maintenance (MSU) est requise, téléchargez-la dans le dossier c:\MediaRefresh\Packages\SSU. Utilisez le tableau suivant pour vous aider à localiser les mises à jour de votre version spécifique de Windows IoT Entreprise.

    Version release Version Historique de mise à jour Catalogue des mises à jour
    Windows 11 IoT Enterprise LTSC 2024 [24H2] 26100 Afficher l’historique des mises à jour Afficher les mises à jour x64 Afficher les mises à
    jour Arm64
    Windows 10 IoT Entreprise LTSC 2021 19044 Afficher l’historique des mises à jour Afficher les mises à jour x64 Afficher les mises à
    jour ARM64
    Windows 10 IoT Enterprise LTSC 2019 17763 Afficher l’historique des mises à jour Afficher les mises à jour x64 Afficher les mises à
    jour ARM64
    Windows 10 IoT Entreprise LTSC 2016 14393 Afficher l’historique des mises à jour Afficher les mises à jour
    x64 Afficher les mises à jour x86
    Windows 10 IoT Entreprise LTSC 2015 10240 Afficher l’historique des mises à jour Afficher les mises à jour
    x64 Afficher les mises à jour x86
  5. [Facultatif] Collecter des pilotes tiers
    Placez les pilotes tiers requis pour votre appareil dans un format non compressé à la racine du dossier c:/MediaRefresh/drivers ou en tant que sous-dossiers dans c:/MediaRefresh/drivers.

  6. [Facultatif] Collecter des scripts de configuration
    Placez vos scripts personnalisés Setupcomplete.cmd et ErrorHandler.cmd qui s’exécutent pendant ou après le processus d’installation de Windows dans le dossier c:\MediaRefresh\Scripts.

    Pour plus d’informations, consultez Ajouter un script personnalisé à l’installation de Windows

Mettre à jour l'environnement de préinstallation Windows (WinPE)

L’environnement de préinstallation Windows (WinPE) est contenu dans boot.wim sur le support d’installation d’origine sous le dossier \sources. Dans cette section, nous décrivons le processus de mise à jour du boot.wim avec la dernière mise à jour de maintenance cumulative et nous incorporons des pilotes tiers si nécessaire dans l’environnement WinPE à l’aide de l’Environnement de maintenance du support(Media Servicing Environment).

  1. Monter le boot.wim WinPE

    1. La première étape de la mise à jour de l’environnement WinPE consiste à créer un dossier temporaire nommé mounted sous c:\mediarefresh à l’aide de la commande PowerShell New-Item

      MD c:\MediaRefresh\mounted
      
    2. Avant de pouvoir mettre à jour le boot.wim, nous devons nous assurer que son attribut de fichier n’est pas défini sur ReadOnly. Utilisez la commande PowerShell Set-ItemProperty pour supprimer l’attribut ReadOnly.

      Set-ItemProperty -Path "c:\mediarefresh\wim\boot.wim" -Name IsReadOnly -Value $false
      
    3. Nous pouvons maintenant monter l’image WinPE stockée dans boot.wim à l’index 2 à l’aide de la commande PowerShell Mount-WindowsImage

      Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\boot.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
      
    4. Le contenu de l’image WinPE stockée dans boot.wim à l’index 2 est désormais visible dans c:\mediarefresh\mounted.

  2. Appliquer des pilotes tiers à WinPE
    Installez les pilotes tiers que vous avez collectés dans le dossier c:\mediarefresh\drivers sur WinPE dans c:\mediarefresh\mounted à l’aide de la commande PowerShell Add-WindowsDriver.

    Remarque

    À des fins de test, vous pouvez utiliser -ForceUnsigned pour ajouter des pilotes non signés et remplacer l’exigence de signature numérique des pilotes. Pour plus d’informations sur les exigences en matière de signature des pilotes, consultez Vue d’ensemble des pilotes de périphérique et du déploiement.

    Add-WindowsDriver -Path "c:\mediarefresh\Mounted" -Driver "c:\mediarefresh\drivers" -Recurse
    
  3. Appliquer des mises à jour de maintenance à WinPE
    Appliquez la dernière mise à jour cumulative et ses dépendances que vous avez téléchargées dans le dossier c:\mediarefresh\packages sur WinPE dans c:\mediarefresh\mounted à l’aide de la commande PowerShell Add-WindowsPackage. Ce processus peut prendre plusieurs minutes, mais il garantit que votre image Windows dispose déjà de la dernière mise à jour de maintenance appliquée.

    1. Tout d’abord, appliquez la dépendance de mise à jour de la pile de maintenance.

      Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
      
    2. Appliquez maintenant la dernière mise à jour cumulative.

      Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU"
      

    Conseil

    Si vous rencontrez une erreur 0x800f0823, votre mise à jour de maintenance peut avoir une dépendance qui doit être appliquée en premier. Si vous avez déjà téléchargé sa dépendance, essayez d’exécuter la commande ci-dessus une seconde fois. Si cela ne résout pas le problème, vous devrez peut-être télécharger un prérequis supplémentaire pour votre mise à jour.

    • Notez le KB####### dans le nom de fichier de la mise à jour dans c:\mediarefresh\packages.
    • Faites des recherches sur support.microsoft.com/fr-FR avec le KB#######
    • Ouvrez la première rubrique qui correspond et recherchez le terme « prérequis » (prerequisite).
    • Téléchargez toutes les conditions préalables mentionnées et réexécutez la commande ci-dessus. Notez qu’il se peut que vous deviez exécuter la commande deux fois pour que le prérequis soit appliqué en premier.
    • Passez à l’étape suivante une fois l’erreur résolue.
  4. Copier un Setup.exe mis à jour
    Avant de continuer à copier le setup.exe mis à jour de WinPE dans c:\mediarefresh\mounted\sources vers c:\mediarefresh\out\sources à l’aide de Robocopy.

    1. Tout d’abord, nous devons supprimer l’attribut ReadOnly sur c:\mediarefresh\mounted\sources\setup.exe à l’aide de la commande PowerShell Set-ItemProperty.

      Set-ItemProperty -Path "c:\mediarefresh\out\sources\setup.exe" -Name IsReadOnly -Value $false
      
    2. À présent, nous pouvons copier setup.exe depuis c:\mediarefresh\mounted\sources dans c:\mediarefresh\out\sources à l’aide de Robocopy.

      robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setup.exe
      
  5. Démonter et enregistrer les modifications apportées à WinPE

    Pour terminer le processus de maintenance, utilisez la commande PowerShell Dismount-WindowsImage pour enregistrer les modifications.

    Important

    Avant d’exécuter la commande Dismount-WindowsImage, vérifiez que vous n’avez pas d’affichages Explorateur de fichiers ou de fenêtres de commande qui affichent le contenu sous c:\mediarefresh\mounted. Dans le cas contraire, une erreur se produira lors de la tentative de démontage.

    Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
    
  6. Supprimer un dossier temporaire

    Une fois le démontage du boot.wim réussi, nous pouvons supprimer le dossier temporaire c:\mediarefresh\mounted à l’aide de la commande PowerShell Remove-Item

    RD c:\MediaRefresh\mounted
    
  7. Publier Boot.wim dans le dossier out

    Copiez maintenant le boot.wim mis à jour depuis c:\mediarefresh\wim vers c:\mediarefresh\out\sources à l’aide de Robocopy.

    robocopy c:\mediarefresh\wim c:\mediarefresh\out\sources boot.wim
    

L’environnement de préinstallation de Windows (WinPE) stocké comme boot.wim et setup.exe tous deux situés sous c:\mediarefresh\out\sources\ sont entièrement mis à jour.

Mettre à jour Windows IoT Entreprise

L’image Windows IoT Entreprise est contenue dans install.wim sur le support d’installation d’origine sous le dossier \sources. Dans la section Préparer l’environnement de maintenance du support, nous avons déplacé install.wim dans un dossier de travail. Dans cette section, nous décrivons le processus de mise à jour du install.wim avec la dernière mise à jour cumulative et nous incorporons des pilotes tiers si le périphérique cible en a besoin à l’aide de l’Environnement de maintenance du support. Une fois la mise à jour terminée, fractionnez les install.wim en fichiers *.swm plus petits afin qu’ils puissent être copiés sur un lecteur USB formaté en FAT32.

  1. Monter l’install.wim du système d’exploitation

    1. La première étape de la mise à jour de l’environnement WinPE consiste à créer un dossier temporaire nommé mounted sous c:\mediarefresh à l’aide de la commande PowerShell New-Item.

      MD c:\MediaRefresh\mounted
      
    2. Avant de pouvoir mettre à jour l’install.wim, nous devons nous assurer que son attribut de fichier n’est pas défini sur ReadOnly. Utilisez la commande PowerShell Set-ItemProperty pour supprimer l’attribut ReadOnly.

      Set-ItemProperty -Path "c:\mediarefresh\wim\install.wim" -Name IsReadOnly -Value $false
      
    3. Nous pouvons maintenant monter l’image Windows IoT Entreprise stockée dans install.wim à l’index 2 à l’aide de la commande PowerShell Mount-WindowsImage

      Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
      
    4. Le contenu du magasin d’images Windows IoT Entreprise dans install.wim à l’index 2 est désormais consultable sur c:\mediarefresh\mounted.

  2. Installer des pilotes tiers
    Installez des pilotes tiers que vous avez collectés dans le dossier c:\mediarefresh\drivers sur l’image du système d’exploitation dans c:\mediarefresh\mounted à l’aide de la commande PowerShell Add-WindowsDriver. Le paramètre -recurse active le traitement des sous-dossiers.

    Add-WindowsDriver -Path "c:\mediarefresh\mounted" -Driver "c:\mediarefresh\drivers" -Recurse 
    

    Remarque

    À des fins de test, vous pouvez utiliser -ForceUnsigned pour ajouter des pilotes non signés et remplacer l’exigence de signature numérique des pilotes. Pour plus d’informations sur les exigences en matière de signature des pilotes, consultez Vue d’ensemble des pilotes de périphérique et du déploiement.

  3. Ajouter des scripts d’installation personnalisés

    1. Avant d’ajouter des scripts d’installation personnalisés à l’image du système d’exploitation, commencez par créer un dossier scripts sous c:\mediarefresh\mounted\windows\setup\ à l’aide de la commande PowerShell New-Item.

      MD c:\mediarefresh\mounted\windows\setup\scripts
      
    2. Copiez les scripts de c:\mediarefresh\scripts dans c:\mediarefresh\mounted\windows\setup\scripts à l’aide de Robocopy.

      robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd
      
  4. Appliquer des packages de maintenance à l’image du système d’exploitation
    Appliquez la dernière mise à jour cumulative et ses dépendances que vous avez téléchargées dans le dossier c:\mediarefresh\packages sur WinPE dans c:\mediarefresh\mounted à l’aide de la commande PowerShell Add-WindowsPackage.

    1. Tout d’abord, appliquez la dépendance de mise à jour de la pile de maintenance.

      Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
      
    2. Appliquez maintenant la dernière mise à jour cumulative.

      Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU"
      

    Conseil

    Si vous rencontrez une erreur 0x800f0823, votre mise à jour de maintenance peut avoir une dépendance qui doit être appliquée en premier. Si vous avez déjà téléchargé sa dépendance, essayez d’exécuter la commande ci-dessus une seconde fois. Si cela ne résout pas le problème, vous devrez peut-être télécharger un prérequis supplémentaire pour votre mise à jour.

    • Notez le KB####### dans le nom de fichier de la mise à jour dans c:\mediarefresh\packages.
    • Faites des recherches sur support.microsoft.com/fr-FR avec le KB#######
    • Ouvrez la première rubrique qui correspond et recherchez le terme « prérequis » (prerequisite).
    • Téléchargez toutes les conditions préalables mentionnées et réexécutez la commande ci-dessus. Notez qu’il se peut que vous deviez exécuter la commande deux fois pour que le prérequis soit appliqué en premier.
    • Passez à l’étape suivante une fois l’erreur résolue.
  5. Enregistrer et démonter le install.wim mis à jour
    Pour terminer le processus de maintenance, utilisez la commande PowerShell Dismount-WindowsImage pour enregistrer les modifications.

    Important

    Avant d’exécuter la commande Dismount-WindowsImage, vérifiez que vous n’avez pas d’affichages Explorateur de fichiers ou de fenêtres de commande qui affichent le contenu sous c:\mediarefresh\mounted. Dans le cas contraire, une erreur se produira lors de la tentative de démontage.

    Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
    
  6. Supprimer un mounted de dossier temporaire
    Une fois le démontage du boot.wim réussi, nous pouvons supprimer le dossier temporaire c:\mediarefresh\mounted à l’aide de la commande PowerShell Remove-Item

    RD c:\mediarefresh\mounted
    
  7. Fractionner un WIM pour prendre en charge le système de fichiers FAT32
    Pour vous assurer que le nouveau install.wim s’adapte au support USB formaté en FAT32, qui a une taille de fichier maximale de 4 Go, vous fractionnez le fichier Image Windows (install.wim) en un ensemble de fichiers plus petits (.swm) dont la taille maximale est de 4000 Mo à l’aide de la commande PowerShell Split-WindowsImage. Les fichiers *.swm résultants sont écrits dans le dossier c:\mediarefresh\out\sources.

    Split-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -SplitImagePath "c:\mediarefresh\out\sources\install.swm" -FileSize 4000 -CheckIntegrity
    

L’image d’installation du système d’exploitation, stockée à l’origine comme install.wim, est maintenant stockée sous c:\mediarefresh\out\sources\ en tant que install.swm et install2.swm, que le programme d’installation utilise comme s’il s’agissait du install.wim d’origine.

Copier le support mis à jour sur le lecteur USB

Si vous n’avez pas créé de lecteur USB démarrable, effectuez cette opération avant de continuer en suivant les étapes d’Installation de Windows à partir d’un lecteur USB.

La dernière étape de la création de votre support d’installation mis à jour consiste à copier le contenu de c:\mediarefresh\out sur votre lecteur USB démarrable à l’aide de Robocopy.

robocopy c:\mediarefresh\out <DriveLetter>:\ /e

<DriveLetter> est la lettre de lecteur associée à votre lecteur USB

Installer Windows sur le nouvel appareil

  1. Connectez le lecteur USB sur votre périphérique cible.

  2. Activez l’appareil et appuyez sur la touche qui ouvre le menu de sélection de l’appareil de démarrage pour l’ordinateur, par exemple les touches Échap/F10/F12. Sélectionnez l’option qui démarre l’appareil à partir du lecteur USB.

    L’installation de Windows démarre. Suivez les instructions pour installer Windows

    Conseil

    Vous devrez peut-être consulter les instructions du fabricant de l’appareil pour le configurer de manière à ce qu’il démarre à partir du lecteur USB si ce processus ne fonctionne pas sur votre appareil.

  3. Une fois la phase initiale de l'installation terminée et votre appareil redémarré, l'installation peut recommencer depuis le début. Si l’installation redémarre, annulez-la et éteignez l’ordinateur, puis retirez le lecteur USB et allumez l’appareil pour passer à la phase suivante de l’installation.

    Conseil

    Si, pour une raison quelconque, vous rencontrez une erreur pendant le processus d'installation, veuillez consulter les articles suivants pour obtenir des conseils de dépannage.

Script complet

Cette section contient un script complet qui exécute automatiquement et successivement chacune des étapes de maintenance du support. Avant d'utiliser ce script, vous devez compléter la section Préparer l'environnement de maintenance multimédia de cet article. Une fois que vous êtes prêt, copiez le script PowerShell suivant dans 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

Autres ressources