获取特定OU及其子OU中的用户数

The*_*tor 7 powershell active-directory

我正在寻找一个能让我获得的PowerShell脚本:

  1. 的名字 OU's
  2. 每个AD用户数的计数OU.

我发现了这个:

(Get-ADUser -Filter * -SearchBase “ou=Users,ou=A1,dc=contoso,dc=com”).count
Run Code Online (Sandbox Code Playgroud)

这正是我想要的,但我必须输入每个OU名字.问题是我们有100多个OU's.具体OU我想要运行它是contoso.com\cmsg\userscmsg\users100+ OU's所在的地方.

Mat*_*att 5

我建议你从另一个角度来看待这个问题。每个广告用户都包含有关其父容器的信息。因为您已经返回了所有用户。让我们用它来确定计数。需要注意的是,如果您有无用户的 OU,它们将不会显示在结果中。

Get-ADUser -Filter * -Properties CN | 
    Select-Object @{Label='ParentContainer';Expression={$_.Distinguishedname -replace "CN=$($_.cn),"}} | 
    Group-Object -Property ParentContainer | 
    Select-Object Name,Count
Run Code Online (Sandbox Code Playgroud)

当然你仍然可以使用-SearchBase来缩小范围Get-ADUser

如果这不是您想要的,您的下一个解决方案将需要Get-ADOrganizationalUnit的输出。

$ous = Get-ADOrganizationalUnit -Filter * -SearchBase "ou=Users,ou=CMSG,dc=contoso,dc=com" | Select-Object -ExpandProperty DistinguishedName
$ous | ForEach-Object{
    [psobject][ordered]@{
        OU = $_
        Count = (Get-ADUser -Filter * -SearchBase "$_").count
    }
}
Run Code Online (Sandbox Code Playgroud)