2017-12-08 2 views
0

Ich habe ein ziemlich großes Audit-Projekt, das ich zu automatisieren hoffe.Powershell Mitglieder der Gruppe rekursiv abrufen

Ich brauche jeden Benutzernamen, SamAccountName, Titel und Abteilung, die Teil einer Gruppe sind. Problem ist, die Gruppe hat Gruppen und Gruppen haben Gruppen in ihnen. Ein anderes Problem ist, dass etwa 99% aller Gruppen einen Stern im Display-Namen haben (NOT SamAccountName).

Hier ist der Code, den ich derzeit habe, es funktioniert gut, bis es eine Gruppe mit einem Sternchen in seinem Namen erhält .. (daher der .Replace ("*", "") Teil .... Jeder hat irgendwelche Ideen auf, wie dies zu beheben?

function Get-NestedGroupMember { 
[CmdletBinding()] 
param(
    [Parameter(Mandatory)] 
    [string]$Group 
) 
$broke = @(); 
## Find all members in the group specified 
$members = Get-ADGroupMember -Identity $Group 
foreach ($member in $members){ 
    ## If any member in that group is another group just call this function again 
    if ($member.objectClass -eq 'group'){ 
     $memberGroup = $($member.Name).Replace("*", "") 
     try{ 
      Get-NestedGroupMember -Group "$($memberGroup)" 
     }catch{ 
      $broke += "$($memberGroup)`n" 
     } 
    }else{ 
     ## otherwise, just output the non-group object (probably a user account) 
     $member.Name 
    } 
} 
Write-Host "`nThe following groups could not be found automatically.`n`n$($broke)" 
} 

$getGroup = Read-Host -Prompt "Group name" 

Get-NestedGroupMember $getGroup 
+1

Und Sie verwenden nicht den '-Recursive' Parameter, weil ... –

Antwort

1

wie Bill_Stewart sagte, versuchen Sie die Funktionalität zu implementieren, die bereits für Sie vorhanden ist. Get-ADGroupMember hat einen -Recursive Parameter, der alle verschachtelten Gruppen und erhalten die Mitglieder für Sie suchen. Sie können dann die Ausgabe zu einer Auswahl pipen und erhalten nur die Eigenschaften, die Sie interessieren.

AD: 
    TopGroup 
    Betty 
    Bob 
    NestedGroup1 
     Joe 
     Frank 
    NestedGroup2 
     George 
     Herman 

Verwenden von -Recursive

Get-AdGroupMember TopGroup -Recursive | Select-Object SamAccountName 
Betty 
Bob 
Joe 
Frank 
George 
Herman 
Verwandte Themen