Entrainement
Module
Update Windows client - Training
Explore the Windows servicing channels and use tools such as Windows Server Update Service (WSUS) to manage Windows update deployments.
Ce navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
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
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
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
Copier des fichiers à partir d’un support d’origine
Copiez tous les fichiers du support d’installation d’origine vers c:\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 ISO
Notez 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'aide c:\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 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
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 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 |
[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
.
[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
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
sous c:\mediarefresh
à l’aide de la commande PowerShell New-Item
MD 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-WindowsImage
Mount-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 dans c:\mediarefresh\mounted
.
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.
Notes
À 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 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.
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.
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.
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
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
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
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
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.
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
sous c:\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 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
Notes
À 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
sous c:\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
dans c:\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 dossier c:\mediarefresh\packages
sur WinPE dans c:\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.
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
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
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.
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
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.
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
Entrainement
Module
Update Windows client - Training
Explore the Windows servicing channels and use tools such as Windows Server Update Service (WSUS) to manage Windows update deployments.