kooです。( ノ゚Д゚)ヨッ!
はい、備忘録です。
ちょっくら仕事復帰のためのリハビリ的にスクリプト書き。

まぁ、使うかわかんないけどね。
とりあえず、骨部分
//セキュリティ イベント
Get-wmiobject -query "Select * from win32_ntlogevent where logfile='Security'"| export-csv security.csv
//システム イベント
Get-wmiobject -query "Select * from win32_ntlogevent where logfile='System'" | export-csv system.csv
//アプリケーション イベント
Get-wmiobject -query "Select * from win32_ntlogevent where logfile='Application'"| export-csv application.csv
各行これで、WindowsServer2008のイベントログをカレントのhogehoge.csvへ書き出すようにはなる。
ただし、あほみたいにでかいセキュリティーログを取ろうとすると、
クォータ違反です的なエラーを吐くので、やっぱり30日刻みとか少々、コツが必要になるようだ。
これだけだと、使えないけど。
それじゃ、しょうがないので。
=========================================
$IpAddress = "127.0.0.1"
$EventLogName = "Application"
$StartDate = Get-Date
$EndDate = $StartDate - (New-TimeSpan -day 6)
$file = "C:\" + $EventLogName + ".csv"
#イベントログ取得
function getEventLog ($IpAddress,$EventLogName,$StartDate,$EndDate,$file)
{
#イベントログ取得
$logArray = Get-EventLog -Computername $IpAddress -logname $EventLogName -after $EndDate -before $StartDate | Select-Object EntryType,EventID,Source,TimeGenerated,Message
#期間内のイベントログが無い場合は、ファイルにログ無しと書き込む
if ($null -eq $logArray)
{
$message = "イベントログがありません。 期間:" + $startdate + " ~ " + $enddate
$message | Out-File -Filepath $file
}
else
{
#取得したイベントログをファイルに書き込む
foreach ($row in $logArray)
{
#Messageに入っている改行コードを変換
$workMessage = [string]$row.Message.Replace("`n"," ")
#日付の書式を整形
$workTimeGenerated = [string]$row.TimeGenerated.ToString("yyyy/MM/dd HH:mm:ss")
#一行としてまとめる
$line = $workTimeGenerated + "`t" + [string]$row.EntryType + "`t" + [string]$row.EventID + "`t" + [string]$row.Source + "`t" + $workMessage
#ファイルに書き込む
$line | Out-File -Filepath $file -Append
}
}
#ファイルの存在チェックをして終了
if (Test-Path $file)
{
#ログを出力
Write-Host $file "を作成しました。"
}
}
#実行
getEventLog $IpAddress $EventLogName $StartDate $EndDate $file
=========================================
まぁ、こいつでいけるかな。
ってとこだな。