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

Microsoft atteint une valorisation de 4 000 milliards de dollars

Microsoft devient la 2e entreprise à valoir 4 000 milliards de dollars Microsoft vient de…

2 semaines ago

Microsoft banni brutalement un développeur de LibreOffice

Microsoft banni brutalement un développeur de LibreOffice Microsoft banni brutalement un développeur de LibreOffice, et…

2 semaines ago

Dropbox Passwords : 5 alternatives après la fermeture de son service

Dropbox Passwords : 5 alternatives après la fermeture de son service Introduction Dropbox Passwords ferme…

2 semaines ago

Palo Alto Networks rachète Cyberark pour 25 milliards de dollars

Palo Alto Networks rachète Cyberark pour 25 milliards de dollars Introduction Palo Alto Networks rachète…

2 semaines ago

Microsoft reconnaît ne pas pouvoir garantir la souveraineté des données européennes

Microsoft reconnaît ne plus pouvoir garantir la souveraineté des données européennes Coup de tonnerre dans…

2 semaines ago

Une semaine les pieds dans l’eau à Almyrida, perle discrète de la Crète

Illustration générée par intelligence artificielle Il y a des endroits où l’on se sent bien…

3 semaines ago