おはこんばんにちは、ビショップです。
最近Microsoft365をいじらされてます。
PowerShellを使わないと管理できないものもあり、非常に面倒です。
コマンドを作って、適宜実行できるようにps1にして保存しています。
備忘録的にコマンドの一部を記録しようと思います。
前回はGet-DistributionGroupコマンドを使って、グループ情報を出力する方法を紹介しました。
今日は、その発展系、Get-DistributionGroupMemberコマンドを使って、グループに所属しているメンバーの情報を出力したいと思います。
ちゃんと管理しようと思うと、どのグループにどのメンバーがいるのか、一覧がないと管理しきれないことがあるので、私としては結構使う頻度の高いコマンドです。
通常、Get-DistributionGroupMemberコマンドでは、ユニークなグループのプライマリSMTPアドレスを指定しないとメンバー情報を検索することができません。
なので、foreachステートメントを使用して、Get-DistributionGroupで取得したグループの数だけ検索を実行して、CSVにまとめて出力する方法を取ります。
# 実行ファイルのディレクトリ $CurrentDir = Split-Path $MyInvocation.MyCommand.path # 出力先ディレクトリ $ExpDir = $CurrentDir + "\export_file\" # 検索対象 # ディレクトリの存在チェック If (!(Test-Path $ExpDir)) { # 存在しない場合、ディレクトリ作成 New-Item $ExpDir -ItemType Directory } # グループメンバー一覧 $GroupMember = foreach ($i in Get-DistributionGroup){Get-DistributionGroupMember -Identity $i.PrimarySmtpAddress | select @{n="DistribustionGroupName";e={$i.Name}}, @{n="DistributionGroupMailAddress";e={$i.PrimarySmtpAddress}}, Name,DisplayName,Identity,Alias,PrimarySmtpAddress,City,Notes,Company,CountryOrRegion,PostalCode,CustomAttribute1,CustomAttribute2,CustomAttribute3,Office,ResourceType,Phone,RecipientType,RecipientTypeDetails,Title,WhenMailboxCreated,WhenChanged,WhenCreated,ManagedBy,Id} $GroupMember | Export-Csv -Encoding UTF8 -Path $ExpDir"DistributionGroupMember.csv"
今回もSelect句をつけて、必要そうな情報に絞って抽出してCSVに吐き出しています。必要なものを追加したり、不要なものは削除したりしてください。
グループがたくさんあるとかなり時間がかかります。必要に応じてIdentityなどでDistributionGroup自体を絞っておいた方が効率的だと思います。
次回は、メールボックスのパーミッション情報をまとめて取得する方法を紹介しようと思います。