4

我一直试图弄清楚如何获取所有空的 Active Directory 组。我想出了这个命令,它选择没有成员并且不是任何成员的组。

Get-QADGroup -GroupType Security -SizeLimit 0 | where-object {$_.Members.Count -eq 0 -and $_.MemberOf.Count -eq 0} | select GroupName, ParentContainer | Export-Csv c:\emptygroups.csv

这基本上是正确的,但它表示某些组,如默认组域计算机是空的,但它不是空的。此特定组只有计算机成员,但似乎没有选择其他也只有计算机的组。

有谁知道为什么这个命令会吸引一些有成员的人?

4

6 回答 6

5

Get-QADGroupcmdlet 有一个-Empty参数。帮助中的描述提示了返回这些默认组的原因:

注意:如果未设置“成员”属性,则该组被视为空组。因此,此参数可以检索仅包含将组设置为主组的成员的组。一个示例是域用户组,它通常是任何用户帐户的主要组,但未设置“成员”属性。

我不太熟悉 Quest 的东西,但我能够通过这种方式找到空组(可能不是最有效的):

Get-ADGroup -Filter {GroupCategory -eq 'Security'} | ?{@(Get-ADGroupMember $_).Length -eq 0}
于 2012-08-14T03:04:09.283 回答
4

这条线会做(Import-Module ActiveDirectory首先使用):

Get-ADGroup -Filter * -Properties Members | where { $_.Members.Count -eq 0 }
于 2013-12-06T10:45:00.870 回答
1

此版本将仅显示 groupcategory 和 SAMaccountname。Name 也可以用来代替 samaccountname。groupcategory 将显示它是安全组还是 DL。

Get-ADGroup –Filter * -Properties Members | where { $_.Members.Count –eq 0 } |select groupcategory,samaccountname >c:\temp\nomembers.csv
于 2014-02-20T20:30:14.740 回答
1

实际上,在具有多个域、大量组(和大量用户)的环境中将其作为脚本运行会更快。注意:您需要加载 PowerShell 活动目录模块(import-module activedirectory)

     $domains = Get-ADForest|select -ExpandProperty domains
     $empties = @()
     $oops = @()
     foreach ($d in $domains){
     $groups = get-adgroup -filter * -server $d
     foreach ($g in $groups){
     $q = get-adgroup $g -properties members -server $d|select -expandproperty members
     If(!$?){$oops += $g
     write-host $g.name}
     if ($q -eq $null) {$empties += $g}
     }
     }
     $empties|select name,distinguishedname|export-csv .\empties.csv
     $oops|select name,distinguishedname|export-csv .\oops.csv
于 2017-01-06T15:57:50.270 回答
1

这对我有用。

Get-ADGroup -Filter {GroupCategory -eq 'Security'} -Properties Members | where { $_.Members.Count -eq 0 } | Select Name | Sort-Object Name
于 2019-05-10T15:19:44.673 回答
0

能够通过管道输入并获取可以过滤的MembersMemberOfGet-QADGroupMember的计数来正确获取值。这似乎非常低效,但它的目的是获得所需的计数。

Get-QADGroup -SizeLimit 0 | Select-Object Name,@{n='MemberCount';e={ (Get-QADGroupMember $_ -SizeLimit 0 | Measure-Object).Count}},@{n='MemberOfCount';e={ ((Get-QADGroup $_).MemberOf | Measure-Object).Count}}

如果有人有更好的方法来做到这一点,请告诉。

于 2012-08-14T17:48:30.603 回答