Central Store et gestion des ADMX¶
Ce que vous allez pouvoir faire
- Creer le Central Store sur l'emulateur PDC en moins de cinq minutes avec un script PowerShell pret a l'emploi
- Mettre a jour les modeles ADMX Windows sans ecraser les fichiers inchanges, grace a une comparaison de hash
- Integrer les ADMX tiers (Edge, Chrome, Firefox, Office 365, OneDrive) dans le Central Store sans collision de namespace
- Versionner le Central Store avec Git et deployer les changements via
robocopydepuis un depot centralise - Detecter les GPO cassees apres une mise a jour ADMX et valider l'integrite du Central Store avant un gel de changement
Si vous ne retenez qu'une chose
Le Central Store est un dossier dans SYSVOL. Quand il existe, GPMC l'utilise a la place du magasin local. Pour le creer : copier C:\Windows\PolicyDefinitions\ vers \\domaine\SYSVOL\domaine\Policies\PolicyDefinitions\.
Pourquoi le Central Store¶
Le probleme sans Central Store¶
Sans Central Store, chaque machine administrateur utilise son propre %SystemRoot%\PolicyDefinitions\. Si deux administrateurs ont des versions de Windows differentes — ou des paquets ADMX differents installes — ils ne voient pas les memes parametres dans GPMC.
L'un voit "Configurer la mise en veille apres inactivite". L'autre voit "Extra Registry Settings" au meme endroit. Personne ne comprend ce qui s'est passe.
Ce n'est pas un bug GPMC. C'est la consequence logique d'un referentiel ADMX non centralise. Chaque modification devient une source potentielle d'erreur silencieuse.
Ce que le Central Store resout¶
Le Central Store est une source unique d'autorite pour tous les fichiers ADMX du domaine. Il est stocke dans SYSVOL — donc replique automatiquement sur tous les controleurs de domaine.
Quand GPMC ouvre une GPO, il cherche d'abord le Central Store. S'il existe, il l'utilise. Sinon, il retombe sur le magasin local de la machine.
Tous les administrateurs voient exactement les memes parametres, depuis n'importe quelle machine jointe au domaine.
Comment detecter l'absence de Central Store¶
Ouvrez GPMC, editez n'importe quelle GPO, et regardez le bas de la fenetre de l'editeur de strategie de groupe. Si le Central Store est absent, vous verrez :
Une fois le Central Store cree et GPMC relance, ce message disparait. Son absence confirme que le Central Store est actif.
En resume
Sans Central Store, chaque admin travaille avec ses propres ADMX locaux — c'est une source de divergence et d'erreurs. Le Central Store est un dossier SYSVOL unique qui sert de reference pour tous. Son activation est verifiable en un coup d'oeil dans GPMC.
Creer le Central Store¶
Sur quel serveur executer le script¶
Executez toujours ce script sur l'emulateur PDC. Toutes les ecritures GPMC passent par l'emulateur PDC — c'est lui qui a la version la plus a jour des outils Windows et, donc, les ADMX les plus recents.
Connectez-vous directement sur ce serveur (ou via PSRemoting) pour la creation initiale.
Script de creation¶
# Create the Central Store from the PDC Emulator's local PolicyDefinitions
$domain = (Get-ADDomain).DNSRoot
$centralStore = "\\$domain\SYSVOL\$domain\Policies\PolicyDefinitions"
$localStore = "$env:SystemRoot\PolicyDefinitions"
# Create the Central Store root directory
New-Item -ItemType Directory -Path $centralStore -Force | Out-Null
Write-Host "Central Store directory created." -ForegroundColor Cyan
# Copy all ADMX files
$admxFiles = Get-ChildItem $localStore -Filter "*.admx"
Copy-Item $admxFiles.FullName -Destination $centralStore -Force
Write-Host "Copied $($admxFiles.Count) ADMX files."
# Copy all language folders with their ADML files
Get-ChildItem $localStore -Directory | ForEach-Object {
$langFolder = $_
$destFolder = Join-Path $centralStore $langFolder.Name
New-Item -ItemType Directory -Path $destFolder -Force | Out-Null
$admlFiles = Get-ChildItem $langFolder.FullName -Filter "*.adml"
Copy-Item $admlFiles.FullName -Destination $destFolder -Force
Write-Host "Copied $($admlFiles.Count) ADML files for $($langFolder.Name)."
}
Write-Host "`nCentral Store created at: $centralStore" -ForegroundColor Green
Central Store directory created.
Copied 421 ADMX files.
Copied 421 ADML files for en-US.
Copied 421 ADML files for fr-FR.
Central Store created at: \\contoso.local\SYSVOL\contoso.local\Policies\PolicyDefinitions
Verifier le resultat dans GPMC¶
Fermez et relancez GPMC. Ouvrez n'importe quelle GPO existante dans l'editeur. Le message "retrieved from the local computer" ne doit plus apparaitre.
Si le message persiste, verifiez que le dossier PolicyDefinitions est bien cree directement sous \\domaine\SYSVOL\domaine\Policies\ — pas dans un sous-dossier supplementaire.
Chemin exact — pas de sous-dossier supplementaire
Le chemin doit etre exactement \\domaine\SYSVOL\domaine\Policies\PolicyDefinitions\. Un dossier PolicyDefinitions\PolicyDefinitions\ ne sera pas reconnu par GPMC. C'est l'erreur la plus frequente a la creation.
En resume
Executez le script sur l'emulateur PDC. Le Central Store se cree en moins de deux minutes. Validez immediatement dans GPMC : l'absence du message "local computer" confirme le succes. Le chemin exact est la seule chose qui compte — toute erreur de profondeur rend le Central Store invisible.
Mettre a jour le Central Store¶
Quand mettre a jour¶
Microsoft publie de nouveaux modeles ADMX a chaque version majeure de Windows (23H2, 24H2, etc.) et pour certaines mises a jour fonctionnelles. Les applications tierces font de meme.
Ne mettez pas a jour le Central Store "en passant". Planifiez la mise a jour, testez en laboratoire, et deployez en dehors d'un gel de changement.
Telechargez les nouveaux modeles depuis le Microsoft Download Center. Extrayez les fichiers dans un dossier temporaire — par exemple C:\Temp\PolicyDefinitions.
Script de mise a jour avec comparaison de hash¶
Ce script ne copie que les fichiers modifies. Il evite d'ecraser des fichiers identiques et produit un rapport clair de ce qui a change.
# Update Central Store with new ADMX templates (hash-based, only copies changed files)
param(
[string]$NewAdmxSource = "C:\Temp\PolicyDefinitions",
[string]$Domain = (Get-ADDomain).DNSRoot
)
$centralStore = "\\$Domain\SYSVOL\$Domain\Policies\PolicyDefinitions"
$updated = 0
$added = 0
$skipped = 0
# Process ADMX files at root level
Get-ChildItem $NewAdmxSource -Filter "*.admx" | ForEach-Object {
$dest = Join-Path $centralStore $_.Name
if (Test-Path $dest) {
$srcHash = (Get-FileHash $_.FullName -Algorithm SHA256).Hash
$dstHash = (Get-FileHash $dest -Algorithm SHA256).Hash
if ($srcHash -ne $dstHash) {
Copy-Item $_.FullName $dest -Force
Write-Host " UPDATED : $($_.Name)"
$updated++
} else {
$skipped++
}
} else {
Copy-Item $_.FullName $dest -Force
Write-Host " ADDED : $($_.Name)"
$added++
}
}
# Process language subfolders and their ADML files
Get-ChildItem $NewAdmxSource -Directory | ForEach-Object {
$langFolder = $_
$destLang = Join-Path $centralStore $langFolder.Name
New-Item -ItemType Directory -Path $destLang -Force | Out-Null
Get-ChildItem $langFolder.FullName -Filter "*.adml" | ForEach-Object {
$destAdml = Join-Path $destLang $_.Name
Copy-Item $_.FullName $destAdml -Force
}
Write-Host " LANG : $($langFolder.Name) processed."
}
Write-Host "`nSummary — Updated: $updated | Added: $added | Skipped (identical): $skipped" -ForegroundColor Green
UPDATED : Windows.admx
UPDATED : WindowsUpdate.admx
ADDED : WindowsCopilot.admx
LANG : en-US processed.
LANG : fr-FR processed.
Summary — Updated: 2 | Added: 1 | Skipped (identical): 418
Valider apres mise a jour¶
Apres chaque mise a jour du Central Store, verifiez que vos GPO existantes n'ont pas ete affectees.
# Scan all GPOs for Extra Registry Settings (indicates missing ADMX after update)
Get-GPO -All | ForEach-Object {
$gpo = $_
$report = Get-GPOReport -Guid $gpo.Id -ReportType Xml
if ($report -match "ExtraRegistrySettings") {
Write-Warning "GPO '$($gpo.DisplayName)' has Extra Registry Settings — possible missing ADMX."
}
}
Write-Host "Scan complete." -ForegroundColor Green
Si des avertissements apparaissent, notez les noms des GPO concernees. Ouvrez-les dans GPMC et identifiez les parametres marques "Extra Registry Settings". Cela signifie que l'ADMX correspondant n'est plus dans le Central Store.
Ne jamais mettre a jour pendant un gel de changement
Ajouter des ADMX pendant un gel rend immediatement visibles de nouveaux parametres dans GPMC. Un administrateur peut, sans s'en rendre compte, configurer un parametre non valide par le Change Advisory Board. Reservez les mises a jour ADMX a des fenetres de maintenance planifiees.
En resume
La mise a jour utilise une comparaison de hash SHA-256 pour ne copier que ce qui a change. Apres chaque mise a jour, lancez le scan des "Extra Registry Settings" pour detecter les GPO potentiellement affectees. Ne jamais mettre a jour pendant un gel de changement.
Gestion des ADMX tiers¶
Principe general¶
Les ADMX tiers s'ajoutent au Central Store comme les ADMX Windows : fichiers .admx a la racine, fichiers .adml dans les sous-dossiers de langue.
La seule complication est la gestion des dependances de namespace. Certains ADMX referencent un namespace declare dans un autre ADMX. Si la dependance est absente, GPMC ignore le fichier sans avertissement.
Toujours verifier les dependances avant d'ajouter un ADMX tiers. Le tableau ci-dessous recense les cas les plus courants.
Microsoft Edge¶
Telechargez les modeles depuis Microsoft Edge for Business. Extrayez le package et copiez les fichiers vers le Central Store.
Fichiers principaux : msedge.admx et msedgeupdate.admx.
# Verify Edge ADMX files are present in the Central Store
$centralStore = "\\$env:USERDNSDOMAIN\SYSVOL\$env:USERDNSDOMAIN\Policies\PolicyDefinitions"
$edgeFiles = @("msedge.admx", "msedgeupdate.admx")
$edgeFiles | ForEach-Object {
$path = Join-Path $centralStore $_
$exists = Test-Path $path
$status = if ($exists) { "OK" } else { "MISSING" }
Write-Host "[$status] $_"
}
Google Chrome¶
Telechargez le Chrome Enterprise Bundle. Extrayez et localisez le sous-dossier Configuration\admx\.
Chrome a une dependance critique : chrome.admx requiert google.admx pour declarer le namespace parent Google. Si google.admx est absent, toutes les politiques Chrome disparaissent de GPMC sans erreur visible.
Fichiers requis : google.admx, chrome.admx, GoogleUpdate.admx (pour les mises a jour Chrome).
Mozilla Firefox¶
Telechargez depuis le depot mozilla/policy-templates sur GitHub. Les releases incluent un dossier windows/ avec les fichiers ADMX.
Fichier principal : firefox.admx. Aucune dependance externe.
Microsoft 365 Apps (Office)¶
Telechargez depuis le Microsoft Download Center — cherchez "Administrative Template files (ADMX/ADML) for Microsoft 365 Apps".
Le paquet est volumineux : office16.admx plus une quinzaine de fichiers supplementaires (excel16.admx, word16.admx, outlook16.admx, teams16.admx, etc.).
OneDrive a son propre paquet ADMX separe de celui d'Office. Telechargez-le independamment depuis le portail Microsoft.
Tableau recapitulatif¶
| Application | Fichiers principaux | Namespace | Dependance requise |
|---|---|---|---|
| Edge | msedge.admx | microsoft.policies.edge | Aucune |
| Chrome | chrome.admx | Google.Chrome | google.admx |
| Firefox | firefox.admx | Mozilla.Firefox | Aucune |
| Office 365 | office16.admx + 15 autres | office16 | Aucune |
| OneDrive | OneDrive.admx | Microsoft.OneDrive | Aucune |
| GoogleUpdate | GoogleUpdate.admx | Google.Update | google.admx |
Toujours inclure les fichiers ADML pour chaque langue
Un ADMX sans son ADML correspondant dans le dossier de langue de votre GPMC provoque des descriptions vides ou des erreurs a l'ouverture de la GPO. Si vous administrez en francais, verifiez que le dossier fr-FR\ du Central Store contient bien les ADML de chaque ADMX tiers ajoute.
En resume
Chaque ADMX tiers suit le meme schema : fichier ADMX a la racine, ADML dans les sous-dossiers de langue. Les dependances de namespace (notamment google.admx pour Chrome) sont le point de defaillance le plus frequent. Utilisez le tableau ci-dessus comme checklist avant chaque ajout.
Versionner les ADMX avec Git¶
Pourquoi versionner¶
Le Central Store est dans SYSVOL — c'est un dossier comme un autre. Mais SYSVOL n'est pas un systeme de versionnement. Personne ne sait qui a ajoute chrome.admx le 14 mars, ni pourquoi office16.admx a ete remplace sans mise a jour du CHANGELOG.
Versionner les ADMX avec Git donne une trace complete : qui, quoi, quand, et pourquoi.
Le depot Git devient la source d'autorite. Le Central Store n'est que la destination de deploiement.
Structure recommandee du depot¶
admx-repo/
├── PolicyDefinitions/
│ ├── *.admx (Windows + third-party ADMX files)
│ ├── en-US/
│ │ └── *.adml
│ └── fr-FR/
│ └── *.adml
├── custom/
│ └── MonApp.admx (in-house custom ADMX files)
├── CHANGELOG.md
└── deploy.ps1
Le dossier custom/ contient les ADMX developpes en interne — par exemple pour gerer des parametres d'une application maison via le registre.
Script de deploiement¶
Ce script deploie le contenu du depot vers le Central Store via robocopy. L'option /MIR synchronise : les fichiers supprimes du depot sont supprimes du Central Store.
# deploy.ps1 — Synchronize ADMX repository to the Central Store
param(
[string]$Domain = (Get-ADDomain).DNSRoot
)
$source = Join-Path $PSScriptRoot "PolicyDefinitions"
$dest = "\\$Domain\SYSVOL\$Domain\Policies\PolicyDefinitions"
$logFile = "C:\Temp\admx-deploy-$(Get-Date -Format 'yyyyMMdd-HHmm').log"
Write-Host "Deploying ADMX from: $source"
Write-Host "Destination : $dest"
Write-Host "Log file : $logFile"
Write-Host ""
# /MIR mirrors source to destination (adds, updates, deletes)
# /R:3 retries up to 3 times on failure
# /W:5 waits 5 seconds between retries
robocopy $source $dest /MIR /R:3 /W:5 /LOG:"$logFile" /TEE
if ($LASTEXITCODE -le 1) {
Write-Host "`nDeployment complete. Exit code: $LASTEXITCODE (success)." -ForegroundColor Green
} else {
Write-Host "`nDeployment finished with warnings or errors. Exit code: $LASTEXITCODE." -ForegroundColor Yellow
Write-Host "Review the log file: $logFile"
}
Deploying ADMX from: C:\repos\admx-repo\PolicyDefinitions
Destination : \\contoso.local\SYSVOL\contoso.local\Policies\PolicyDefinitions
Log file : C:\Temp\admx-deploy-20250405-1430.log
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : Saturday, April 05, 2025 2:30:00 PM
Source : C:\repos\admx-repo\PolicyDefinitions\
Dest : \\contoso.local\SYSVOL\contoso.local\Policies\PolicyDefinitions\
Deployment complete. Exit code: 1 (success).
Les codes de retour robocopy sont non conventionnels. 0 = aucun fichier copie. 1 = fichiers copies avec succes. 2 a 7 = copies avec avertissements. 8 et plus = erreurs reelles. Un code de 1 est un succes normal.
Workflow Git recommande¶
Chaque modification du Central Store passe par une Pull Request ou une revue de code :
- Branche de feature :
feat/add-chrome-126-admx - Ajout des fichiers dans
PolicyDefinitions/ - Mise a jour de
CHANGELOG.md - Revue et approbation
- Merge sur
main - Execution de
deploy.ps1depuis le CI ou manuellement
Ce workflow garantit une trace d'audit complete et permet de revenir en arriere en cas de probleme — git revert + deploy.ps1.
En resume
Git + robocopy transforme le Central Store en infrastructure versionnee. Le depot est la source de verite, SYSVOL est le resultat du deploiement. Chaque changement passe par une revue avant d'atterrir en production. Le retour en arriere est trivial.
Validation post-deploiement¶
Verifier l'integrite des fichiers¶
Apres chaque deploiement, verifiez que les fichiers ADMX du Central Store sont syntaxiquement valides et lisibles.
# Parse all ADMX files in Central Store and report any XML errors
$centralStore = "\\$env:USERDNSDOMAIN\SYSVOL\$env:USERDNSDOMAIN\Policies\PolicyDefinitions"
$errors = 0
$checked = 0
Get-ChildItem $centralStore -Filter "*.admx" | ForEach-Object {
$checked++
try {
$null = [xml](Get-Content $_.FullName -Encoding UTF8 -Raw)
} catch {
Write-Warning "XML parse error in '$($_.Name)': $_"
$errors++
}
}
if ($errors -eq 0) {
Write-Host "All $checked ADMX files parsed successfully." -ForegroundColor Green
} else {
Write-Host "$errors error(s) found in $checked ADMX files." -ForegroundColor Red
}
Verifier les GPO apres mise a jour¶
Apres une mise a jour du Central Store, scannez toutes les GPO du domaine pour detecter les parametres devenus orphelins.
# Detect GPOs with Extra Registry Settings after ADMX update
$affected = @()
Get-GPO -All | ForEach-Object {
$gpo = $_
$report = Get-GPOReport -Guid $gpo.Id -ReportType Xml
if ($report -match "ExtraRegistrySettings") {
$affected += $gpo.DisplayName
Write-Warning "Affected GPO: $($gpo.DisplayName)"
}
}
if ($affected.Count -eq 0) {
Write-Host "No GPOs affected. Central Store update is clean." -ForegroundColor Green
} else {
Write-Host "`n$($affected.Count) GPO(s) require attention:" -ForegroundColor Yellow
$affected | ForEach-Object { Write-Host " - $_" }
}
Verifier manuellement les GPO critiques¶
Le scan PowerShell detecte les parametres "Extra Registry Settings" au niveau XML. Mais certains problemes ne sont visibles que dans GPMC.
Ouvrez manuellement les 5 a 10 GPO les plus critiques de votre parc (securite, restrictions, acces reseau). Verifiez que leurs parametres sont toujours affiches correctement et non remplaces par des entrees "Extra Registry Settings".
Cette verification manuelle prend dix minutes. Elle vaut mieux qu'un incident en production.
En resume
Trois niveaux de validation : (1) parsing XML de tous les ADMX, (2) scan automatique des GPO pour les Extra Registry Settings, (3) verification manuelle des GPO critiques. Ne pas negliger le niveau 3 — le scan automatique ne voit pas tout.
Pieges en production¶
Conflit de namespace¶
Si deux fichiers ADMX declarent le meme namespace, GPMC en ignore un silencieusement. Il n'y a aucun message d'erreur. Les parametres de l'un des deux fichiers disparaissent simplement.
Ce scenario arrive typiquement quand on ajoute une version plus recente d'un ADMX tiers sans supprimer l'ancienne, ou quand deux editeurs utilisent le meme namespace (rare mais possible).
# Detect namespace conflicts in the Central Store
$centralStore = "\\$env:USERDNSDOMAIN\SYSVOL\$env:USERDNSDOMAIN\Policies\PolicyDefinitions"
$namespaces = @{}
$conflicts = 0
Get-ChildItem $centralStore -Filter "*.admx" | ForEach-Object {
try {
$xml = [xml](Get-Content $_.FullName -Encoding UTF8 -Raw)
$ns = $xml.policyDefinitions.policyNamespaces.target.namespace
if ($namespaces.ContainsKey($ns)) {
Write-Warning "CONFLICT: namespace '$ns' declared in '$($namespaces[$ns])' AND '$($_.Name)'"
$conflicts++
} else {
$namespaces[$ns] = $_.Name
}
} catch {
Write-Warning "Parse error in '$($_.Name)': $_"
}
}
Write-Host "`nChecked $($namespaces.Count) unique namespaces. Conflicts found: $conflicts" -ForegroundColor $(if ($conflicts -eq 0) { 'Green' } else { 'Red' })
Executez ce script avant chaque ajout d'ADMX tiers. Pas apres. Detecter un conflit avant le deploiement evite de devoir expliquer pourquoi des parametres Chrome ont disparu de GPMC.
GPMC ne signale pas les conflits de namespace
Un conflit de namespace provoque une disparition silencieuse de parametres. Aucune erreur dans les logs, aucun avertissement dans GPMC. Seule une verification proactive avec le script ci-dessus permet de les detecter.
Mise a jour pendant un gel de changement¶
Ajouter des ADMX pendant un gel rend immediatement visibles de nouveaux parametres dans GPMC. Un administrateur peut, sans le savoir, configurer un parametre non valide par le Change Advisory Board.
Planifiez systematiquement les mises a jour ADMX en dehors des gels de changement. Incluez-les dans votre calendrier de maintenance regulier — par exemple apres chaque publication de modeles par Microsoft.
Gel de changement : aucune modification du Central Store
Une mise a jour ADMX pendant un gel est une modification de l'environnement de production non approuvee. Meme si elle semble "inoffensive", elle cree un risque de derive de configuration. Documentez la politique et faites-la respecter.
Le Central Store n'est pas sauvegarde par Backup-GPO¶
Backup-GPO sauvegarde les objets GPO (parametres, permissions, liens). Il ne sauvegarde pas le Central Store.
Si SYSVOL est corrumpu ou si le dossier PolicyDefinitions est accidentellement supprime, vous perdez tous vos ADMX tiers et personnalises. Les GPO existent toujours, mais leurs parametres deviennent illisibles dans GPMC.
Incluez le chemin \\domaine\SYSVOL\domaine\Policies\PolicyDefinitions\ dans votre strategie de sauvegarde SYSVOL separement. Mieux encore : si vous utilisez un depot Git, il constitue lui-meme la sauvegarde.
Sauvegarde SYSVOL separee obligatoire
Backup-GPO ne sauvegarde pas le Central Store. Assurez-vous que votre strategie de sauvegarde couvre explicitement le chemin PolicyDefinitions\ dans SYSVOL. Un depot Git joue ce role efficacement s'il est pousse vers un remote distant.
Oublier les fichiers ADML¶
Un ADMX sans son ADML dans le dossier de langue de GPMC provoque des descriptions vides, des noms de parametres incomprehensibles, ou des erreurs a l'ouverture de la GPO.
Pour chaque ADMX ajoute au Central Store, verifiez que le fichier ADML correspondant est present dans tous les dossiers de langue utilises par vos administrateurs — typiquement en-US\ et fr-FR\.
# Verify every ADMX has a matching ADML in en-US and fr-FR
$centralStore = "\\$env:USERDNSDOMAIN\SYSVOL\$env:USERDNSDOMAIN\Policies\PolicyDefinitions"
$languagesToCheck = @("en-US", "fr-FR")
$missing = 0
Get-ChildItem $centralStore -Filter "*.admx" | ForEach-Object {
$admxName = [System.IO.Path]::GetFileNameWithoutExtension($_.Name)
foreach ($lang in $languagesToCheck) {
$admlPath = Join-Path $centralStore "$lang\$admxName.adml"
if (-not (Test-Path $admlPath)) {
Write-Warning "Missing ADML: $lang\$admxName.adml (for $($_.Name))"
$missing++
}
}
}
if ($missing -eq 0) {
Write-Host "All ADMX files have matching ADML files for: $($languagesToCheck -join ', ')" -ForegroundColor Green
} else {
Write-Host "$missing missing ADML file(s) detected." -ForegroundColor Red
}
En resume
Quatre pieges a surveiller : (1) conflits de namespace — detectez-les avant le deploiement, (2) mises a jour pendant les gels — interdites, (3) sauvegarde SYSVOL — Backup-GPO ne suffit pas, (4) ADML manquants — verifiez chaque langue apres chaque ajout. Ces quatre points couvrent 90 % des incidents liees au Central Store en production.
Tableau de bord des ADMX tiers¶
Ce tableau est a maintenir dans votre CHANGELOG.md ou votre documentation interne. Il permet de savoir en un coup d'oeil ce qui est dans le Central Store, en quelle version, et par qui.
| Application | Version ADMX | Date ajout | Responsable | Dependances | Dossiers langue |
|---|---|---|---|---|---|
| Windows 11 24H2 | 10.0.26100 | 2025-01-15 | J.Dupont | Aucune | en-US, fr-FR |
| Microsoft Edge 130 | 130.0 | 2025-02-01 | J.Dupont | Aucune | en-US, fr-FR |
| Google Chrome 126 | 126.0 | 2025-03-10 | M.Martin | google.admx | en-US |
| Firefox 124 | 124.0 | 2025-03-10 | M.Martin | Aucune | en-US, fr-FR |
| Office 365 (16.0.x) | v5410 | 2025-01-20 | J.Dupont | Aucune | en-US, fr-FR |
| OneDrive | 24.x | 2025-01-20 | J.Dupont | Aucune | en-US, fr-FR |
Adaptez ce tableau a votre environnement. Le maintenir a jour prend deux minutes par mise a jour et evite des heures de recherche lors d'un incident.
En résumé
- Windows 11 24H2 : en-US, fr-FR.
- Microsoft Edge 130 : en-US, fr-FR.
- Google Chrome 126 : en-US.
- Firefox 124 : en-US, fr-FR.
- Ce tableau est a maintenir dans votre CHANGELOG.md ou votre documentation interne.
:material-custom-admx: Creer ses propres ADMX¶
Quand creer un ADMX personnalise¶
Un ADMX personnalise est utile quand vous devez gerer des cles de registre d'une application interne via GPO, sans passer par "Preferences > Windows Settings > Registry" (qui ne supporte pas les filtres WMI et n'a pas d'interface documentee).
Les ADMX personalises permettent de presenter vos parametres maison exactement comme les parametres Windows — avec description, documentation, et validation des valeurs.
Structure minimale d'un ADMX¶
Un ADMX est un fichier XML avec une structure definie. Voici le squelette minimum pour un ADMX valide :
<?xml version="1.0" encoding="utf-8"?>
<!-- MonApp.admx — Administrative template for MonApp internal application -->
<policyDefinitions revision="1.0" schemaVersion="1.0"
xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<policyNamespaces>
<!-- Define this ADMX's own namespace -->
<target prefix="monapp" namespace="Contoso.MonApp" />
</policyNamespaces>
<resources minRequiredRevision="1.0" />
<categories>
<category name="MonApp" displayName="$(string.MonApp_Category)" />
</categories>
<policies>
<policy name="MonApp_EnableFeatureX"
class="Machine"
displayName="$(string.MonApp_EnableFeatureX_Name)"
explainText="$(string.MonApp_EnableFeatureX_Explain)"
key="SOFTWARE\Contoso\MonApp"
valueName="FeatureXEnabled">
<parentCategory ref="monapp:MonApp" />
<supportedOn ref="windows:SUPPORTED_Win10" />
<enabledValue><decimal value="1" /></enabledValue>
<disabledValue><decimal value="0" /></disabledValue>
</policy>
</policies>
</policyDefinitions>
Le fichier ADML correspondant (MonApp.adml) contient les chaines de texte referencees par $(string....). Il est place dans fr-FR\MonApp.adml et en-US\MonApp.adml.
Tester un ADMX personnalise avant deploiement¶
Avant de pousser un ADMX personnalise vers le Central Store, testez-le localement :
# Test a custom ADMX by copying it to the local PolicyDefinitions (non-domain testing)
$testAdmx = "C:\dev\MonApp\MonApp.admx"
$testAdml = "C:\dev\MonApp\fr-FR\MonApp.adml"
$localStore = "$env:SystemRoot\PolicyDefinitions"
# Validate XML structure first
try {
$null = [xml](Get-Content $testAdmx -Encoding UTF8 -Raw)
Write-Host "XML valid: MonApp.admx" -ForegroundColor Green
} catch {
Write-Host "XML error in MonApp.admx: $_" -ForegroundColor Red
exit 1
}
# Copy to local store for GPMC testing
Copy-Item $testAdmx $localStore -Force
Copy-Item $testAdml "$localStore\fr-FR\" -Force
Write-Host "Copied to local PolicyDefinitions. Reopen GPMC to test."
Ouvrez GPMC, creez une GPO de test, et verifiez que vos parametres apparaissent sous la categorie declaree. Si tout est correct, deployez via le depot Git.
En resume
Les ADMX personnalises suivent exactement le meme schema que les ADMX Microsoft. Validez le XML, testez localement, puis deploiement via Git. Un ADMX maison bien concu est indiscernable d'un ADMX Microsoft dans GPMC.
Références croisées¶
| Sujet | Référence |
|---|---|
| Format ADMX en detail (namespace, categories, policies) | La Bible GPO — Ch. 05 — ADMX/ADML |
| Mise a jour ADMX Windows 11 par version | Les GPO pour les Nuls — Ch. 14 |
| Automatisation du deploiement ADMX en CI/CD | Ch. 23 — Automatisation CI/CD |
| Sauvegarde et migration SYSVOL | Ch. 05 — Sauvegarde et migration |
| Gestion des GPO avec PowerShell | Ch. 03 — PowerShell GroupPolicy module |
En résumé
- À relire : Format ADMX en detail (namespace, categories, policies) → La Bible GPO — Ch. 05 — ADMX/ADML.
- À relire : Mise a jour ADMX Windows 11 par version → Les GPO pour les Nuls — Ch. 14.
- À relire : Automatisation du deploiement ADMX en CI/CD → Ch. 23 — Automatisation CI/CD.
- À relire : Sauvegarde et migration SYSVOL → Ch. 05 — Sauvegarde et migration.
- Ces renvois prolongent le chapitre avec des mécanismes complémentaires ou des cas d’usage voisins.
Ce chapitre couvre la creation, la maintenance et la securisation du Central Store en environnement d'entreprise. Le chapitre suivant traite de la sauvegarde et de la migration des GPO — dont la sauvegarde complementaire du Central Store.