我正在使用下面的代码检索远程服务器上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
如何以上述格式提取正确的日期?
答案 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
我认为通过这些信息,您可以构建一个可行的解决方案。