Ich versuche, nur aktivierte Mitglieder abzurufen, die in mehreren Gruppen sind, bin mir aber nicht sicher, wie ich dies im gewünschten Format erreichen kann. Mein aktuelles Skript sieht wie folgt aus.
$GroupList = @('GroupA','GroupB'
)
$Groupusers = @()
foreach ($Groups in $GroupList)
{
$Groupusers += Get-ADGroupMember -Identity $Groups | select @{Name="Groups";Expression={$Groups}},name
}
$Groupusers | Export-Csv -Path "C:\Users\Me\Documents\users.csv" -NoTypeInformation -Encoding Unicode
Das obige Skript funktioniert und formatiert die Ausgabe für mein Ziel, schließt aber auch die deaktivierten Benutzer ein.
Ausgabe:
Gruppenname
GruppeA BenutzerA
GruppeB BenutzerB
Ich habe das folgende Skript ausprobiert. Dadurch bekomme ich alle aktivierten Benutzer, allerdings nicht in einem Format wie das obige Skript.
$groupname = @('GroupA', 'GroupB')
$Groupusers=@()
foreach ($group in $groupname)
{
$Groupusers += Get-ADGroupMember -Identity $group | ? {$_.objectclass -eq "user"}
}
$result= @()
foreach ($activeusers in $Groupusers)
{
$result += (Get-ADUser -Identity $activeusers | ? {$_.enabled -eq $true} | select Name, Enabled)
}
$result
Wie kann ich die obige Ausgabe erreichen, aber nur mit aktivierten Benutzern? Danke.
Antwort1
Wenn Sie die Formatierung des ersten Skripts beibehalten möchten, sollte dies für Sie funktionieren. Erstellen Sie einfach ein zweites Array, das nur die aktivierten $groupusers enthält, und schreiben Sie nur diese Teilmenge in Ihre Ausgabedatei.
$GroupList = @('GroupA','GroupB')
$Groupusers = @()
foreach ($Groups in $GroupList)
{
$Groupusers += Get-ADGroupMember -Identity $Groups | select @{Name="Groups";Expression={$Groups}},name
}
$activeusers = @()
foreach ($user in $Groupusers)
{
$n = $user.name
$props = get-aduser -filter "name -eq '$n'" | select samaccountname, enabled
if ($props.enabled)
{
$activeusers += $user
}
}
$activeusers | Export-Csv -Path "C:\Users\Me\Documents\users.csv" -NoTypeInformation -Encoding Unicode