痛いところは煙に巻く

製造業のしがない社内SEが日記代わりにいろいろ書く

Hello,World

Üben Sie es nur recht fleißig, so wird es schon gehen

【Microsoft365】Get-DistributionGroupMemberでグループメンバーを取得してCSVに一覧出力する

おはこんばんにちは、ビショップです。

最近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自体を絞っておいた方が効率的だと思います。

次回は、メールボックスのパーミッション情報をまとめて取得する方法を紹介しようと思います。

スポンサーリンク