我一直试图找出如何获取所有空的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
这大多是正确的,但是它说默认组域计算机之类的某些组是空的,但它不是空的。此特定组仅包含计算机成员,但似乎未选择仅包含计算机的其他组。
有谁知道为什么这个命令会引入一些拥有成员的命令?
答案 0 :(得分:4)
Get-QADGroup
cmdlet的参数为-Empty
。帮助提示中提供了返回这些默认组的原因:
注意:如果未设置“成员”属性,则该组被视为空。因此,此参数可以检索仅包含将该组设置为主要组的成员的组。一个例子是Domain Users组,它通常是任何用户帐户的主要组,同时没有设置“member”属性。
我对Quest的东西并不熟悉,但我能够以这种方式找到空组,(可能不是最有效的):
Get-ADGroup -Filter {GroupCategory -eq 'Security'} | ?{@(Get-ADGroupMember $_).Length -eq 0}
答案 1 :(得分:3)
此行将执行(首先使用Import-Module ActiveDirectory
):
Get-ADGroup -Filter * -Properties Members | where { $_.Members.Count -eq 0 }
答案 2 :(得分:1)
此版本仅显示groupcategory和SAMaccountname。名称也可用于代替samaccountname。 groupcategory将显示其是安全组还是DL。
Get-ADGroup –Filter * -Properties Members | where { $_.Members.Count –eq 0 } |select groupcategory,samaccountname >c:\temp\nomembers.csv
答案 3 :(得分:1)
实际上,在具有多个域,大量组(以及大量用户)的环境中,将其作为脚本运行会更快丢失。 注意:您需要加载PowerShell Active目录模块(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
答案 4 :(得分:1)
这对我有用。
Get-ADGroup -Filter {GroupCategory -eq 'Security'} -Properties Members | where { $_.Members.Count -eq 0 } | Select Name | Sort-Object Name
答案 5 :(得分:0)
能够通过在Get-QADGroupMember
中管道并获取成员和 MemberOf 的计数来正确获取值,然后可以对其进行过滤。这似乎非常低效,但它的目的是获得所需的计数。
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}}
如果有人有更好的方法来做到这一点,请告诉。