检索错误的日期时间

Retrieve wrong DateTime

我正在使用下面的代码在远程服务器上的 win32 事件日志中检索 TimeGenerated 的值。

$event = Get-WMIObject -ComputerName $server -Query "SELECT * FROM Win32_NTLogEvent WHERE LogFile='Application' AND CategoryString = 'Server Startup'" |
         Select  -ExpandProperty TimeGenerated -First 1

return值为:

20160123155933.000000-000

但是通过事件查看器的事件日志将此显示为值:

Logged: 1/23/2016 10:59:33 AM

如何提取上述格式的正确日期?

顺便说一句,如果您 运行 在 ISE 中执行命令,您可以发现使用 IntelliSense 返回的对象的属性和命令。

也就是说,this article 谈论了很多关于 "eventlog" 和 "TimeGenerated"(我搜索的 2 个术语找到这个答案)。

不要使用 -ExpandProperty,而是调用 ConvertToDateTime() 类似于我在下面显示的内容(我修改了您的调用以仅获取日志中的第一个事件)。

$obj = Get-WMIObject -Query "SELECT * FROM Win32_NTLogEvent WHERE LogFile='Application'" | Select -First 1 
$obj.ConvertToDateTime($obj.TimeGenerated).ToString()

这会输出从 raw UTC 转换为本地时间的格式化日期。

TimeGenerated    : 20160124010615.134877-000

变成

1/23/2016 5:06:15 PM

我认为有了这些信息,您就有了一个可行的解决方案。