Dans un cluster Hyper‑V on‑prem (hôtes 2019) hébergeant des VM Windows Server 2012/2012 R2, les ESU se gèrent à l’intérieur de chaque VM. Ce guide détaille le pourquoi, le comment, les prérequis, l’automatisation et les pièges à éviter.
Où appliquer les ESU Windows Server 2012/2012 R2 pour des VM Hyper‑V ?
Vue d’ensemble de la question
Contexte type : 4 hôtes Hyper‑V sous Windows Server 2019, 5 VM sous Windows Server 2012 R2. Faut‑il installer/activer les Extended Security Updates (ESU) sur les hôtes ou sur les VM ? Quelles étapes concrètes pour être protégé et conforme ?
Réponse & Solution
Lieu d’application/activation
- Les ESU s’installent et s’activent dans chaque VM Windows Server 2012/2012 R2.
- Rien n’est à installer/activer sur les hôtes Windows Server 2019 pour « couvrir » ces VM. L’activation est toujours réalisée dans l’OS invité.
La logique est simple : la télémétrie d’éligibilité et l’activation ESU sont évaluées par le système invité (la VM). L’hyperviseur ne joue aucun rôle technique dans l’activation de l’add‑on ESU et ne reçoit aucune clé ESU.
Composant | Action ESU requise ? | Pourquoi |
---|---|---|
Hôte Hyper‑V (Windows Server 2019) | Non | Aucun binaire 2012/R2 à patcher, pas d’add‑on ESU applicable à l’hôte 2019. |
VM Windows Server 2012 | Oui — dans la VM | Seul l’OS invité 2012 sait valider la présence des prérequis ESU et l’activation du module. |
VM Windows Server 2012 R2 | Oui — dans la VM | Même principe : activation et vérifications côté VM, réception des rollups ESU ensuite. |
Note licence : selon vos contrats (Software Assurance, CSP, etc.), l’achat des ESU peut se raisonner par cœur d’hôte (Datacenter) ou par VM. Mais l’activation technique reste dans la VM et n’est pas portée par l’hôte.
Prérequis dans chaque VM 2012/2012 R2
- Servicing Stack Update (SSU) à jour : par ex. KB5029368 (08/08/2023) ou version ultérieure.
- ESU Licensing Preparation Package pour 2012/2012 R2 : KB5017220 (10/08/2022).
- Redémarrage si demandé (après SSU et/ou KB de préparation).
Contrôles rapides dans la VM :
powershell
# SSU installé ?
Get-HotFix -Id KB5029368
# Package de préparation ESU installé ?
Get-HotFix -Id KB5017220
Bonnes pratiques de préparation :
- Appliquer au préalable les mises à jour SHA‑2 historiques si l’environnement a été longtemps isolé.
- Sauvegarder la VM (checkpoint temporaire ou sauvegarde out‑of‑band) avant la séquence ESU.
- Bloquer toute fenêtre de maintenance pendant l’activation (évite des redémarrages concurrentiels).
Activation ESU (dans l’invité)
Effectuez l’activation à partir d’une Invite de commandes en administrateur dans chaque VM (2012/2012 R2). Étapes de base :
cmd
slmgr /ipk <VOTRE_CLÉ_ESU> :: installe la clé ESU (MAK add-on)
slmgr /dlv :: relève l’Activation ID de l’add-on ESU (à noter)
slmgr /ato <ActivationID_relevé> :: active l’add-on ESU
Remarque : dans certains environnements, slmgr /ato
(sans ActivationID) suffit après /ipk
. Conservez la méthode ci‑dessus si l’Activation ID est requis.
Validation après activation
slmgr /dlv
doit indiquer l’état Licensed pour l’add‑on ESU.- Installez ensuite un monthly rollup récent pour vérifier que la VM reçoit des correctifs ESU.
- Conservez les journaux d’activation (
C:\Windows\Temp\
,Event Viewer
> Application et Setup).
Pourquoi l’hôte Hyper‑V n’est pas concerné
Les ESU sont un add‑on d’activation destiné aux systèmes arrivés en fin de support (ici 2012/2012 R2). Le moteur Windows Update d’une VM 2012/R2 lit l’état ESU dans son registre/licence et détermine si un rollup ESU doit s’appliquer. L’hôte 2019, lui, n’exécute ni API ni composants 2012/R2 ; le déplacer une VM entre hôtes n’influence pas la validité de l’ESU car l’activation est attachée à l’OS invité.
Déploiement en masse : méthodes recommandées
1) PowerShell Remoting (WinRM)
Idéal pour cinq VM. Exemple d’orchestration depuis une machine d’administration :
powershell
$VMs = @("SRV-APP-01","SRV-DB-02","SRV-FIC-03","SRV-WEB-04","SRV-UTIL-05")
$ESUKey = "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" # clé MAK ESU
$SSU = "\\share\updates\windows6.3-kb5029368-x64.msu"
$Prep = "\\share\updates\windows6.3-kb5017220-x64.msu"
Invoke-Command -ComputerName \$VMs -ScriptBlock {
param(\$SSU,\$Prep,\$ESUKey)
\$ErrorActionPreference = "Stop"
Write-Host "== Étape 1 : SSU =="
if (-not (Get-HotFix -Id KB5029368 -ErrorAction SilentlyContinue)) {
Start-Process wusa.exe -ArgumentList "`"$SSU`" /quiet /norestart" -Wait
}
Write-Host "== Étape 2 : Package de préparation ESU =="
if (-not (Get-HotFix -Id KB5017220 -ErrorAction SilentlyContinue)) {
Start-Process wusa.exe -ArgumentList "`"$Prep`" /quiet /norestart" -Wait
}
Write-Host "== Étape 3 : Activation ESU =="
& cscript.exe //nologo C:\Windows\System32\slmgr.vbs /ipk \$ESUKey
# Récupération de l’Activation ID (optionnelle si /ato seul suffit)
\$dlv = & cscript.exe //nologo C:\Windows\System32\slmgr.vbs /dlv
\$actId = (\$dlv | Select-String -SimpleMatch "Activation ID").ToString().Split(":")\[-1].Trim()
if (\$actId) {
& cscript.exe //nologo C:\Windows\System32\slmgr.vbs /ato \$actId
} else {
& cscript.exe //nologo C:\Windows\System32\slmgr.vbs /ato
}
Write-Host "== Étape 4 : Redémarrage si en attente =="
\$Pending = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" -ErrorAction SilentlyContinue)
if (\$Pending) { Restart-Computer -Force }
} -ArgumentList \$SSU,\$Prep,\$ESUKey
2) GPO (script de démarrage)
Les .msu ne se déploient pas nativement via « Software Installation » GPO, mais un script de démarrage côté ordinateur fonctionne très bien :
cmd
@echo off
setlocal enabledelayedexpansion
set LOG=C:\Windows\Logs\ESU-Prep.log
rem -- SSU --
wusa.exe "\dfs\updates\windows6.3-kb5029368-x64.msu" /quiet /norestart >> "%LOG%" 2>&1
rem -- ESU Prep --
wusa.exe "\dfs\updates\windows6.3-kb5017220-x64.msu" /quiet /norestart >> "%LOG%" 2>&1
rem -- Activation --
cscript //nologo C:\Windows\System32\slmgr.vbs /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX >> "%LOG%" 2>&1
cscript //nologo C:\Windows\System32\slmgr.vbs /dlv > C:\Windows\Temp\ESU-dlv.txt
for /f "tokens=2 delims=:" %%A in ('findstr /i "Activation ID" C:\Windows\Temp\ESU-dlv.txt') do set ACT=%%A
cscript //nologo C:\Windows\System32\slmgr.vbs /ato !ACT! >> "%LOG%" 2>&1
3) Outils de gestion (WSUS/ConfigMgr/VAMT)
- WSUS/ConfigMgr : approuvez et déployez les rollups mensuels post‑activation. Créez une vue/collection dédiée « 2012/R2 (ESU) » pour le ciblage.
- VAMT (Volume Activation Management Tool) : centralise l’inventaire d’activation et facilite l’activation par proxy si les VM n’ont pas d’accès Internet direct.
Vérifications utiles
cmd
:: État de l’add-on ESU (doit afficher "Licensed")
slmgr /dlv
powershell
# Preuve de préparation
Get-HotFix -Id KB5017220
# Exemple : dernier rollup installé
Get-HotFix | Where-Object {$\_.Description -match "Security Update"} | Sort-Object InstalledOn -Descending | Select-Object -First 5
Rapport d’état multi‑VM (exemple)
powershell
$VMs = @("SRV-APP-01","SRV-DB-02","SRV-FIC-03","SRV-WEB-04","SRV-UTIL-05")
$Report = foreach($vm in $VMs){
Invoke-Command -ComputerName $vm -ScriptBlock {
$prep = [bool](Get-HotFix -Id KB5017220 -ErrorAction SilentlyContinue)
$ssu = [bool](Get-HotFix -Id KB5029368 -ErrorAction SilentlyContinue)
$dlv = & cscript.exe //nologo C:\Windows\System32\slmgr.vbs /dlv
$lic = ($dlv | Select-String -Pattern "License Status|État de la licence").ToString()
[pscustomobject]@{
ComputerName = $env:COMPUTERNAME
SSU_KB5029368 = $ssu
Prep_KB5017220 = $prep
ESU_LicenseStatus = $lic
}
}
}
$Report | Format-Table -AutoSize
Bonnes pratiques & points d’attention
- Migration de VM : Live/Quick Migration, Storage Migration ou déplacement vers un autre hôte n’exigent pas de réactivation côté hôte ; l’activation reste dans la VM.
- Édition de l’OS : utilisez une clé ESU correspondant à l’édition de la VM (Standard vs Datacenter). Une discordance mène à l’erreur
0xC004F050
(clé invalide). - Clonage/snapshot : évitez de cloner une VM activée ESU comme modèle sans sysprep. Un identifiant matériel identique peut perturber les inventaires d’activation.
- Connectivité : assurez la résolution DNS et l’accès HTTP/HTTPS sortant (ou utilisez un proxy/serveur d’activation). L’erreur
0x80072F8F
pointe souvent un problème d’horloge/TLS. - Maintenance continue : les ESU ne livrent que des correctifs de sécurité, pas de nouvelles fonctionnalités. Continuez d’appliquer les rollups mensuels.
- Conformité : l’activation technique ≠ conformité contractuelle. Vérifiez que vos achats ESU couvrent le nombre de cœurs/VM réel.
Scénarios concrets (et la bonne action)
Scénario | Ce que l’on croit parfois | Ce qu’il faut faire |
---|---|---|
Ajout d’un nouvel hôte Hyper‑V 2019 | Réinstaller les ESU sur l’hôte | Rien à faire côté hôte. Laissez les VM 2012/R2 actives ESU migrer telles quelles. |
Clonage d’une VM 2012 R2 | La clé ESU couvre le clone | Traiter le clone comme une nouvelle VM : préparer/activer ESU si nécessaire et ajuster les licences. |
Restauration d’une VM à partir d’une sauvegarde | Perte d’activation ESU | En général, l’activation persiste. Vérifier slmgr /dlv , réactiver si l’état n’est plus « Licensed ». |
VM sans Internet | ESU impossible | Utiliser VAMT ou activer via proxy/serveur d’activation, puis distribuer les rollups via WSUS/ConfigMgr. |
Erreurs fréquentes & remèdes
- 0xC004F050 : clé ESU invalide — vérifier édition (Std/DC) et version (2012 vs 2012 R2).
- 0x800F0831 : échec d’installation d’un rollup — une dépendance manquante (SSU/LCU) ; réappliquer SSU et réessayer.
- 0xC004C003 / 0xC004C032 : quota d’activation MAK atteint — utiliser VAMT/activation par proxy ou solliciter une réinitialisation.
- 0x80072F8F : problème TLS/certificat/heure — synchroniser NTP, vérifier proxy/pare‑feu.
Checklist d’implémentation (vue opérateur)
- Inventorier toutes les VM 2012/2012 R2 (nom, IP, édition, rôle, fenêtre de maintenance).
- Déposer les binaires prérequis (SSU + KB de préparation) sur un partage accessible en lecture.
- Tester l’activation sur une VM pilote (preprod), valider la réception d’un rollup ESU.
- Automatiser le déploiement (PowerShell Remoting ou GPO script de démarrage) et journaliser.
- Mettre en place un rapport hebdomadaire : état ESU, dernières dates de patch, erreurs.
FAQ rapide
Q : Puis‑je activer une ESU depuis l’hôte sur toutes les VM ?
R : Non. L’activation est réalisée dans la VM, pas sur l’hôte.
Q : Une migration Live vers un autre hôte Hyper‑V casse‑t‑elle l’ESU ?
R : Non. L’état reste dans la VM.
Q : ESU = mises à jour de fonctionnalité ?
R : Non. ESU = correctifs de sécurité uniquement.
Q : Une seule clé peut‑elle activer plusieurs VM ?
R : Oui si c’est une clé MAK autorisant plusieurs activations, selon votre contrat. Respectez la conformité.
Q : Puis‑je activer hors ligne ?
R : Oui via activation par téléphone ou VAMT/proxy, puis déploiement des patches via WSUS/ConfigMgr.
Q : Faut‑il réactiver chaque année ?
R : Les ESU sont vendues par vagues annuelles. Selon le millésime, une nouvelle clé annuelle peut être requise.
Procédure détaillée pas‑à‑pas (VM 2012 R2)
- Vérifier l’édition :
systeminfo
ouwinver
(Standard/Datacenter). - Installer le SSU (KB5029368 ou ultérieur) :
cmd wusa.exe "windows6.3-kb5029368-x64.msu" /quiet /norestart
- Installer l’ESU Licensing Preparation Package (KB5017220) :
cmd wusa.exe "windows6.3-kb5017220-x64.msu" /quiet /norestart
- Redémarrer si demandé.
- Installer la clé ESU :
cmd slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
- Obtenir l’Activation ID (si requis) et activer :
cmd slmgr /dlv slmgr /ato <ActivationID>
- Vérifier l’état (Licensed) et appliquer un rollup récent via WSUS/Windows Update.
Modèle de script « tout‑en‑un » (VM locale)
powershell
$ESUKey = "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX"
$Files = @{
SSU = "C:\Temp\windows6.3-kb5029368-x64.msu"
Prep = "C:\Temp\windows6.3-kb5017220-x64.msu"
}
$Log = "C:\Windows\Logs\ESU-Install.log"
$ErrorActionPreference = "Stop"
function Install-MSU(\$Path){
if (Test-Path \$Path){
Start-Process wusa.exe -ArgumentList "`"$Path`" /quiet /norestart" -Wait
} else {
throw "Fichier introuvable : \$Path"
}
}
"=== ESU Install \$(Get-Date) ===" | Out-File -Append \$Log
if (-not (Get-HotFix -Id KB5029368 -ErrorAction SilentlyContinue)) { Install-MSU \$Files.SSU }
if (-not (Get-HotFix -Id KB5017220 -ErrorAction SilentlyContinue)) { Install-MSU \$Files.Prep }
& cscript //nologo C:\Windows\System32\slmgr.vbs /ipk \$ESUKey | Out-File -Append \$Log
\$dlv = & cscript //nologo C:\Windows\System32\slmgr.vbs /dlv
\$act = (\$dlv | Select-String "Activation ID").ToString().Split(":")\[-1].Trim()
if (\$act){ & cscript //nologo C:\Windows\System32\slmgr.vbs /ato \$act | Out-File -Append \$Log } else { & cscript //nologo C:\Windows\System32\slmgr.vbs /ato | Out-File -Append \$Log }
"=== Done ===" | Out-File -Append \$Log
Surveillance & reporting (après mise en service)
- Tableau de bord hebdomadaire : nombre de VM 2012/R2, statut ESU, versions des derniers rollups.
- Alerte : absence de patch > 30 jours ou état ESU ≠ Licensed.
- Inventaire : tracez la correspondance clés/VM et la date d’activation.
Couverture ESU : durée & périmètre
Les ESU prolongent uniquement les mises à jour de sécurité sur une période déterminée après la fin du support. Elles n’apportent ni nouvelles fonctionnalités ni changements de compatibilité. Vérifiez votre année de couverture, le millésime en cours, et votre mode d’acquisition (par cœur hôte vs par VM) auprès de votre revendeur/licensing afin d’être techniquement activé et contractuellement conforme.
Résumé actionnable (check‑list VM ×5)
- Mettre à jour le SSU (KB5029368 ou plus récent).
- Installer KB5017220 (ESU Licensing Preparation Package).
slmgr /ipk <clé_ESU>
→slmgr /dlv
→slmgr /ato <ActivationID>
.- Redémarrer si nécessaire et appliquer les derniers rollups de sécurité.
- Contrôler l’état via
slmgr /dlv
et l’historique des mises à jour.
En bref : tout se fait dans chaque VM 2012/2012 R2, pas sur les hôtes 2019.
Appendice : matrice décisionnelle rapide
Question | Réponse courte | Action |
---|---|---|
ESU sur l’hôte Hyper‑V ? | Non | Ignorer côté hôte. Travailler dans les VM. |
Activation perdue après migration ? | Non (cas général) | Vérifier slmgr /dlv après déplacement. |
Clé Datacenter pour VM Standard ? | Non | Faire correspondre clé ESU ↔ édition de la VM. |
VM isolée sans Internet | Possible | Activer par proxy/VAMT et patcher via WSUS. |
Rollups non proposés | Préreq manquant | Réinstaller SSU + KB5017220, redémarrer, réessayer. |
Checklist « qualité / audit »
- Journalisation centralisée des scripts (
\\share\logs\esu\*
). - Évidence de conformité par VM (clé, date d’activation, statut).
- Tableau de bord WSUS/ConfigMgr : succès/échecs d’installation, corrections.
- Revue mensuelle : retrait des VM 2012/R2 obsolètes, plan de migration vers versions supportées.
En appliquant ces recommandations, vos 5 VM 2012 R2 sur Hyper‑V 2019 recevront bien les correctifs ESU, de manière répétable et vérifiable, sans toucher aux hôtes. L’activation dans la VM et une chaîne de déploiement maîtrisée (préreq → activation → rollups) sont les deux piliers d’une posture sécurisée et conforme.