1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

全てのメーリングリストのメンバーをメーリングリストごとにCSVとして保存する

Posted at

前提条件

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に格納されます。
(アンダーバー)が入っているのは、一番上に表示させたいからです。
また上記ディレクトリ配下にメーリングリストごとにメーリングリストに所属するユーザーが格納されます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?