Powershell: Funktion zum auslesen der Gruppen eines Referenzusers
Moin zusammen,
ich habe mal wieder ein Problem und bin mir nicht sicher ob es sich um einen Bug oder einen Fehler von mir handelt.
Ich habe die folgende Funktion gebaut, die mir von einem Benutzer im AD die Gruppen auslesen soll und gegen eine Blackliste prüft. Nur Gruppen die nicht in der Blacklist sind, sollen zugewiesen werden. Ich habe das Problem, das immer nur 46 Gruppen ausgelesen werden - und dann ist ohne Fehler schluss.
Nach Aufruf der Funktion erhalte ich die folgende Rückmeldung:
Wenn ich aber die folgende Zeile manuell ausführe, erhalte ich alle Gruppen des Users (bei mir mehr als 90):
Habe ich was übersehen? Wo liegt der Fehler??
Thx
Nagus
ich habe mal wieder ein Problem und bin mir nicht sicher ob es sich um einen Bug oder einen Fehler von mir handelt.
Ich habe die folgende Funktion gebaut, die mir von einem Benutzer im AD die Gruppen auslesen soll und gegen eine Blackliste prüft. Nur Gruppen die nicht in der Blacklist sind, sollen zugewiesen werden. Ich habe das Problem, das immer nur 46 Gruppen ausgelesen werden - und dann ist ohne Fehler schluss.
----- Funktion Referenz-User - liest Refernz User Gruppen aus --- return= $RefUserGrp
Function Referenz-User([String]$RefUserGrp)
{
try
{
$RefUserGrp = @()
$CountAddGrp=0
$CountDenGrp=0
$CountBlkGrp=0
$RefUserGrpTmp = get-aduser $RefUser -Properties * | select SamAccountName,@{n='Groups';e={$_.memberof | %{(get-adgroup $_).Name}}}
sleep 2
ForEach($r in $RefUserGrpTmp.Groups)
{
$r=$r.trim()
Write-host "prüfe auf $($r)"
$CountAllGrp ++
$countBlkGrp=0
ForEach($b in $Gruppen_Blacklist.gruppen)
{
$b=$b.trim()
$countBlkGrp++
if($r -eq $b)
{
$AddGrp="nok"
write-log "Gruppe $($r) ist auf BLACKLIST und wird nicht zugewiesen" 1
$CountDenGrp++
}
else
{
$AddGrp = "OK"
}
}
if($AddGrp -ne "OK")
{
$RefUserGrp += "$r;"
#write-log "Zuweisung Gruppe $($r)"
$CountAddGrp++
}
}
return $RefUserGrp
}
catch
{
If($RefUser -eq "")
{
Write-log "Der Referenz User wurde nicht angegeben und ist leer" 1
}
else
{
Write-Log "Der Referenz User $($RefUser) existiert nicht" 1
}
$RefUser
$error
}
finally
{
Write-log "$($CountAllGrp) geprüfte Gruppen"
Write-log "$($CountAddGrp) Gruppen werden $($u.Kürzel) zugewiesen"
Write-Log "$($CountDenGrp) Gruppen werden $($u.Kürzel) nicht zugewiesen"
Write-Log "$($CountBlkGrp) Blacklist-Gruppen durchsucht"
}
}
Nach Aufruf der Funktion erhalte ich die folgende Rückmeldung:
[2021-01-07 19:18:36] - [INFO] 46 geprüfte Gruppen
[2021-01-07 19:18:36] - [INFO] 0 Gruppen werden XXXXX zugewiesen
[2021-01-07 19:18:36] - [INFO] 8 Gruppen werden XXXXX nicht zugewiesen
[2021-01-07 19:18:36] - [INFO] 670 Blacklist-Gruppen durchsucht
Wenn ich aber die folgende Zeile manuell ausführe, erhalte ich alle Gruppen des Users (bei mir mehr als 90):
$RefUserGrpTmp = get-aduser $RefUser -Properties * | select SamAccountName,@{n='Groups';e={$_.memberof | %{(get-adgroup $_).Name}}}
Habe ich was übersehen? Wo liegt der Fehler??
Thx
Nagus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 638599
Url: https://administrator.de/contentid/638599
Ausgedruckt am: 05.11.2024 um 04:11 Uhr
1 Kommentar
Habe ich was übersehen? Wo liegt der Fehler??
Ja hast du, du hast die Zähler-Variablen erst zu spät innerhalb des try Blocks angelegt und diese sind im finally Block nicht mehr die gleichen(nicht sichtbar) weil das dort ein anderer Scope ist.Das was du dort siehst sind wohl Ergebnisse dieser Variablen die du bei deinen Tests angelegt hast und noch in der PS-Session vorhanden waren nur aber eben mit alten Ergebnissen.
Definiere sie außerhalb des try catch finally dann sind die Variablen auch in allen Blocks des try catch finally sichtbar.
Beschäftige dich also mal mit dem Variable Scope.
https://docs.microsoft.com/de-de/powershell/module/microsoft.powershell. ...