检索错误的DateTime

时间:2016-01-23 21:10:17

标签: powershell datetime event-log

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

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

返回值为:

20160123155933.000000-000

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

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

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

1 个答案:

答案 0 :(得分:2)

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

那就是说,this article谈了很多关于" eventlog"和#34; TimeGenerated" (在我找到这个答案时搜索的两个词)。

请勿使用-ExpandProperty,而是调用ConvertToDateTime()类似于我在下面显示的内容(我修改了您的调用,只是抓住了我日志中的第一个事件)。

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

这将输出从原始 UTC转换为本地时间的格式化日期。

TimeGenerated    : 20160124010615.134877-000

变为

1/23/2016 5:06:15 PM

我认为通过这些信息,您可以构建一个可行的解决方案。