これは準備段階のスクリプトです。少し見苦しく、多少の作業が必要ですが (特に pop3 ログ セクション)、定期的に使用して作業を楽にしています。これは Powershell ISE で使用することを目的としているため、一番下に Easy Rerun セクションを含めました。役立つと思われる場合は、提案、修正、およびクリーンアップを提供してください。
環境に合わせて MailServerName と Log Folders を更新してください。
# == これらを設定することから始めます ==
$SearchFilter = "sonic.net"
$StartDate = (Get-Date).AddDays(-1) #(Get-Date 10/01/2012)
$EndDate = (Get-Date).AddDays(-0) #(Get-Date 11/01/2012)
$mailserver = "メールサーバー名"
$OutputFolder = "$env:userprofile\Desktop\ExchangeLogs\"
$IISLogsFolder = "\\$mailserver\c$\inetpub\logs\LogFiles\W3SVC1"
$POP3LogsFolder = "\\$mailserver\c$\Program Files\Microsoft\Exchange Server\V14\Logging\POP3" # 未テスト
$SMTPLogsFolder = "\\$mailserver\c$\Program Files\Microsoft\Exchange Server\V14\TransportRoles\Logs\MessageTracking"
$POP3OutFile = "$OutputFolder\ExchangePOP3Logs.csv"
$IISOutFile = "$OutputFolder\ExchangeIISLogs (owa、exchange、および activesync).csv"
$SMTPOutFile = "$OutputFolder\ExchangeSMTPLogs.csv"
# == 初期化 ==
関数チェック-IISLogs {
$IISFiles = Get-ChildItem $IISLogsFolder *.log|Where-Object {($_.CreationTime -gt $StartDate) -and ($_.CreationTime -lt $EndDate)}
$IISHeader = ($IISFiles|Select-Object -First 1|Get-Content|select-string "#fields"|Select-Object -First 1).ToString().Substring(9).split(" ")
$IISLogs = $IISFiles|Get-Content|Select-String $SearchFilter # 正規表現検索を実行できる可能性があります (未テスト)
$IISLogsCsv = $IISLogs|ConvertFrom-Csv -Delimiter " " -header $IISHeader
$IISLogsCSV|Export-Csv -パス "$IISOutFile"
#エクセル起動 "$IISOutFile"
}
function Check-Pop3Logs { # !!!未テスト!!!
$POP3Files = Get-ChildItem $POP3LogsFolder *.log|Where-Object {($_.CreationTime -gt $StartDate) -and ($_.CreationTime -lt $EndDate)}
$POP3Header = ($POP3Files|Select-Object -First 1|Get-Content|select-string "#fields"|Select-Object -First 1).ToString().Substring(9).split(" ") #ToDo : select-string、substring、および split([delimiter]) を更新します。
$POP3Logs = $POP3Files|Get-Content|Select-String $SearchFilter # 正規表現検索を実行できる可能性があります (未テスト)
$POP3LogsCsv = $POP3Logs|ConvertFrom-Csv -Delimiter " " -header $POP3Header #ToDo: update Delimiter
$POP3LogsCSV|Export-Csv -パス "$POP3OutFile"
#Excel "$POP3OutFile" を開始
}
関数チェック-SMTPLogs {
$SMTPFiles = Get-ChildItem $SMTPLogsFolder *.log|Where-Object {($_.CreationTime -gt $StartDate) -and ($_.CreationTime -lt $EndDate)}
$SMTPHeader = ($SMTPFiles|Select-Object -First 1|Get-Content|select-string "#fields"|Select-Object -First 1).ToString().Substring(9).split(",")
$SMTPLogs = $SMTPFiles|Get-Content|Select-String $SearchFilter # 正規表現検索を実行できる可能性があります (未テスト)
$SMTPLogsCsv = $SMTPLogs|ConvertFrom-Csv -Delimiter "," -header $SMTPHeader
$SMTPLogsCSV|Export-Csv -パス "$SMTPOutFile"
#Excel "$SMTPOutFile" を開始
}
# == 実行 ==
Check-IISLogs
#Check-Pop3Logs # まだ動作しません
Check-SMTPLogs
New-Item -Type Directory $OutputFolder -ErrorAction silentlycontinue
$OutputFolder を開始
<# -- 簡単に再実行
$SearchFilter = "ユーザー名"
#$StartDate = (Get-Date).AddDays(-1) #(Get-Date 10/01/2012)
#$EndDate = (Get-Date).AddDays(-0) #(Get-Date 11/01/2012)
Check-IISLogs
#Check-Pop3Logs # まだ動作しません
Check-SMTPLogs
$OutputFolder を開始
#>