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
Und Sie verwenden nicht den '-Recursive' Parameter, weil ... –