PowerShell

Rechercher dans les GPO de votre Active Directory avec PowerShell

Rechercher dans les GPO de votre Active Directory avec PowerShell

N’avez-vous jamais eu besoin de rechercher la présence d’un réglage précis dans l’ensemble de vos GPO ?

Personnellement, c’est un besoin que je rencontre très régulièrement lorsque je travaille avec des clients sur de très gros environnements Active Directory. Parfois, même les entreprises elles-mêmes avouent avoir perdu le contrôle et le suivi sur les GPO qui sont créées au sein de leur environnement. Si bien qu’il est parfois possible de découvrir des réglages qui sont appelés plusieurs fois ou même qui s’opposent au sein d’un même domaine Active Directory.

Malheureusement, il n’existe pas de moteur de recherches dans la GPMC (en tout cas pas nativement). Et pourtant, qu’est-ce que ça serait pratique, je vous laisse imaginer le Google de vos GPO directement dans la console… ça serait parfait. Mais bon, comme ça n’arrivera peut-être jamais, il faut bien trouver une solution alternative. 🙂

Je vous propose d’utiliser le script PowerShell suivant pour rechercher la présence d’un terme spécifique au sein de l’ensemble de vos GPO d’un domaine Active Directory spécifique :

# Get the string we want to search for 
$string = Read-Host -Prompt "What string do you want to search for?" 
 
# Set the domain to search for GPOs 
$DomainName = $env:USERDNSDOMAIN 
 
# Find all GPOs in the current domain 
write-host "Finding all the GPOs in $DomainName" 
Import-Module grouppolicy 
$allGposInDomain = Get-GPO -All -Domain $DomainName 
[string[]] $MatchedGPOList = @()

# Look through each GPO's XML for the string 
Write-Host "Starting search...." 
foreach ($gpo in $allGposInDomain) { 
    $report = Get-GPOReport -Guid $gpo.Id -ReportType Xml 
    if ($report -match $string) { 
        write-host "********** Match found in: $($gpo.DisplayName) **********" -foregroundcolor "Green"
        $MatchedGPOList += "$($gpo.DisplayName)";
    } # end if 
    else { 
        Write-Host "No match in: $($gpo.DisplayName)" 
    } # end else 
} # end foreach
write-host "`r`n"
write-host "Results: **************" -foregroundcolor "Yellow"
foreach ($match in $MatchedGPOList) { 
    write-host "Match found in: $($match)" -foregroundcolor "Green"
}

Le script n’est pas de moi et vous pouvez retrouver la publication originale sur l’article suivant (en anglais) : Search all GPOs in a domain for some text.

Assurez-vous par contre d’exécuter ce script sur une machine qui dispose de la GPMC. Si ce n’est pas le cas, pensez à l’installer sinon il ne fonctionnera pas ! 😉

Installation du composant Group Policy Management (console) depuis le Server Manager

Une fois que c’est fait, il vous suffit de l’exécuter dans une invite de commandes PowerShell ou bien l’ISE. La seule question qu’il va vous poser est le mot que vous recherchez. Et là, vous pourrez remplacer par un élément de réglage que vous cherchez.

Exécution du script PowerShell pour rechercher dans vos GPO

Ce script est idéal si vous cherchez à résoudre les conflits et trouver les réglages qui sont appelés à plusieurs reprises dans différentes GPO.

Vous retrouverez également une seconde alternative de script PowerShell en consultant le second lien suivant (toujours en anglais) : Searching a GPO for a specific setting with Powershell.

Share
Published by
thibault

Recent Posts

Google Chrome bloque uBlock Origin : Quand la sécurité masque des intérêts commerciaux

Google Chrome bloque uBlock Origin : Quand la sécurité masque des intérêts commerciaux Depuis début…

16 heures ago

Vie privée préservée : l’Assemblée rejette les portes dérobées

Vie privée préservée : l'Assemblée rejette les portes dérobées L'Assemblée nationale française rejette la mise…

2 jours ago

Microsoft abandonne Remote Desktop Connection au profit de la Windows App

Microsoft abandonne Remote Desktop Connection au profit de la Windows App Microsoft a récemment annoncé…

1 semaine ago

Google contraint de vendre Chrome après une décision antitrust

Google contraint de vendre Chrome après une décision antitrust Le département américain de la Justice…

1 semaine ago

L’évolution de la technologie et le déclin des plateformes numériques

Illustration - Image générée par IA L'avancement technologique a radicalement transformé notre façon de communiquer,…

1 semaine ago

Discord prépare son entrée en Bourse : une nouvelle ère pour la plateforme des gamers

Depuis sa création en 2015, Discord est devenue une plateforme incontournable dans le monde du…

2 semaines ago