![](/img/trans.png)
[英]How to subscribe to an event through Get-WinEvent in powershell?
[英]How to get precise event's systemtime via `Get-WinEvent` and DateCreated event's property?
我正在编写一个脚本,该脚本必须将事件导出到CSV文件。 我想添加具有精确系统时间的行。 我没有得到的是如何提取TimeCreated
的SystemTime
属性。 即这个:
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
似乎并不适合它们。
请注意此答案:
此特定事件日志(应用程序)未记录部分秒数。 即:您总是会在之后收到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"); }
……您可以按需报告毫秒数!
因此,这是一个分为两部分的答案,因为您请求的日志(应用程序)不包含所跟踪的毫秒数。
编辑:请注意,我没有像上面Ansgar Weicher的回答那样进行UTC时间转换。 我将其保留为系统本地时间。 因此,从ToString
格式化程序中删除了“ Z”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.