我正在寻找一个可以让我明白的PowerShell脚本:

  • OU's的名称
  • 每个OU中的AD用户数。

  • 我发现了这一点:
    (Get-ADUser -Filter * -SearchBase “ou=Users,ou=A1,dc=contoso,dc=com”).count
    

    这正是我想要的,但是我必须输入每个OU名称。问题是我们有100多个OU's。我要在其中运行的特定OUcontoso.com\cmsg\users下的cmsg\users,即100多个OU's所在的位置。

    最佳答案

    我建议您从另一个角度出发。每个广告用户都包含有关其父容器的信息。由于您已经返回了所有用户。让我们用它来确定计数。请注意,如果您拥有较少用户的OU,它们将不会显示在结果中。

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

    当然,您仍然可以使用-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
        }
    }
    

    关于powershell - 获取特定OU及其子OU的用户数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32484212/

    10-13 09:28