Question Filtrer rapidement l'event viewer

Plus d'informations
il y a 16 ans 7 mois #860 par TIti
Bonjour,
La recherche d'évènements dans l'event viewer peut être plus rapide et plus simple grâce à powershell.
Voici de quoi trier par date et type d'évènements

La Cmdlet Get-date permet d'utiliser les dates avec une facilité déconcertante.
La Cmdlet Read-host de récupérer la saisie clavier

Voici dans l'exemple suivant la liste des events de type 6009 sur les 2 derniers jours dans l'event system (je réponds donc 2 puis system puis 6009 aux questions posées)
[code:1]### Collecte d'informations ###
$r=read-host \"Nombre de jours d'historique \"
$t= read-host \"Type d'évènements \" ### system, application ...etc
$n=read-host \"N° d'enventID \"
### date du jour ###
$date=get-date
### retire $r journée(s)à la date du jour et utilise cette nouvelle valeur ###
$dateok=$date.adddays(-$r)
get-eventlog $t|where {$_.timewritten -ge \"$dateok\"}|where {$_.eventid -eq \"$n\"}[/code:1]
Arnaud, Janel et les autres... je vous laisse retirer les lignes inutiles ;)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #861 par Robin Lemesle
Salut berurier !


Juste une petite remarque, je pense qu'il serait meilleur d'utiliser un opérateur (-and) plutot que de faire deux pipelines compinés.

[code:1]
get-eventlog $t|where {($_.timewritten -ge \"$dateok\"«») -and ($_.eventid -eq \"$n\"«»)}[/code:1]

tu gagneras par la même occasion un peu de temps de traitement :)

essai ceci pour comparer :

[code:1]measure-command {get-eventlog $t|where {($_.timewritten -ge \"$dateok\"«») -and ($_.eventid -eq \"$n\"«»)}}

measure-command {get-eventlog $t|where {($_.timewritten -ge \"$dateok\"«»)} | where {($_.eventid -eq \"$n\"«»)}}[/code:1]

Sinon, c'est bien ;)<br><br>Message édité par: robin, à: 28/08/07 08:44

Robin MVP PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #863 par Arnaud Petitjean
Très bien Berurier mais l'idéal serait de faire de ce script une fonction pour passer les valeurs en paramètres. ;)

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #865 par TIti
Réponse de TIti sur le sujet Re:Filtrer rapidement l'event viewer
Re,
Une proposition (à affiner).
Je ne sais pas trop comment traiter la date autrement que par les lignes 3 et 4 ... Bof,bof ...
L'utilisation de la fonction se fait de la façon suivante :

filtre_events nom jouràretirer eventID

Par exemple \&quot;filtre_events system -10 6009\&quot;
La fonction :
[code:1]function filtre_events
{param($nom,$date,$event)
$datedujour=get-date
$datedujour=$datedujour.adddays($date)
Write-host \&quot;\&quot;
Write-host \&quot;Evenements $nom N° $event depuis le $datedujour\&quot; -foregroundcolor red -backgroundColor white
get-eventlog $nom|where {($_.timewritten -ge \&quot;$datedujour\&quot;«») -and ($_.eventid -eq \&quot;$event\&quot;«»)}
}[/code:1]
Le résultat
P:\&gt; filtre_events system -10 6009
Evenements system N° 6009 depuis le 08/18/2007 12:51:16

Index Time Type Source EventID Message
---- ----


7258 août 28 09:12 Info EventLog 6009 Microsoft (R) Windows (R) 5.01. 2600 Service Pack 2
4762 août 23 17:15 Info EventLog 6009 Microsoft (R) Windows (R) 5.01. 2600 Service Pack 2
4746 août 23 17:13 Info EventLog 6009 Microsoft (R) Windows (R) 5.01. 2600 Service Pack 2
4716 août 23 08:52 Info EventLog 6009 Microsoft (R) Windows (R) 5.01. 2600 Service Pack 2
4679 août 22 08:52 Info EventLog 6009 Microsoft (R) Windows (R) 5.01. 2600 Service Pack 2
4661 août 21 16:33 Info EventLog 6009 Microsoft (R) Windows (R) 5.01. 2600 Service Pack 2
4009 août 20 08:54 Info EventLog 6009 Microsoft (R) Windows (R) 5.01. 2600 Service Pack 2<br><br>Message édité par: Berurier, à: 28/08/07 13:03

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #866 par Robin Lemesle

Je ne sais pas trop comment traiter la date autrement que par les lignes 3 et 4 ... Bof,bof ...


Tu veux dire en une ligne comme cela ?

[code:1]
$datedujour=(get-date).adddays($jours)[/code:1]

Attention j'ai remplacé la variable $date par $jours qui est plus parlante quant on parle du nombre de jours.

Robin MVP PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #867 par Robin Lemesle
Ha oui, j'oubliais...

tu peux aussi forcer le type de tes paramètres. cela facilite la relecture et évite de se tromper dans les types attendus.

[code:1]param([string]$nom,[int]$date,[int]$event)[/code:1]

de plus comme tu utilises des paramètres pour ton script et non des arguments, tu peux l'appeler ainsi :

[code:1]filtre_events -nom system -date (-10) -event 6009\&quot;[/code:1]

Robin MVP PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.081 secondes
Propulsé par Kunena