Получить неправильный DateTime
Я использую этот код ниже, чтобы получить значение для TimeGenerated
в журнале событий win32 на удаленном сервере.
$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
но журнал событий через средство просмотра событий показывает это как значение:
Записано: 23.01.2016 10:59:33
Как мне извлечь правильную дату в формате выше?
1 ответ
Кроме того, если вы выполняете свою команду в ISE, вы можете обнаружить свойства и команды на объектах, возвращенных с помощью IntelliSense.
Тем не менее, эта статья много говорит о "eventlog" и "TimeGenerated" (2 условия, которые я искал в поиске этого ответа).
Не использовать -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
становится
23.01.2016, 17:06:15
Я думаю, что с этой информацией у вас есть работоспособное решение, на которое можно опираться.