2016-07-26 13 views
0

Windows 7ワークステーションからローカルログオン/ログオフのリストを抽出する必要があります。セキュリティイベントログの保存されたコピーをevtx形式で取得しましたが、いくつか問題があります。powershellを使用したログオン/ログオフイベントの抽出

次のPowerShell抽出ID 4624または4634と、すべてのイベント:

Get-WinEvent -Path 'C:\path\to\securitylog.evtx' | where {$_.Id -eq 4624 -or $_.Id -eq 4634} 

私は、その後だけlogon type = 2 (local logon)をフィルタリングします。この配管:

| where {$_.properties[8].value -eq 2} 

はしかし、すべてのid=4634(ログオフ)イベントをドロップするようです。

イベントid = 4624イベントであっても、ユーザーIDは存在しません。例えば配管へ:

| select-object -property Timecreated,TaskDisplayName,MachineName,userid 

あるいはExport-Csvへの配管、useridは空白です。

2つの問題は、次のとおりです。

  1. どこ{$_.properties[8].value -eq 2}にパイプするとき、ID 4634のイベントを廃棄しているのはなぜ?
  2. なぜuseridが空ですか? useridを入手するにはどうすればよいですか?

答えて

0
  1. 8は魔法の数字ではありません。これは、4624イベントで定義されたXMLの9番目のプロパティー(0から始まる索引)です。 [Details]タブを開いてXMLビューに切り替えると、イベントビューアで表示されます。 4634イベントを見ると、Logon Typeプロパティが5番目になっていることが分かります。クエリを次のように変更することができます。

    {{$ .Id -eq 4624 - および$ .properties [8] -eq 2} -OR {$ .ID -eq 4634 -and $の.properties [4] -eq 2}}

  2. ユーザIDがちょうどこれらのイベントのために定義されていません。 XMLで定義されたTargetUserNameプロパティー(6番目のプロパティー)を調べることができます。

+0

おかげ - このコマンドは、イベントを抽出するために動作します:それは、カンマ区切り値を出力 のGet-WinEventの-Path 'C:\パス\はsecuritylog.evtx \します' |ここで、{($ _。Id -eq 4624 -and $ _。properties [8] .value -eq 2)-or($ _。Id -eq 4634 -and $ _。properties [4] .value -eq 2) } プロパティ要素をXML要素名で参照する方法はありますか? また、プロパティ配列の値を実際に印刷するにはどうすればよいですか? Select-objectでプロパティを印刷することができますが(例えばselect-object-property TTimecreated、TaskDisplayName、MachineName)、プロパティ配列から特定の要素を出力する方法がわかりません。 – cuvy

0

[OK]をクリックします。そのため

$evts = Get-WinEvent -Path 'C:\path\to\securitylog.evtx' | where {($_.Id -eq 4624 -and $_.properties[8].value -eq 2) -or ($_.Id -eq 4634 -and $_.properties[4].value -eq 2) } 
foreach ($e in $evts) 
{ 
    # get the attributes 
    $ds = $e.TimeCreated 
    $tdn = $e.TaskDisplayName 
    $mn = $e.MachineName 

    # userid will vary depending on event type: 
    if($e.Id -eq 4624) { $userid = $e.properties[5].value } 
    if($e.Id -eq 4634) { $userid = $e.properties[1].value } 

    write-host ("{0},{1},{2},{3}" -f [string]$ds,[string]$tdn,[string]$mn,[string]$userid) 
} 
関連する問題