powershell脚本可查询属于某个组名及其变体的所有用户

时间:2018-10-24 01:53:55

标签: powershell active-directory

我正在尝试查找属于“ 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

谢谢。

2 个答案:

答案 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 $_}