Windows / AD

📚 GPO Windows Server — Stratégies de Groupe Active Directory

Créer, lier et diagnostiquer les Group Policy Objects (GPO) : sécurité postes, mappage lecteurs réseau, déploiement logiciels MSI, diagnostic gpresult et rsop.

GPOGroup PolicyActive DirectorygpresultgpupdateRSOPSécuritéDéploiement logiciels

Concepts fondamentaux des GPO

Les Stratégies de Groupe (GPO — Group Policy Objects) permettent de configurer centralement les paramètres des utilisateurs et ordinateurs du domaine Active Directory. Elles s'appliquent via l'ordre LSDOU : Local → Site → Domaine → OU.

NiveauScopePriorité (plus haut = écrase)
LocalPoste local uniquement1 (la plus faible)
SiteTous les objets du site AD2
DomaineTous les objets du domaine3
OU parentObjets dans l'OU parente4
OU enfantObjets dans l'OU directe5 (la plus haute)
ℹ️
Règle d'or : En cas de conflit entre deux GPO, la dernière appliquée gagne (priorité plus haute). L'option Enforced (Appliquée) sur une GPO l'empêche d'être écrasée par une GPO de niveau inférieur. Block Inheritance sur une OU bloque les GPO des niveaux supérieurs.

Créer et lier une GPO — PowerShell

gpo-creation.ps1
#Requires -RunAsAdministrator
Import-Module GroupPolicy

# ── Créer une nouvelle GPO ────────────────────────────────────
New-GPO -Name "GPO-Securite-Postes" -Comment "Politique de sécurité postes de travail"

# ── Lier la GPO à une OU ──────────────────────────────────────
New-GPLink -Name "GPO-Securite-Postes" `
    -Target "OU=Postes,DC=ENTREPRISE,DC=LOCAL" `
    -LinkEnabled Yes

# ── Lister les GPO du domaine ─────────────────────────────────
Get-GPO -All | Select-Object DisplayName, GpoStatus, CreationTime

# ── Lister les GPO liées à une OU ────────────────────────────
Get-GPInheritance -Target "OU=Postes,DC=ENTREPRISE,DC=LOCAL"

# ── Sauvegarder une GPO ───────────────────────────────────────
Backup-GPO -Name "GPO-Securite-Postes" -Path "C:\Backup-GPO"

# ── Restaurer une GPO ─────────────────────────────────────────
Restore-GPO -Name "GPO-Securite-Postes" -Path "C:\Backup-GPO"

# ── Importer les paramètres d'une GPO sauvegardée ─────────────
Import-GPO -BackupId "<GUID>" -TargetName "GPO-Securite-Postes" -Path "C:\Backup-GPO"

# ── Forcer la mise à jour sur tous les postes (à distance) ───
Invoke-GPUpdate -Computer "PC-DUPONT" -Force -RandomDelayInMinutes 0

GPO de sécurité — Paramètres essentiels

gpo-securite.ps1
# Configuration GPO Sécurité via PowerShell
# Chemin : Config Ordinateur > Paramètres Windows > Paramètres de sécurité

$GPO = "GPO-Securite-Postes"

# ── Politique de mot de passe ─────────────────────────────────
Set-GPRegistryValue -Name $GPO `
    -Key "HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" `
    -ValueName "MaximumPasswordAge" -Type DWord -Value 90

# ── Verrouillage de session (écran de veille) ─────────────────
Set-GPRegistryValue -Name $GPO `
    -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" `
    -ValueName "ScreenSaverIsSecure" -Type String -Value "1"
Set-GPRegistryValue -Name $GPO `
    -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" `
    -ValueName "ScreenSaveTimeOut" -Type String -Value "600"

# ── Désactiver le Panneau de configuration pour les users ─────
Set-GPRegistryValue -Name $GPO `
    -Key "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" `
    -ValueName "NoControlPanel" -Type DWord -Value 1

# ── Désactiver l'invite de commandes pour les users ───────────
Set-GPRegistryValue -Name $GPO `
    -Key "HKCU\Software\Policies\Microsoft\Windows\System" `
    -ValueName "DisableCMD" -Type DWord -Value 2

# ── Bloquer l'accès aux lecteurs amovibles (USB) ─────────────
Set-GPRegistryValue -Name $GPO `
    -Key "HKLM\Software\Policies\Microsoft\Windows\RemovableStorageDevices" `
    -ValueName "Deny_All" -Type DWord -Value 1

# ── Appliquer la GPO ─────────────────────────────────────────
gpupdate /force

GPO mappage de lecteurs réseau

gpo-lecteurs.ps1
# GPO Préférences : mappage lecteur réseau par groupe AD
# Config Utilisateur > Préférences > Paramètres Windows > Mappages de lecteurs

# Via PowerShell (module GroupPolicy)
$GPO = "GPO-Lecteurs-Réseau"
New-GPO -Name $GPO

# Ajouter un script de démarrage de session (alternative)
# Créer le script dans SYSVOL et le lier via GPO

# Contenu du script logon.ps1 à placer dans SYSVOL\scripts\
$scriptContent = @'
# Mappage conditionnel selon les groupes AD
$groups = (Get-ADPrincipalGroupMembership -Identity $env:USERNAME).Name

if ($groups -contains "Comptabilité") {
    New-PSDrive -Name "G" -PSProvider FileSystem `
        -Root "\\SRV-FICHIERS\Comptabilite" -Persist -ErrorAction SilentlyContinue
}

if ($groups -contains "Direction") {
    New-PSDrive -Name "H" -PSProvider FileSystem `
        -Root "\\SRV-FICHIERS\Direction" -Persist -ErrorAction SilentlyContinue
}

# Lecteur commun pour tous
New-PSDrive -Name "S" -PSProvider FileSystem `
    -Root "\\SRV-FICHIERS\Commun" -Persist -ErrorAction SilentlyContinue
'@
$scriptContent | Out-File "\\ENTREPRISE.LOCAL\SYSVOL\ENTREPRISE.LOCAL\scripts\logon.ps1" -Encoding UTF8

GPO déploiement logiciels (MSI)

gpo-software.ps1
# Déployer un logiciel MSI via GPO
# Config Ordinateur > Paramètres logiciels > Installation de logiciels

# Le fichier MSI DOIT être dans un partage réseau accessible par tous les postes
# Exemple : \\SRV-FICHIERS\Logiciels$\

# Créer le partage logiciels (administratif)
New-Item -Path "D:\Logiciels" -ItemType Directory -Force
New-SmbShare -Name "Logiciels$" -Path "D:\Logiciels" `
    -ReadAccess "ENTREPRISE\Utilisateurs du domaine" `
    -FullAccess "ENTREPRISE\Administrateurs"

# Copier les MSI dans le partage
# Exemple: \\SRV-FICHIERS\Logiciels$\7zip\7zip.msi

# La GPO d'installation logiciel se configure dans la console GPMC (GUI):
# 1. Ouvrir gpmc.msc
# 2. Créer/éditer la GPO cible
# 3. Config Ordinateur > Paramètres logiciels > Installation de logiciels
# 4. Clic droit > Nouveau > Package
# 5. Parcourir vers \\SRV-FICHIERS\Logiciels$\nomlogiciel.msi
# 6. Choisir "Assigné" (s'installe au démarrage du poste)

# Vérifier l'état des applications déployées
Get-WmiObject -Class Win32_Product | Select-Object Name, Version | Sort-Object Name

Diagnostic GPO — Commandes essentielles

CommandeDescription
gpupdate /forceForcer la mise à jour immédiate des GPO sur le poste
gpresult /rRésumé des GPO appliquées (utilisateur + ordinateur)
gpresult /h C:\gpo-rapport.htmlRapport HTML complet et détaillé
gpresult /scope computerGPO appliquées à l'ordinateur uniquement
gpresult /scope userGPO appliquées à l'utilisateur uniquement
rsop.mscConsole RSOP (Resultant Set of Policy) — vue graphique
gpmc.mscConsole Gestion des stratégies de groupe
Get-GPResultantSetOfPolicyRésultant de stratégie PowerShell
Invoke-GPUpdate -Computer PC01 -ForceForcer gpupdate à distance
Get-GPOReport -Name "NomGPO" -ReportType HTML -Path C:\rapport.htmlRapport HTML d'une GPO
diagnostic-gpo.ps1
# Diagnostic complet GPO sur un poste distant

$Computer = "PC-DUPONT"

# Forcer la mise à jour à distance
Invoke-GPUpdate -Computer $Computer -Force -RandomDelayInMinutes 0

# Générer le rapport RSOP (Resultant Set of Policy)
Get-GPResultantSetOfPolicy -Computer $Computer `
    -ReportType Html `
    -Path "C:\Rapports\rsop-$Computer.html"

# Vérifier les erreurs GPO dans l'Observateur d'événements
Get-WinEvent -ComputerName $Computer `
    -FilterHashtable @{LogName='System'; ProviderName='GroupPolicy'; Level=2} `
    -MaxEvents 20 | Select-Object TimeCreated, Message | Format-List

# Voir les GPO appliquées sur le poste
Invoke-Command -ComputerName $Computer -ScriptBlock {
    gpresult /r
}
⚠️
Tester les GPO en environnement de test avant la production ! Utiliser une OU de test avec quelques postes et utilisateurs pilotes. Une GPO mal configurée peut verrouiller des postes ou supprimer des accès utilisateurs.
Ajouter Les Fibrés à mes sources préférées
Retrouvez plus souvent nos guides dans vos résultats Google