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
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
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.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
Copier des fichiers à partir d’un support d’origine
Copiez tous les fichiers du support d’installation d’origine versc:\MediaRefresh\Out
.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
Où
<ISO Path>
se trouve un chemin complet vers votre ISONotez la DriveLetter car nous devrons l’utiliser à l’étape suivante.
Copiez les fichiers du support d'installation d'origine indiqué ici dans le dossier
<DriveLetter>
à l'aidec:\MediaRefresh\Out
de Robocopy.robocopy <DriveLetter>:\ c:\MediaRefresh\Out /Copy:DT /e
Où
<DriveLetter>
est la lettre de lecteur associée au fichier ISO montéDéplacez boot.wim et install.wim du
c:\MediaRefresh\Out\Sources
vers le dossierc:\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
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>
Où
<ISO Path>
se trouve un chemin complet vers votre fichier ISO.
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 Arm64Windows 10 IoT Entreprise LTSC 2021 19044 Afficher l’historique des mises à jour Afficher les mises à jour x64 Afficher les mises à
jour ARM64Windows 10 IoT Enterprise LTSC 2019 17763 Afficher l’historique des mises à jour Afficher les mises à jour x64 Afficher les mises à
jour ARM64Windows 10 IoT Entreprise LTSC 2016 14393 Afficher l’historique des mises à jour Afficher les mises à jour
x64 Afficher les mises à jour x86Windows 10 IoT Entreprise LTSC 2015 10240 Afficher l’historique des mises à jour Afficher les mises à jour
x64 Afficher les mises à jour x86[Facultatif] Collecter des pilotes tiers
Placez les pilotes tiers requis pour votre appareil dans un format non compressé à la racine du dossierc:/MediaRefresh/drivers
ou en tant que sous-dossiers dansc:/MediaRefresh/drivers
.[Facultatif] Collecter des scripts de configuration
Placez vos scripts personnalisésSetupcomplete.cmd
etErrorHandler.cmd
qui s’exécutent pendant ou après le processus d’installation de Windows dans le dossierc:\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).
Monter le boot.wim WinPE
La première étape de la mise à jour de l’environnement WinPE consiste à créer un dossier temporaire nommé
mounted
sousc:\mediarefresh
à l’aide de la commande PowerShell New-ItemMD c:\MediaRefresh\mounted
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
Nous pouvons maintenant monter l’image WinPE stockée dans
boot.wim
à l’index 2 à l’aide de la commande PowerShell Mount-WindowsImageMount-WindowsImage -ImagePath "c:\mediarefresh\wim\boot.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
Le contenu de l’image WinPE stockée dans
boot.wim
à l’index 2 est désormais visible dansc:\mediarefresh\mounted
.
Appliquer des pilotes tiers à WinPE
Installez les pilotes tiers que vous avez collectés dans le dossierc:\mediarefresh\drivers
sur WinPE dansc:\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
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 dossierc:\mediarefresh\packages
sur WinPE dansc:\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.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"
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.
Copier un
Setup.exe
mis à jour
Avant de continuer à copier lesetup.exe
mis à jour de WinPE dansc:\mediarefresh\mounted\sources
versc:\mediarefresh\out\sources
à l’aide de Robocopy.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
À présent, nous pouvons copier
setup.exe
depuisc:\mediarefresh\mounted\sources
dansc:\mediarefresh\out\sources
à l’aide de Robocopy.robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setup.exe
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 sousc:\mediarefresh\mounted
. Dans le cas contraire, une erreur se produira lors de la tentative de démontage.Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
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-ItemRD c:\MediaRefresh\mounted
Publier
Boot.wim
dans le dossierout
Copiez maintenant le
boot.wim
mis à jour depuisc:\mediarefresh\wim
versc:\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.
Monter l’install.wim du système d’exploitation
La première étape de la mise à jour de l’environnement WinPE consiste à créer un dossier temporaire nommé
mounted
sousc:\mediarefresh
à l’aide de la commande PowerShell New-Item.MD c:\MediaRefresh\mounted
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
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"
Le contenu du magasin d’images Windows IoT Entreprise dans install.wim à l’index 2 est désormais consultable sur
c:\mediarefresh\mounted
.
Installer des pilotes tiers
Installez des pilotes tiers que vous avez collectés dans le dossierc:\mediarefresh\drivers
sur l’image du système d’exploitation dansc:\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.Ajouter des scripts d’installation personnalisés
Avant d’ajouter des scripts d’installation personnalisés à l’image du système d’exploitation, commencez par créer un dossier
scripts
sousc:\mediarefresh\mounted\windows\setup\
à l’aide de la commande PowerShell New-Item.MD c:\mediarefresh\mounted\windows\setup\scripts
Copiez les scripts de
c:\mediarefresh\scripts
dansc:\mediarefresh\mounted\windows\setup\scripts
à l’aide de Robocopy.robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd
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 dossierc:\mediarefresh\packages
sur WinPE dansc:\mediarefresh\mounted
à l’aide de la commande PowerShell Add-WindowsPackage.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"
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.
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 sousc:\mediarefresh\mounted
. Dans le cas contraire, une erreur se produira lors de la tentative de démontage.Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
Supprimer un
mounted
de dossier temporaire
Une fois le démontage du boot.wim réussi, nous pouvons supprimer le dossier temporairec:\mediarefresh\mounted
à l’aide de la commande PowerShell Remove-ItemRD c:\mediarefresh\mounted
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 dossierc:\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
Où <DriveLetter>
est la lettre de lecteur associée à votre lecteur USB
Installer Windows sur le nouvel appareil
Connectez le lecteur USB sur votre périphérique cible.
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.
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