Logo faq-o-matic.net
Logo faq-o-matic.net

Gruppenrichtlinien pro OU anzeigen und dokumentieren

von veröffentlicht am25. Februar 2020, 06:25 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Gruppenrichtlinien, PowerShell   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

Vor einiger Zeit haben wir einen Tipp veröffentlicht, wie man die Gruppenrichtlinienobjekte (GPOs) einer Domäne in einzelnen Reports dokumentieren lassen kann:

[Berichte über Gruppenrichtlinien erzeugen | faq-o-matic.net]
https://www.faq-o-matic.net/2018/04/10/berichte-ber-gruppenrichtlinien-erzeugen/

Es gibt allerdings auch Situationen, in denen man nicht alle GPOs der gesamten Domäne braucht, sondern nur diejenigen in einem bestimmten OU-Zweig. Auch hier hilft die PowerShell.

Das folgende Skript gibt die Namen aller GPOs aus, die sich unterhalb einer bestimmten OU in der Domäne befinden. In der ersten Zeile gibt man diese OU in LDAP-Syntax an.

$SearchBase = 'OU=MyOU,DC=domain,DC=tld'
$GPOs = @()
$GPOsUnique = @()
$OUs = Get-ADOrganizationalUnit -SearchBase $SearchBase -Filter * 
foreach ($OU in $OUs) {
  $GPOs += $OU.LinkedGroupPolicyObjects
}
'GPOs linked in tree: ' + $GPOs.Count
$GPOsUnique = ($GPOs | Sort-Object -Unique)
'Unique GPOs linked in tree: ' + $GPOsUnique.Count 
$GPOsUnique

Und das zweite Skript geht noch einen Schritt weiter: Es erzeugt einen Report für jedes GPO und speichert diese Reports als einzelne HTML-Dateien ab. (Voraussetzung: Die RSAT-Tools müssen auf dem ausführenden Rechner installiert sein.)

$SearchBase = 'OU=MyOU,DC=domain,DC=tld'
$GPOs = @()
$GPOsUnique = @()
$OUs = Get-ADOrganizationalUnit -SearchBase $SearchBase -Filter * 
foreach ($OU in $OUs) {
  $GPOs += $OU.LinkedGroupPolicyObjects
}
'GPOs linked in tree: ' + $GPOs.Count
$GPOsUnique = ($GPOs | Sort-Object -Unique)
'Unique GPOs linked in tree: ' + $GPOsUnique.Count 

foreach ($GPO in $GPOsUnique) {
  $GPOName = ''
  $GPOName = (Get-ADObject -Identity $GPO).Name
  if ($GPOName) {
    $GPODisplayName = ''
    $GPODisplayName = (Get-GPO -Guid $GPOName -ErrorAction SilentlyContinue).DisplayName
    "Creating report for $GPODisplayName"
    Get-GPOReport -Guid $GPOName -ReportType Html -Path "$env:userprofile\Documents\$GPODisplayName.html"
  }
}

Hier ist der Download für beide Skripte:

Download: Get-GPOsInOUTree.ps1  Get-GPOsInOUTree.ps1 (861 bytes, 1.481-mal heruntergeladen, letzte Änderung am 21. Februar 2020)

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!