この記事では Exchange Online で CSV ファイルにリストされているメールアドレス宛のメール配送ログを取得するための PowerShell スクリプトを紹介します。
目次
全体の流れ
- CSV ファイルを読み込み、メールアドレスのリストを取得します。
Import-Csv
コマンドを使用してメールアドレスのリストを読み込みます。- CSV ファイルのパスは変数として設定します。
- 各メールアドレスについて
Get-MessageTrace
コマンドを実行してメール配送ログを取得します。- 各メールアドレスに対して
Get-MessageTrace
コマンドを実行します。 - 必要に応じて開始日と終了日を設定します。
- 各メールアドレスに対して
- 取得したログを CSV ファイルに出力します。
Export-Csv
コマンドを使用して結果を新しい CSV ファイルに出力します。
PowerShell スクリプト
# Exchange Online に PowerShell 接続します
Connect-ExchangeOnline
# CSV ファイルのパスを設定します
$inputCsvPath = "path\to\input\email_list.csv"
$outputCsvPath = "path\to\output\message_trace_results.csv"
# 開始日と終了日を設定します
$startDate = (Get-Date).AddDays(-7) # 例えば、過去7日間のログを取得
$endDate = Get-Date
# CSV ファイルを読み込みます
$emailAddresses = Import-Csv -Path $inputCsvPath
$num = @($emailAddresses).Count
$i = 0
# 結果を格納するためのリストを作成します
$messageTraceResults = @()
# 各メールアドレスに対してメール配送ログを取得します
foreach ($email in $emailAddresses) {
$i++
$emailAddress = $email.EmailAddress # CSV の列名が 'EmailAddress' と仮定
# メール配送ログを取得します
$messageTraces = Get-MessageTrace -RecipientAddress $emailAddress -StartDate $startDate -EndDate $endDate
# 結果をリストに追加します
$messageTraceResults += $messageTraces
Write-Host "$email 宛のメール配送ログ検索が完了しました。($i / $num)"
}
# 結果を CSV ファイルに出力します
$messageTraceResults | Export-Csv -Path $outputCsvPath -NoTypeInformation -Encoding UTF8
スクリプト説明
$inputCsvPath
と$outputCsvPath
はそれぞれ入力と出力の CSV ファイルのパスです。$startDate
と$endDate
は検索対象の期間を設定しています。Import-Csv
コマンドで入力の CSV ファイルからメールアドレスを読み込みます。foreach
ループ内で各メールアドレスに対してGet-MessageTrace
コマンドを実行し、結果を$messageTraceResults
リストに追加します。- 最後に
Export-Csv
コマンドで結果を出力用の CSV ファイルに保存します。
このスクリプトを実行することで、指定されたメールアドレスのメール配送ログを取得し、結果を CSV ファイルに出力できます。