Question Bug Get-EventLog ?
- Madrolle
- Auteur du sujet
- Hors Ligne
- Membre senior
- Messages : 47
- Remerciements reçus 0
Celà semble correlé avec le fait que l'événement en vue XML ait un \"Qualifiers\" (kesaco) différent de 0
<EventID Qualifiers=\"32768\">6013</EventID>
J'ai fais le test ici sur des 2012 R2 de de démo MS, et aussi en prod au boulot, de même sur windows 8.1.
[code:1]
### Requête 1
PS> Get-EventLog -LogName system -InstanceId 6013
[/code:1]
Get-EventLog : Aucune correspondance trouvée
Au caractère Ligne:1 : 1
+ Get-EventLog -LogName system -InstanceId 6013
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (: ) [Get-EventLog], ArgumentException
+ FullyQualifiedErrorId : GetEventLogNoEntriesFound,Microsoft.PowerShell.Commands.GetEventLogCommand
[code:1]
### Requête 2
$query = @\"
SELECT * FROM Win32_NTLogEvent WHERE logfile='system'
AND eventcode=6013
\"@
Get-CimInstance -Query $query
[/code:1]
Category : 0
CategoryString :
EventCode : 6013
EventIdentifier : 2147489661
TypeEvent :
InsertionStrings : {, , , ...}
LogFile : System
Message : La durée active du système est de 65029 secondes.
RecordNumber : 5317
SourceName : EventLog
TimeGenerated : 07/04/2015 12:00:00
TimeWritten : 07/04/2015 12:00:00
Type : Information
UserName :<br><br>Message édité par: Perso, à: 22/04/15 03:32
ShellDealer sur Twitter
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
Pas sur MSConnect, et pour moi c'est bien un bug.Est-ce déja connu ?
Perso écrit:
Je n'ai pas vu d'usage du XML dans le code source.Celà semble correlé avec le fait que l'événement en vue XML ait un \"Qualifiers\"
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
[code:1]
private bool FiltersMatch(EventLogEntry entry)
{
if (this._indexes != null && !((IList)this._indexes).Contains(entry.Index))
{
return false;
}
if (this._instanceIds != null && !((IList)this._instanceIds).Contains(entry.InstanceId))
{
return false;
}
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Madrolle
- Auteur du sujet
- Hors Ligne
- Membre senior
- Messages : 47
- Remerciements reçus 0
msdn.microsoft.com/fr-fr/library/system....entid(v=vs.110).aspx
Voici les propriété de deux événements récupérées avec Get-CimInstance
### evt 1
Category : 0
CategoryString :
EventCode : 6013
EventIdentifier : 2147489661
EventType : 3
### evt 2
Category : 12288
CategoryString : Modification de l'état de la sécurité
EventCode : 4616
EventIdentifier : 4616
EventType : 4
Celui qui pose probléme est le 1 ou EventCode et EventIdentifier différent, le paramètre '-InstanceId' pointe manifestement sur la propriété 'EventIdentifier', ce qui explique que 6013 ce ne soit pas trouvé par get-eventlog .
EventCode Property uint16 EventCode {get;set;}
EventIdentifier Property uint32 EventIdentifier {get;set;}
Quand on examine le code XML de 6013; l'event identifier n'est pas donné explicitement
- <System>
<Provider Name=\"EventLog\" />
<EventID Qualifiers=\"32768\">6013</EventID>
<Level>4</Level>
En fait, c'est 2147489661 est en Hex 8000 177D soit 32768 6013 ...
Comme Microsoft à semble t'il renoncé à publier les 'EventIdentifier' et reste sur les 'EventCode' \"depreciés\", et est plutot passé de 3 à 4 chiffres dans sa numerotation.
www.microsoft.com/en-us/download/confirmation.aspx?id=35753
Je pense que la demande sur MSConnect pourrait être double ?
1/ rajouter une option '-EventCode' à get-enventlog
2/ afficher explicitement 'EventIdentifier' dans la vue \"simplifiée\" des entrées de journal.
En attendant j'utilise Get-CimInstance.
ShellDealer sur Twitter
Connexion ou Créer un compte pour participer à la conversation.
- Madrolle
- Auteur du sujet
- Hors Ligne
- Membre senior
- Messages : 47
- Remerciements reçus 0
msdn.microsoft.com/fr-fr/library/system....entid(v=vs.110).aspx
Voici les propriété de deux événements récupérées avec Get-CimInstance
### evt 1
Category : 0
CategoryString :
EventCode : 6013
EventIdentifier : 2147489661
EventType : 3
### evt 2
Category : 12288
CategoryString : Modification de l'état de la sécurité
EventCode : 4616
EventIdentifier : 4616
EventType : 4
Celui qui pose probléme est le 1 ou EventCode et EventIdentifier différent, le paramètre '-InstanceId' pointe manifestement sur la propriété 'EventIdentifier', ce qui explique que 6013 ce ne soit pas trouvé par get-eventlog .
EventCode Property uint16 EventCode {get;set;}
EventIdentifier Property uint32 EventIdentifier {get;set;}
Quand on examine le code XML de 6013; l'event identifier n'est pas donné explicitement
- <System>
<Provider Name=\"EventLog\" />
<EventID Qualifiers=\"32768\">6013</EventID>
<Level>4</Level>
En fait, c'est 2147489661 est en Hex 8000 177D soit 32768 6013 ...
Comme Microsoft à semble t'il renoncé à publier les 'EventIdentifier' et reste sur les 'EventCode' \"depreciés\", et est plutot passé de 3 à 4 chiffres dans sa numerotation.
www.microsoft.com/en-us/download/confirmation.aspx?id=35753
Je pense que la demande sur MSConnect pourrait être double ?
1/ rajouter une option '-EventCode' à get-enventlog
2/ afficher explicitement 'EventIdentifier' dans la vue \"simplifiée\" des entrées de journal.
En attendant j'utilise Get-CimInstance.
ShellDealer sur Twitter
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
Oui, seul le nom diffère.le paramètre '-InstanceId' pointe manifestement sur la propriété 'EventIdentifier',
Perso écrit:
La doc MSDN de InstanceId détaille un peu son interprétation.ce qui explique que 6013 ne soit pas trouvé par get-eventlog.
Ces deux propriétés partage la même adresse, mais n'ont pas la même interprétation :
La propriété EventID équivaut à InstanceId avec les deux bits supérieurs masqués.
Voir aussi (ligne 187).
Perso écrit:
Oui, le pb est là.l'event identifier n'est pas donné explicitement
Perso écrit:
Propriété obsolète...Je pense que la demande sur MSConnect pourrait être double ?
1/ rajouter une option '-EventCode' à get-eventlog
Perso écrit:
Là c'est plutot à l'équipe Windows qu'il faut s'adresser...2/ afficher explicitement 'EventIdentifier' dans la vue \"simplifiée\" des entrées de journal.
Perso écrit:
Il me reste un doute sur l'approche : est-ce que tous les entrées renvoyées correspondent vraiment au même event ?En attendant j'utilise Get-CimInstance.
Un test avec une union permettant d'interpréter InstanceID :
[code:1]
$Code=@'
using System;
using System.Runtime.InteropServices;
namespace Mask
{
[StructLayout(LayoutKind.Explicit)]
public struct EventLogUnion
{
[FieldOffset(0)] public UInt64 InstanceID;
[FieldOffset(0)] public UInt16 EventID;
}
}
'@
Add-Type -TypeDefinition $code
$T=Get-Eventlog system |
Select Index,EventID,InstanceID,Union|
Foreach {
$_.Union=New-Object Mask.EventLogUnion
$_.Union.InstanceID=$_.InstanceID
$_
}
$r=$t|Sort -Property InstanceID -unique
$g=$r|group-object eventID|sort count -Descending
# Données en mode verbeux : $g=$t|group-object eventID|sort count -Descending
# $G[0].Count=37354
$g[0].Group
# Index EventID InstanceId Union
#
# 714534 7001 7001 Mask.EventLogUnion
# 676886 7001 3221232473 Mask.EventLogUnion
$g[0].Group[1].Union # Index -> 676886
# InstanceID EventID
#
# 3221232473 7001
$One=Get-EventLog -LogName System -InstanceId $G[0].Group[0].InstanceID
$two=Get-EventLog -LogName System -InstanceId $G[0].Group[1].InstanceID
compare $one $two -Property index|sort SideIndicator,index
#...
$a=Get-EventLog -LogName System -Index $G[0].Group[0].Index
$b=Get-EventLog -LogName System -Index $G[0].Group[1].Index
$a,$b|select *
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- Bug Get-EventLog ?