我正在尝试查找属于“ Windows”组的所有用户。 我想显示他们的ID,姓氏,名字。
所需的输出格式:
Windows Users,1234567,John,Doe
Windows Administators,7654321,Jane,Doe
这种单行代码所做的事情比我想要的要少得多,但每次从“ Windows用户”到“ Windows PowerUsers”到“ Windows管理员”等我都需要修改参数标识。
示例:
Get-ADGroupMember -identity "Windows Users" -Recursive | Get-ADUser | select SamAccountName, Surname, GivenName
所以我尝试将所有内容放在一起,但这给了我错误。
$ADGroups = Get-ADGroup -Filter {name -like "Windows*"}
foreach ($ADGroup in $ADGroups) {
Get-ADGroup -filter {Name -eq $ADGroup.Name} | Get-ADGroupMember -identity
$ADGroup.Name -Recursive | Get-ADUser | select SamAccountName, Surname, GivenName
}
任何想法将不胜感激。我不知道如何捕获属于Windows *组的所有用户,例如“ Windows用户”到“ Windows PowerUsers”到“ Windows管理员”等
注意:我调查了这个问题,但并不是我要找的Powershell script to display all Users in a Group AD
谢谢。
答案 0 :(得分:2)
您的示例是一个好的开始。
尝试这个。它应该完成这项工作:
Get-ADGroup -Filter {name -like "Windows*"} | foreach {
$currentGroup = $_.Name
$_ | Get-ADGroupMember | foreach {
$_ | Get-ADUser | select @{name="Group"; expression={ $currentGroup }}, SamAccountName, Surname, GivenName
}
}
答案 1 :(得分:1)
我目前无法访问AD,但我会尝试一下
get-aduser -filter {memberof -like "Windows*"} -property samaccountname,surname,givenname,memberof | select samaccountname,surname,givenname
或者您可以在原始的foreach循环中尝试使用此方法...
get-adgroup -filter {name -eq $adgroup.name} | select -expand members | get-aduser $_ | select samaccountname,surname,givenname
我不记得“成员”产生了什么,我相信这是samaccountname,您可以将ldap过滤器添加到get-aduser -filter {whatever -eq $_}