1

Active Directory ドメイン内の各ユーザーのメンバーシップ リストを一覧表示しようとしています。次の行を作成しました。

foreach($_ in $(Get-ADUser -Filter *).Name){            
        Get-ADPrincipalGroupMembership -Identity $_ | select Name,Groupscope,Groupcategory| sort Name
}

問題は、このコード行を実行すると、ユーザーがグループ メンバーシップを持っていない場合に次のエラーが発生することです。

Get-ADPrincipalGroupMembership : Cannot find an object with identity: 'TEST USER' 
under: 'DC=contoso,DC=com'.

-Erroraction Silentlycontinue後ろに追加してGet-ADPrinicpalGroupMembershipも問題は軽減されません。いじりたくない$ErrorActionです。ただし、行が完了た後に変更して元に戻すこと$ErrorActionは機能します。しかし、かなりの解決策ではありません。エラーが表示されないようにする方法はありますか?"silentlycontinue"

noam のソリューションの出力: (ユーザーのメンバーシップではなく、利用可能なグループの完全なリストのみを表示します)

name                                       groupScope             groupCategory
----                                       ----------             -------------
Administrators                            DomainLocal                  Security
Distributed COM Users                     DomainLocal                  Security
Domain Admins                                  Global                  Security
Domain Users                                   Global                  Security
Enterprise Admins                           Universal                  Security
Group Policy Creator Ow...                     Global                  Security
HelpLibraryUpdaters                       DomainLocal                  Security
Schema Admins                               Universal                  Security
TESTGROUP1                                     Global                  Security
Domain Guests                                  Global                  Security
Guests                                    DomainLocal                  Security
Denied RODC Password Re...                DomainLocal                  Security
Domain Users                                   Global                  Security
4

2 に答える 2

0

これらのコマンドレットの動作についてはよくわかりませんが、表示されているエラーは、DN またはその他の一意の識別子 ( Get-ADPrincipalGroupMembership Documentation ) ではなく、 Name プロパティ値のみを使用してオブジェクトを識別したことが原因である可能性があります。 Get-ADUser を Get-ADPrincipalGroupMembership に接続して、問題が引き続き発生するかどうかを確認します (以下の例を参照してください)。また、Get-ADUser の内容を次のコマンドレットにパイプして、Get によって返された情報を保存する必要がないようにすることもできます。 -処理前のメモリ内の ADUser。

Get-ADUser -Filter * | Get-ADPrincipalGroupMembership

問題が解決しない場合:

try/catch ブロックを使用できます。

Get-ADUser -Filter * | %{ `
 try
 {
  Get-ADPrincipalGroupMembership $_
 }
 catch [Microsoft.ActiveDirectory.Management.ADIdentityResolutionException]
 {
  #Log
  Write-Host "not found"
 }
}
于 2013-09-30T20:04:41.300 に答える