使用 Powershell 从 Active Directory 组获取所有用户

使用 Powershell 从 Active Directory 组获取所有用户

我编写了一个 powershell 脚本,该脚本可从 OU 获取所有组并将它们存储在变量 $groups 中。我希望能够访问每个组的用户,但似乎遇到了麻烦。我试过:

foreach($group in $groups){$get-ADUser $group}

这给了我以下错误:

You must provide a value expression on the right-hand side of the '-' operator.
At line:1 char:33
+ foreach($group in $groups){$get- <<<< ADUser $group}
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpectedValueExpression

我在 Windows 7 机器上使用 Windows Server 2003 R2。我对此还很陌生,因此非常感谢任何帮助。

答案1

检索仅有的成员是用户,而不是组:

foreach($group in $groups)
{
  Get-ADGroupMember $group | Where-Object {$_.objectClass -eq "user"}
}

如果您想要间接属于组成员的用户(通过嵌套组成员身份),请使用-Recursive切换参数:

foreach($group in $groups)
{
  Get-ADGroupMember $group -Recursive | Where-Object {$_.objectClass -eq "user"}
}

然后,您可以将输出分配给变量以供进一步使用,如下所示:

$AllGroupMembers = foreach($group in $groups)
{
  Get-ADGroupMember $group -Recursive | Where-Object {$_.objectClass -eq "user"}
}

答案2

尝试这个:

foreach ($group in $groups)
{
    Get-ADGroupMember $group | select Name
}

Get-ADUser正在寻找 Active Directory 用户对象,您本质上要做的就是在 Active Directory 组对象上使用该 cmdlet。

相关内容