Question
Lire dans un journal d'évènements
- Van_De
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
il y a 15 ans 1 mois #8663
par Van_De
Lire dans un journal d'évènements a été créé par Van_De
Bonjour,
Je mets en place un script, qui devras récupérer certains évènements par ID mais aussi par date ! Pour l'ID j'ai trouver ! Mais pour la date
[code:1]
$date = Get-Date -UFormat \"%d/%m/%Y\"
Get-EventLog -LogName Application |
Where-Object {$_.EventID -eq 12322} |
Where-Object {$_.Timewritten -eq $date}
[/code:1]
J'ai essayer plusieurs choses, à la place de -eq pour la date de mettre -contains et pareil rien !
J'ai essayer avec les formats de date normaux, la je l'ai formater comme elle apparait dans le journal d'évenements !
Je n'avance pas donc
!
Est ce que le problème viendrait :
- Du $_.Timewritten ?
- Du format de la date ?
- De moi qui est mal écrit mon code ?
Besoin d'aide s'il vous plait !!
Merci d'avance
Je mets en place un script, qui devras récupérer certains évènements par ID mais aussi par date ! Pour l'ID j'ai trouver ! Mais pour la date
[code:1]
$date = Get-Date -UFormat \"%d/%m/%Y\"
Get-EventLog -LogName Application |
Where-Object {$_.EventID -eq 12322} |
Where-Object {$_.Timewritten -eq $date}
[/code:1]
J'ai essayer plusieurs choses, à la place de -eq pour la date de mettre -contains et pareil rien !
J'ai essayer avec les formats de date normaux, la je l'ai formater comme elle apparait dans le journal d'évenements !
Je n'avance pas donc
Est ce que le problème viendrait :
- Du $_.Timewritten ?
- Du format de la date ?
- De moi qui est mal écrit mon code ?
Besoin d'aide s'il vous plait !!
Merci d'avance
Connexion ou Créer un compte pour participer à la conversation.
- EdouardG
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
il y a 15 ans 1 mois #8665
par EdouardG
Réponse de EdouardG sur le sujet Re:Lire dans un journal d'évènements
Salut,
Si je mets le resultat d'un Get-EventLog dans un tableau $event et que j'affiche la propriété TimeWritten, je vois ça :
[code:1]
PS M:\> $event[1].TimeWritten
mardi 1 février 2011 11:23:55
[/code:1]
Peut être le format du coup ?
Si je mets le resultat d'un Get-EventLog dans un tableau $event et que j'affiche la propriété TimeWritten, je vois ça :
[code:1]
PS M:\> $event[1].TimeWritten
mardi 1 février 2011 11:23:55
[/code:1]
Peut être le format du coup ?
Connexion ou Créer un compte pour participer à la conversation.
- Van_De
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
il y a 15 ans 1 mois #8666
par Van_De
Réponse de Van_De sur le sujet Re:Lire dans un journal d'évènements
Le problème c'est que je ne peux pas mettre ce format la car cela ne pourrais me lister les évenements ayant eu lieu durant cette journée ! Et c'est ça que je cherche à trouver :/
Connexion ou Créer un compte pour participer à la conversation.
- EdouardG
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
il y a 15 ans 1 mois #8667
par EdouardG
Réponse de EdouardG sur le sujet Re:Lire dans un journal d'évènements
Alors peut être en utilisant les parametre -After et -Before de Get-EventLog ?
Ceci fonctionne de mon coté :
[code:1]
$date = Get-Date -UFormat \"%d/%m/%Y\"
Get-EventLog -LogName Application -After $date | Where-Object {$_.EventID -eq 8193}
[/code:1]
J'ai l'impression qu'il me sort les messages du jour.
Bon courage
Ceci fonctionne de mon coté :
[code:1]
$date = Get-Date -UFormat \"%d/%m/%Y\"
Get-EventLog -LogName Application -After $date | Where-Object {$_.EventID -eq 8193}
[/code:1]
J'ai l'impression qu'il me sort les messages du jour.
Bon courage
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 1 mois #8668
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Lire dans un journal d'évènements
Ton problème vient de :
1) le choix de créer $date au format UDate, qui force son type à System.String au lieu de System.DateTime,
2) la notion d'égalité entre deux dates :
[code:1]
PS> $date1 = get-date
PS> $date2 = get-date
PS> $date1 -eq $date2
False
PS> $date1 -lt $date2
True
[/code:1]
En effet, deux dates prises à deux moments différents sont, par essence, différentes. Tu as donc très peu de chances d'avoir un évènement dont la date d'écriture est pile poil la date (y compris heures/minutes/secondes/...) à laquelle tu crées $date.
Pour tester si les deux dates correspondent au même jour de l'année, tu peux faire le test suivant :
[code:1]
PS> $date1.ToString(\"dd/MM/yyyy\"«») -eq $date2.ToString(\"dd/MM/yyyy\"«»)
True
[/code:1]
Cela dit, ton script peut être sérieusement amélioré sur plusieurs points :
1. D'une manière générale, l'enchaînement de plusieurs \"where\" revient à un seul \"where\" avec plusieurs conditions associées par AND :
[code:1]
Get-EventLog -LogName Application |
Where-Object {$_.EventID -eq 12322} |
Where-Object {$_.Timewritten -eq $date}
[/code:1]
... est équivalent à :
[code:1]
Get-EventLog -LogName Application |
Where-Object {$_.EventID -eq 12322 -and $_.Timewritten -eq $date}
[/code:1]
Mais la 2e syntaxe est plus courte, et probablement plus performante.
2. Concernant get-eventlog en particulier, tu peux faire des sélections sur la date directement en paramètres de la commande, ce qui t'évite d'enchaîner les \"where\" :
[code:1]
$date = (get-date).ToString(\"dd/MM/yyyy\"«») -as [DateTime]
get-eventlog -log application -after $date | where {$_.EventId -eq 12322}
[/code:1]
Si tu as besoin d'isoler un jour particulier, tu peux cumuler les paramètres -before et -after :
[code:1]
$date = \"31/01/2011\" -as [DateTime]
$date_fin = $date.AddDays(1)
get-eventlog -log application -after $date -before $date_fin | where {$_.EventId -eq 12322}
[/code:1]
1) le choix de créer $date au format UDate, qui force son type à System.String au lieu de System.DateTime,
2) la notion d'égalité entre deux dates :
[code:1]
PS> $date1 = get-date
PS> $date2 = get-date
PS> $date1 -eq $date2
False
PS> $date1 -lt $date2
True
[/code:1]
En effet, deux dates prises à deux moments différents sont, par essence, différentes. Tu as donc très peu de chances d'avoir un évènement dont la date d'écriture est pile poil la date (y compris heures/minutes/secondes/...) à laquelle tu crées $date.
Pour tester si les deux dates correspondent au même jour de l'année, tu peux faire le test suivant :
[code:1]
PS> $date1.ToString(\"dd/MM/yyyy\"«») -eq $date2.ToString(\"dd/MM/yyyy\"«»)
True
[/code:1]
Cela dit, ton script peut être sérieusement amélioré sur plusieurs points :
1. D'une manière générale, l'enchaînement de plusieurs \"where\" revient à un seul \"where\" avec plusieurs conditions associées par AND :
[code:1]
Get-EventLog -LogName Application |
Where-Object {$_.EventID -eq 12322} |
Where-Object {$_.Timewritten -eq $date}
[/code:1]
... est équivalent à :
[code:1]
Get-EventLog -LogName Application |
Where-Object {$_.EventID -eq 12322 -and $_.Timewritten -eq $date}
[/code:1]
Mais la 2e syntaxe est plus courte, et probablement plus performante.
2. Concernant get-eventlog en particulier, tu peux faire des sélections sur la date directement en paramètres de la commande, ce qui t'évite d'enchaîner les \"where\" :
[code:1]
$date = (get-date).ToString(\"dd/MM/yyyy\"«») -as [DateTime]
get-eventlog -log application -after $date | where {$_.EventId -eq 12322}
[/code:1]
Si tu as besoin d'isoler un jour particulier, tu peux cumuler les paramètres -before et -after :
[code:1]
$date = \"31/01/2011\" -as [DateTime]
$date_fin = $date.AddDays(1)
get-eventlog -log application -after $date -before $date_fin | where {$_.EventId -eq 12322}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Van_De
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
il y a 15 ans 1 mois #8674
par Van_De
Réponse de Van_De sur le sujet Re:Lire dans un journal d'évènements
Merci beaucoup à vous deux ! Je teste sa et reviens vous dire ce qu'il en est
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.061 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Lire dans un journal d'évènements