Получить неправильный 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

Я думаю, что с этой информацией у вас есть работоспособное решение, на которое можно опираться.

Другие вопросы по тегам