Trouver les erreurs les plus courantes dans les journaux d'events à l'aide de Powershell.

J'ai les journaux d'events pour l'un de nos servers localement au format .evtx. Je peux charger le file journal dans PS en utilisant la command:

Get-WinEvent -Path D: \ Desktop \ serverlogs.evtx

Ce que j'aimerais faire, c'est sur les events de groupes de champs de message où le text correspond d'un certain pourcentage (disons 80% le même). Comme nous avons des stratégies d'erreur pour les erreurs dans les détails qui seront les mêmes, mais nous enregistrons également l'adresse IP du client, qui a été accessible, ce qui sera probablement différent.

Je veux les regrouper afin que je puisse résoudre les erreurs les plus courantes pour donner la priorité à la réparation et comme il y a plus de 25 000 erreurs dans le file journal, je préfère ne pas le faire manuellement.

Je pense que je peux comprendre comment faire la plupart de cela, mais je ne suis pas sûr de savoir comment je pourrais faire la partie «groupe de champs qui sont le plus souvent les mêmes», est-ce que powershell a créé quelque chose comme ça?

Tout d'abord, vous souhaitez filterr autant que vous le pouvez, car l'étape suivante utilise la cmdlet Where-Object , qui peut être lente pour ce genre de chose (malheureusement, il ne ressemble à aucun des arguments pour le support Get-WinEvent caractères generics pour la propriété Message d'un événement).

Par exemple, obtenez simplement les events de niveau "erreur":

 $events = Get-WinEvent -FilterHashTable @{ Path="D:\Desktop\serverlogs.evtx";Level=2 } 

Ensuite, vous pouvez utiliser -match ou- -match pour filterr davantage vers ceux qui ont un text similaire:

 $events = $events | ?{ $_.Message -match "your similar error here" } 

Maintenant que vous avez restreint la list, vous pouvez envoyer les résultats à la cmdlet Group-Object , en précisant que vous souhaitez les regrouper sur la propriété "Message" de l'événement:

 $events | Group-Object -Property Message 

Bien que vous avez demandé comment faire cela dans Powershell, je suggérerais également avoir un regard sur Microsoft Log Parser Cela vous permettra d'écrire des requêtes SQL similaires à vos journaux (et un tas d'autres astuces utiles). Aucune raison pour laquelle vous ne pouviez pas le conduire de Powershell.