2010-07-18 8 views
1

J'ai beaucoup de fichiers journaux dont je souhaite extraire le message d'erreur distinct pour un enregistreur de traces spécifique.Script Powershell pour extraire les erreurs consignées

Les fichiers journaux sont des journaux SharePoint ULS.

Les rubriques sont les suivantes: Timestamp processus TID Zone Catégorie EventID Niveau message corrélation

donc donné un nom de processus spécifique que je veux tous les messages distincts.

Si je devais utiliser SQL j'écrire quelque chose comme ceci:

sélectionnez Message Distinct où processus comme « myprocessname »

Je voudrais le faire avec Powershell à travers un ensemble de journal des dossiers. Je crois que le journal ULS est délimité par des tabulations ou des espaces.

Répondre

0

En supposant que le fichier journal est pas trop grand, vous pouvez lire le contenu à l'aide d'Import-Csv comme ceci:

$data = Import-Csv .\log.csv -Delimiter "`t" 

Je suppose que le délimiteur est tabulation car il s tout message contiendra probablement des espaces. Une fois que vous avez les données du journal, vous pouvez utiliser les opérateurs de requête standard PowerShell comme ceci:

$data | Where {$_.Process -eq 'processname.exe'} | Select Message -Unique 

Si le fichier journal est énorme (telle que Import-Csv mange trop de mémoire) alors je soit essayer d'utiliser Log Parser ou utilisez une expression rationnelle et analysez le journal, une ligne à la fois.

+0

est-ce que cette approche fonctionnerait pour plusieurs fichiers, est-ce que je pourrais les combiner dans ceci? –

+0

Bien sûr, il suffit de spécifier les fichiers à importer-Csv par exemple. 'Import-Csv fichier1.csv, fichier2.csv, c: \ temp \ fichier3.csv ...'. –

Questions connexes