我正在尝试获取 AD 组中所有成员的列表,其中显示活跃 \ 非活跃用户。目的是获取组中的所有成员并列出具有管理员权限的成员。
我执行了以下命令:
$GROUPNAME = "Domain Admins"
Get-ADGroupMember -identity $GROUPNAME -Recursive | Select name, SamAccountName, objectclass | Sort-Object Name
尝试与 Get-ADUser -Filter {Enabled -eq $false} 结合使用,但我需要第一个 cmdlet 来为我输出用户,这样我才能使用 Get-ADuser 进行过滤。
提前致谢
答案1
这样做:
$groupname = "Domain Admins"
$users = Get-ADGroupMember -Identity $groupname | ? {$_.objectclass -eq "user"}
foreach ($activeusers in $users) { Get-ADUser -Identity $activeusers | ? {$_.enabled -eq $true} | select Name, SamAccountName, UserPrincipalName, Enabled }
如果要禁用,只需替换最后一个 cmdlet:
foreach ($activeusers in $users) { Get-ADUser -Identity $activeusers | ? {$_.enabled -eq $false} | select Name, SamAccountName, UserPrincipalName, Enabled }
答案2
使用上面 Marlon 的回答。如果您想将其作为列表输出为文本或 CSV,您可以这样做:
$groupname = "Domain Admins"
$users = Get-ADGroupMember -Identity $groupname | ? {$_.objectclass -eq "user"}
$result = @()
foreach ($activeusers in $users) { $result += (Get-ADUser -Identity $activeusers | ? {$_.enabled -eq $true} | select Name, SamAccountName, UserPrincipalName, Enabled) }
$result | Export-CSV -NoTypeInformation .\active_domain_admins.csv
如果您只想输出到文本文件,您可以将最后一行切换为:
$result | Out-File .\active_domain_admins.txt
答案3
您正在寻找这样的东西吗?
$GrpName = '[Group Name]'
$ExportPath = 'C:\\Temp\\' + $GrpName + '-GroupMembers.csv'
$Grp = Get-ADGroup $GrpName | Get-ADGroupMember -Recursive | Get-ADUser -Properties Name,Mail,Enabled | Select-Object Name,Mail,Enabled | Where-Object {$_.Enabled -eq $True}
$Grp.Count
$Grp | Export-Csv -NoType $ExportPath
答案4
我的“一句话”。感谢以上回答。
$GROUPNAME = "Domain Admins"
Get-ADGroupMember $GROUPNAME | Get-ADUser | Where-Object -Property enabled -eq $true | select name