トップ回答者
ADGroupメンバーの基本的な属性以外のエクスポートについて

質問
回答
-
チャブーンです。
この件、返答が遅くなりましたが、なぜ Get-ADGroupMember -Recursiveではだめなのでしょうか?OU内グループのメンバーとなるユーザーの情報が最終的に必要なのでしょうから、一度で取得できるこの方法が、かなり簡単だと思います。
どうしてもそうでない方法、ということでしたら、仕方ないのでobjectClassで識別する方法になるでしょう。具体的な処理は書きませんが、やり方としては以下のようになると思います。
$Objects = Get-ADObject -Filter * -SearchBase "<OUのDN>" Foreach ($Object in $Objects) { IF ($Object.objectClass -eq "user") { <Get-ADUserの処理を書く>
} ElseIF ($Object.objectClass -eq "group") { <Get-ADGroupの処理を書く>
} }フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答としてマーク kumo-msftMicrosoft contingent staff, Moderator 2020年10月15日 1:19
すべての返信
-
チャブーンです。
この件ですが、以下のGet-ADGroupMemberを使うと、うまくいくのではないでしょうか。-Recursiveオプションでメンバーとなっているグループのメンバーを再帰的に検索すると、シアワセになれそうです。
$Users = Get-ADGroupMember -Recursive <グループ名> | Get-ADUser -Properties * | Select sAMAccountName, userPrincipalName, mailNickName $Users | Export-CSV -NoTypeInformation <CSVファイル名> -Encoding Default
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 編集済み チャブーンMVP 2020年9月24日 7:34 コード誤りの修正
-
御返信、ありがとうござます。
実現したいことの説明が不足していました、申し訳ありません。
エクスポートしたい情報は、AD上の任意のグループについてプロパティ画面のメンバータブで表示される、グループとユーザーの各アカウントの基本的な属性以外(特にmailNickname)の値です。
なお、mailNicknameには別途データを埋め込ませています。
メンバーの各々について、ユーザーアカウントであれば「Get-ADUser」、グループアカウントであれば「Get-ADGroup」を使い分ければ、mailNicknameを取得できることはわかっているので、アカウントの種類に応じて、「Get-ADUser」と「Get-ADGroup」を自動選択?できれば良いのではないかと思っていますが、条件分岐やエラー処理などの知識が足りず、実現できずにいます。
1つのスクリプトで任意のOUにあるグループごとに、メンバー情報をエラー表示なくエクスポートするお手本をお教えいただけないでしょうか?
-
チャブーンです。
この件、返答が遅くなりましたが、なぜ Get-ADGroupMember -Recursiveではだめなのでしょうか?OU内グループのメンバーとなるユーザーの情報が最終的に必要なのでしょうから、一度で取得できるこの方法が、かなり簡単だと思います。
どうしてもそうでない方法、ということでしたら、仕方ないのでobjectClassで識別する方法になるでしょう。具体的な処理は書きませんが、やり方としては以下のようになると思います。
$Objects = Get-ADObject -Filter * -SearchBase "<OUのDN>" Foreach ($Object in $Objects) { IF ($Object.objectClass -eq "user") { <Get-ADUserの処理を書く>
} ElseIF ($Object.objectClass -eq "group") { <Get-ADGroupの処理を書く>
} }フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答としてマーク kumo-msftMicrosoft contingent staff, Moderator 2020年10月15日 1:19
-
御教授、ありがとうございます。
使用しているファイルサーバ上に複数の共有フォルダがあるのですが、これらのフォルダごとのアクセス権をグループで管理しています。
このグループのメンバーは、部署グループや個人ユーザーが混在しています。
組織の変更が合った際、メンバーが個人ベースだと都度メンバーの入替を行わないとならないのですが、部署グループであれば、その部署グループのメンバーを入れ替えるだけでこのアクセス権用のグループのメンバーは入れ替えずに済みます。
このような構成で利用しているため、特定のグループのメンバー構成を-Recursiveで個人ベースに置きかえて取得せず、プロパティ画面で表示される、グループとユーザーが混在する形で情報を取得したいと考えていました。
PowerShellコマンドは多岐に渡って多様なことができると思っていますが、私にとってはイメージしたものを実現するコマンドやスクリプトを調べて書き上げるのが難しく、御教授いただけてとても参考になり、感謝しております。
恥ずかしながら、objectClassで識別する方法は初めて知りました。
この後は処理の部分を書いて、情報取得ができるようにしたいと思います。
返信とお礼が遅くなり、申し訳ありませんでした。
ありがとうございました。