前提条件
Windows PowerShell で Exchange Online へ接続済みであること
以下プログラムを実行する
# 現在の日付と時間を取得(形式はyyyyMMdd_HHmmss)
$currentDateTime = Get-Date -Format "yyyyMMdd_HHmmss"
# 出力ディレクトリを設定(Cドライブ配下に 'maillist_日付_時間' フォルダ)
$outputDirectory = "C:\maillist_$currentDateTime"
# 出力ディレクトリが存在しない場合は作成
if (-Not (Test-Path $outputDirectory)) {
New-Item -Path $outputDirectory -ItemType Directory
}
# Get-DistributionGroupの一覧をCSVとして保存
$groupListPath = "$outputDirectory\_MailList.csv"
Get-DistributionGroup -ResultSize Unlimited | Select-Object Name,DisplayName,PrimarySmtpAddress | Export-Csv -Path $groupListPath -NoTypeInformation
# Get-DistributionGroupから取得した一覧をループで処理
Get-DistributionGroup -ResultSize Unlimited | ForEach-Object {
$groupIdentity = $_.PrimarySmtpAddress
# CSVファイル名を設定(特殊文字をエスケープする場面も考慮)
$csvFileName = "$($groupIdentity -replace '[\/:*?"<>|]', '_').csv"
# 出力先のフルパスを設定
$outputPath = "$outputDirectory\$csvFileName"
# 各グループに対してGet-DistributionGroupMemberを実行し、CSVとして出力
Get-DistributionGroupMember -Identity $groupIdentity | Select-Object DisplayName,Department,PrimarySmtpAddress | Export-Csv -Path $outputPath -NoTypeInformation
}
maillist_yyyyMMdd_HHmmssでディレクトリが作成されます。
メーリングリストの一覧を作成し、MailList.csvに格納されます。
※(アンダーバー)が入っているのは、一番上に表示させたいからです。
また上記ディレクトリ配下にメーリングリストごとにメーリングリストに所属するユーザーが格納されます。