Archiv der Kategorie: Active Directory

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