Primeiro, você deseja filtrar o máximo possível porque a próxima etapa usa o cmdlet Where-Object
, que pode ser lento para esse tipo de coisa (infelizmente, não parece nenhum dos argumentos para Get-WinEvent
suporta curingas para a propriedade Message de um evento).
Por exemplo, obtenha apenas os eventos de nível de "erro":
$events = Get-WinEvent -FilterHashTable @{ Path="D:\Desktop\serverlogs.evtx";Level=2 }
Em seguida, você pode usar -match
ou -like
para filtrar ainda mais os que têm texto semelhante:
$events = $events | ?{ $_.Message -match "your similar error here" }
Agora que você reduziu a lista, é possível canalizar os resultados para o cmdlet Group-Object
, especificando que deseja agrupá-los na propriedade "Message" do evento:
$events | Group-Object -Property Message