4

空になっているすべての Active Directory グループを取得する方法を見つけようとして立ち往生しています。このコマンドは、Members を持たず、MemberOf ではないグループを選択します。

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

これはほとんど正しいですが、既定のグループDomain Computersのような特定のグループが空であると言っていますが、空ではありません。この特定のグループには、コンピューターであるメンバーのみが含まれていますが、コンピューターのみを含む他のグループも選択されていないようです。

このコマンドがメンバーを持つものを引き込む理由を誰かが知っていますか?

4

6 に答える 6

5

Get-QADGroupコマンドレットにはパラメーターがあります-Empty。ヘルプの説明は、これらの既定のグループが返される理由を示しています。

注: 「メンバー」属性が設定されていない場合、グループは空と見なされます。したがって、このパラメーターは、グループがプライマリ グループとして設定されているメンバーのみを含むグループを取得できます。たとえば、Domain Users グループは、通常、「メンバー」属性が設定されていないユーザー アカウントのプライマリ グループです。

私は 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

実際には、複数のドメイン、多数のグループ (および多数のユーザー) が存在する環境では、スクリプトとして実行するのに時間がかかります。注: PowerShell Active directory モジュールをロードする必要があります (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

このバージョンでは、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 に答える
0

パイピングして、フィルタリングできるメンバーとメンバーの数を取得することで、適切に値を取得できましGet-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 に答える