Active Directory – Gruppenfilterung aller GPOs als CSV ausgeben

Hallo,

und noch ein Skript. Mit dem nachfolgenden Skript werden von allen Gruppenrichtlinienonjekten die Gruppen oder Benutzer ausgegeben, auf welche die GPO angewendet bzw. gefiltert wird (siehe Screenshot) .

GPO-Sicherheitsfilterung

Ausgabe ist eine kommaseparierte Textdatei.

Aufruf:

GPOPermAsCSV.ps1

–> Ausgabe erfolgt nach C:\Temp\GPOPerm.csv

mit Parameter eigener Filename möglich:

GPOPermAsCSV.ps1 -Outputfile C:\temp\GPOfilteredGroups.csv

Skript: GPOPermAsCSV.ps1

#Beim Aufruf den Pfad für Output abfragen, Standard ist C:\Temp\GPOPerm.csv
param (
    [Parameter(HelpMessage='Bitte Pfad und Dateiname für Output angeben (z. B. C:\Ordner1\Datei1.csv)')]
    $Outputfile = 'C:\Temp\GPOPerm.csv'
      )

#Prüfen ob Datei bereits vorhanden, wenn ja, dann löschen
if ((Test-Path $Outputfile) -eq $true) {del $Outputfile}

#Variablen initialisieren
$i=0
$a=0
$GPOs = @()
$GPOs += 'Name'
$output =@()
$outputneu = @()

#Alle GPOs mit deren Eigenschaften auslesen
$AllGPOs = Get-GPO -All

#Anzahl GPOs messen
$GPOcount = $AllGPOs.Count

#GPO-Namen in Variable $GPOs schreiben
for ($a; $a -le $GPOcount; $a++) {$GPOs += ,$AllGPOs[$a].DisplayName}

#Da $GPOs[0] den Wert 'Name' hat, ab 1 beginnen
$a = 1

#Spaltenüberschrift schreiben
$Spaltenüberschrift = "GPO-Name,AD-Objekt,Berechtigung,vererbt"
$Spaltenüberschrift >> $Outputfile

#Für jede GPO die Permissions auslesen
for ($a; $a -le $GPOcount; $a++)  {
                        $output = Get-GPPermissions -All -Name $GPOs[$a]
                        $Anzahl = $output.Count
                        for ($i; $i -le $Anzahl; $i++)
                        {
#und wenn das GpoApply (Gruppenrichtlinien anwenden) auftaucht, die berechtigte(n) Gruppe(n) rausschreiben
                         if ($output.Permission[$i] -eq "GpoApply")
                         {
#Zuweisen der einzelnen Werte in eigene Variablen um am Ende einen String zu erhalten
                            $GPOName = $GPOs[$a]
                            $ADObject = $output.Trustee[$i].Name
                            $Permission = $output.Permission[$i]
                            $vererbt = $output.Inherited[$i]
                            $GPORight = [string]::Join(",", $GPOName, $ADObject, $Permission, $vererbt)
                            $GPORight >> $Outputfile
                         }
                        }
                        $i = 0
                     }
Write-Host "Done"

Viel Spaß!

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s