0

イベントを CSV ファイルにエクスポートするスクリプトを作成しています。正確なシステム時間で行を追加したい。SystemTimeのプロパティを抽出する方法がわかりませんTimeCreated。すなわちこれ:

 TimeCreated 
   [SystemTime]  2016-10-25T20:04:47.824727500Z 

以下は、現在の出力のサンプルです。

PS C:\Users\user> Get-WinEvent -LogName Application -MaxEvents 10 | Select-Object TimeCreated

TimeCreated
-----------
25.10.2016 23:04:47
25.10.2016 23:04:47
25.10.2016 23:04:17
25.10.2016 23:04:17
25.10.2016 23:04:17
25.10.2016 23:04:17
25.10.2016 23:04:16
25.10.2016 23:04:16
25.10.2016 23:04:16
25.10.2016 23:00:15

アップデート

を追加できます-ExpandProperty TimeCreatedが、これにより などの余分な列が追加され、それらに対して機能するDay, DayOfWeek, DayOfYear, Hour, Kind, Milliseconds, Minute, Month, Second, Ticks, TimeOfDayようには見えません-ExcludeProperty

4

2 に答える 2

2

この回答に対する 1 つの警告:

この特定のイベント ログ (アプリケーション) は、部分的な秒を記録しません。ie:秒000000後に常に受信します。.したがって、正確な時間は事実上単数秒である必要があります。

Get-WinEvent -LogName Application -MaxEvents 10 | Select-Object -Expand TimeCreated | ForEach-Object { 
    $date = [DateTime]$_
    $date.ToString("yyyy-MM-ddTHH:mm:ss.ffffff")
}

さらに、イベント ログを (手動で) 見てみると、アプリケーション ログで、エントリの正確な時間についてもこれ以上の精度が提供されていないことがわかります。そのログは HH:MM:SS に依存しているようです。

今..たとえば、セキュリティログはより正確なので、試してください:

Get-WinEvent -LogName Security -MaxEvents 10 | Select-Object -Expand TimeCreated | ForEach-Object { $date = [DateTime]$_; $date.ToString("yyyy-MM-ddTHH:mm:ss.ffffff"); }

...そして、ミリ秒が希望どおりに報告されます!

要求されたログ (アプリケーション) には追跡されたミリ秒が含まれていないため、これは 2 つの部分からなる回答でした。

編集:上記のAnsgar Weicherの回答のように、UTC時間の変換を行っていないことに注意してください。システム現地時間のままにしました。したがって、ToStringフォーマッタから「Z」を削除しました。

于 2016-10-25T21:01:03.160 に答える