Sauvegarde et restauration des ACL WMI après mise à niveau

Robert Luc 40 Points de réputation
2026-08-27T09:04:19.7866667+00:00

Bonjour,

J’ai essayé de suivre différentes instructions concernant la mise à niveau de Windows Server 2016 vers 2022, mais j’ai constaté que cette opération réinitialise les autorisations personnalisées du namespace Root\CIMv2, ce qui fait perdre l’accès WMI aux comptes de service tiers.

J’ai consulté les options disponibles dans wmimgmt.msc et exploré des scripts PowerShell pour automatiser la sauvegarde et restauration des ACL WMI, mais je ne trouve pas de méthode fiable pour préserver ces autorisations pendant la mise à niveau.

Pourriez-vous m’indiquer comment scripter la sauvegarde des ACL WMI avant la mise à niveau et les restaurer automatiquement une fois le serveur redémarré  ?

Windows pour les entreprises | Windows 365 Business
0 commentaires Aucun commentaire

Réponse acceptée par l’auteur(e) de la question
Hoang Le 6,275 Points de réputation Conseiller(ère) indépendant(e)
2026-08-27T10:58:51.4733333+00:00

Bonjour Robert,

Lors d’une mise à niveau de Windows Server, les ACL WMI sont effectivement réinitialisées, ce qui supprime les autorisations personnalisées sur des namespaces comme Root\CIMv2. Il n’existe pas de mécanisme natif pour les préserver automatiquement pendant l’upgrade, il faut donc les exporter avant et les réappliquer après. La méthode la plus fiable repose sur PowerShell en utilisant la classe -SystemSecurity pour extraire et restaurer les descripteurs de sécurité.

Avant la mise à niveau, exécutez un script qui sauvegarde le SDDL du namespace concerné. Exemple :

$namespace = "root\cimv2"

$security = Get-WmiObject -Namespace $namespace -Class -SystemSecurity

$sd = $security.PSBase.InvokeMethod("GetSecurityDescriptor", $null)

$sd.Descriptor | ConvertTo-Json | Out-File "C:\WMI_ACL_Backup.json"

Après la mise à niveau et redémarrage, vous pouvez restaurer les ACL en important le fichier et en réappliquant le descripteur :

$namespace = "root\cimv2"

$security = Get-WmiObject -Namespace $namespace -Class -SystemSecurity

$sd = Get-Content "C:\WMI_ACL_Backup.json" | ConvertFrom-Json

$inParams = $security.PSBase.GetMethodParameters("SetSecurityDescriptor")

$inParams.Descriptor = $sd

$result = $security.PSBase.InvokeMethod("SetSecurityDescriptor", $inParams, $null)

Cette approche est documentée dans la base officielle Microsoft pour la gestion des ACL WMI via PowerShell et permet de conserver les autorisations personnalisées. Vous pouvez l’étendre à d’autres namespaces en adaptant la variable $namespace. Il est recommandé de tester la restauration sur un environnement de préproduction avant de l’appliquer en production, car une erreur dans le descripteur peut bloquer l’accès WMI.

Je vous conseille également de conserver une copie du fichier JSON hors du serveur (par exemple sur un partage sécurisé) afin d’éviter toute perte en cas de corruption du système après upgrade.

J’espère que vous trouverez ici une solution utile. Si cela vous aide à mieux comprendre le problème, merci d’accepter la réponse. Si vous avez d’autres questions, n’hésitez pas à laisser un message. Bonne journée !

HL.

Cette réponse vous a-t-elle été utile?

1 personne a trouvé cette réponse utile.

0 réponses supplémentaires

Trier par : Plus ancien

Votre réponse

Les réponses peuvent être marquées comme « Acceptées » par l’auteur(e) de la question et « Recommandées » par les modérateurs, ce qui aide les utilisateurs à savoir que la réponse a résolu le problème de l’auteur(e).