none
Powershell v4: Get-EventLog икаженные InstanceId с удаленных машин. RRS feed

  • Вопрос

  • Доброго времени суток.

    Имеется текстовый список машин, с которых нужно сделать выборку событий.

    Get-Content "путь_к_файлу "| foreach {Get-EventLog -logname system -newest 3 -ComputerName -InstanceId 1500 $_} | ft -Wrap -Property MachineName,index,instanceid,message,timegenerated -AutoSize

    Отрабатывает нормально, но в столбце InstanceId отображаются искаженные коды событий, вида 1073748859. Если добавить параметр -InstanceId и задать его (например, 1500), то поиск просто зависает.

    Спасибо заранее.

    20 января 2015 г. 7:04

Ответы

Все ответы

  • Попутно еще 1 вопрос: Get-EventLog работает только с 3мя журналами (application,system,security)? Про все остальные он говорит либо "соответствия не обнаружено", либо "на компьютере '.' не существует журнала 'setup'" (setup просто для примера). Get-EventLog работает с журналом касперского, но это уже специфика. Если по умолчанию он работает только с 3мя журналами, то стоит пользоваться Get-WinEvent?
    20 января 2015 г. 8:26
  • Для начала стоит определиться EventID и InstanceId(приходится 4 возможных значения на одно событие), одно вытекает из другого.

    $eventID = 1500
    $instanceIDs
    = ($eventID), ($eventID -bor 0x40000000L), ($eventID -bor 0x80000000L), ($eventID -bor 0xc0000000L)

    Поэтому стоит использовать EventID, если оно известно:

    Get-WinEvent -FilterHashtable @{LogName="setup";ID = 1500} -MaxEvents 3



    • Изменено KazunEditor 20 января 2015 г. 10:08
    20 января 2015 г. 10:03
    Отвечающий
  • Спасибо за ответ.

    У меня здесь вопрос по Get-EventLog, по Get-WinEvent у меня отдельно много вопросов, но задавать их я буду не в этой теме. В справке по Get-EventLog нет параметра EventId и фактически при его использовании с Get-EventLog выводится ошибка.

    P.S. из справки по Get-EventLog я решил что под InstanceId имеется в виду как раз код события, тем более что в примерах указывается именно код. Теперь я запутался, что есть EventId, если код, то что же такое InstanceId, и как может быть 4 разных идентификатора на одно событие. в XML-представлении рандомного события есть строка

    <EventID Qualifiers="16384">1003</EventID> но никакого упоминания InstanceId нет.

    20 января 2015 г. 10:23
  • Get-EventLog  параметра EventId нету - поэтому считаем ручками или фильтруем через Where-Object, что создает большую нагрузку на систему, собствено, как и использование устаревшего Get-EventLog.

    Не нашел упоминания в справке такого момента, да есть ID, но где сказано, что это EventID?:

    Gets only events with the specified instance IDs.

    Про данное свойство, читаем в справке - http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlogentry.instanceid.aspx

     Two event log entries from the same source can have matching EventID values, but have different InstanceId values due to differences in the top two bits of the resource identifier.

    Нет и не будет, потому что структура EVENTLOGRECORD не содержит данного поля, а опредлено поле EventID - http://msdn.microsoft.com/en-us/library/windows/desktop/aa363646(v=vs.85).aspx

    20 января 2015 г. 10:36
    Отвечающий
  • Это печально. Буду разбираться с Get-WinEvent.
    20 января 2015 г. 10:51