User Gruppen auslesen via Excel ausgeben
Hallo Zusammen,
ein Kunde von uns möchte eine monatliche Auflistung aller User und deren Rechten (Gruppen)
Dies haben wir bis jetzt immer via Hand aktualisiert. Da jedoch monatlich bis zu 30 Änderungen eingehen frisst dies sehr viel Zeit.
Über die Suche habe ich einige funktionierende Skripte gefunden.
Jedoch würden wir gerne mithilfe einer Excel Vorlage eine einheitlich Liste monatlich ausgeben.
Der Grüne Bereich wird durch uns händisch festgelegt sodass wir verschiedenen Skripte für Drucker, Laufwerkszugriffe usw. anlegen können.
Somit sollte das Skript bei ausführen alle Gruppen und deren Member auslesen (somit müsste das Skript die User jedesmal aufs neue auslesen und im gelben bereich eintragen (und bei einem erneuten Start auch löschen) können. Und zu guter letzt in Form eines "ist User in der Gruppe" mit einem X im Blauen bereich eintragen können.
Ist so etwas möglich? Vielleicht auch mit geringen Aufwand sodass ich ein hier im Forum vorhanden Skript nur auf die Excel Ausgabe abändern muss?
Ich denke das dass löschen des Gelben und Blauen Bereichs bei einem erneuten ausführen zu Problemen führen könnte.
Grüße und schonmal danke für eure Mühen,
ein Kunde von uns möchte eine monatliche Auflistung aller User und deren Rechten (Gruppen)
Dies haben wir bis jetzt immer via Hand aktualisiert. Da jedoch monatlich bis zu 30 Änderungen eingehen frisst dies sehr viel Zeit.
Über die Suche habe ich einige funktionierende Skripte gefunden.
Jedoch würden wir gerne mithilfe einer Excel Vorlage eine einheitlich Liste monatlich ausgeben.
Der Grüne Bereich wird durch uns händisch festgelegt sodass wir verschiedenen Skripte für Drucker, Laufwerkszugriffe usw. anlegen können.
Somit sollte das Skript bei ausführen alle Gruppen und deren Member auslesen (somit müsste das Skript die User jedesmal aufs neue auslesen und im gelben bereich eintragen (und bei einem erneuten Start auch löschen) können. Und zu guter letzt in Form eines "ist User in der Gruppe" mit einem X im Blauen bereich eintragen können.
Ist so etwas möglich? Vielleicht auch mit geringen Aufwand sodass ich ein hier im Forum vorhanden Skript nur auf die Excel Ausgabe abändern muss?
Ich denke das dass löschen des Gelben und Blauen Bereichs bei einem erneuten ausführen zu Problemen führen könnte.
Grüße und schonmal danke für eure Mühen,
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 384468
Url: https://administrator.de/forum/user-gruppen-auslesen-via-excel-ausgeben-384468.html
Ausgedruckt am: 29.04.2025 um 10:04 Uhr
4 Kommentare
Neuester Kommentar
Moin,
Ginge wohl mit einem Macro (VBA) in Excel.
Zuerst alle User ermitteln und dann für jeden User die Gruppen abfragen. Ginge sicherlich auch kombiniert:
Z.B.
https://stackoverflow.com/questions/416856/determining-a-users-group-mem ...
Ich weiß nur nicht, welche userrechte zum abfragen des AD benötigt werden
Gruß
em-pie
Ginge wohl mit einem Macro (VBA) in Excel.
Zuerst alle User ermitteln und dann für jeden User die Gruppen abfragen. Ginge sicherlich auch kombiniert:
Z.B.
https://stackoverflow.com/questions/416856/determining-a-users-group-mem ...
Ich weiß nur nicht, welche userrechte zum abfragen des AD benötigt werden
Gruß
em-pie
Servus.
Doch, kein Thema. Scripte dazu findest du zum Thema von mir hier eigentlich schon zu Hauf.
Viel Spaß damit. Persönlichen Support dafür gibt's gerne gegen Aufwandsentschädigung per PN.
Grüße Uwe
Doch, kein Thema. Scripte dazu findest du zum Thema von mir hier eigentlich schon zu Hauf.
Ich denke das dass löschen des Gelben und Blauen Bereichs bei einem erneuten ausführen zu Problemen führen könnte.
Nö, nicht wirklich, hier hast du alles was du brauchst inkl. Kommentaren für die wichtigsten Zeilen), Kenntnisse in VBA Entwicklung mit Excel sind bei der COM-Automation Pflichtprogramm, ansonsten wirst du wenn du dich selbst daran versuchst verzweifeln, es gilt wie immer: Ohne Fleiß kein Preis!:# Load AD Module
Import-Module ActiveDirectory
# filepath with data
$file = 'D:\Users.xlsx'
if(!(Test-Path $file)){
Write-Error "Excel File '$file' does not exist." -Category ObjectNotFound
return
}
write-host "Processing Users, please wait ... " -NoNewline
# create excel com object (installed excel required)
$objXL = New-Object -Com Excel.Application -EA Stop
# disable dialogs/alerts
$objXL.DisplayAlerts = $false
# open workbook
$wb = $objXL.Workbooks.Open($file)
# data is on sheet 1
$ws = $wb.Sheets.Item(1)
# get range of groups (headers B1:Bx)
$rngGroups = $ws.Range("B1",$ws.Range("B1").End(-4161))
# Start of output range
$rngOut = $ws.Range("A2")
# first clear users range
$ws.UsedRange.Offset(1,0).ClearContents() | out-null
# itterate AD Users
Get-ADUser -Filter * | %{
# write username in column A
$rngOut.Value() = $_.SamAccountName
# get users group membership
$groups = Get-ADPrincipalGroupMembership $_.SamAccountName | select -Expand Name
# Compare groups in sheet with membership of users and place x in the matching column
$rngGroups | ?{$_.Value() -in $groups} | %{
# output cell
$rngOutCell = $rngOut.Offset(0,$_.Column -1)
# write x in cell
$rngOutCell.Value() = "x"
# center content of cell horizontal
$rngOutCell.HorizontalAlignment = -4108
}
# move output range one row further
$rngOut = $rngOut.Offset(1,0)
}
# make Excel visible
$objXL.Visible = $true
# enable dialogs/alerts
$objXL.DisplayAlerts = $true
write-host "Finished." -F Green
# free com ressources
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($objXL) | out-null
Grüße Uwe

Danke für das Skript! Lässt sich bestimmt irgendwann mal verwenden.
Gruß Werner
Gruß Werner