Question Bug Get-EventLog ?

Plus d'informations
il y a 6 ans 4 mois #19539 par Madrolle
Bug Get-EventLog ? a été créé par Madrolle
Voici la bizarrerie. Est-ce déja connu ?

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.

Plus d'informations
il y a 6 ans 4 mois #19541 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Bug Get-EventLog ?
Perso écrit:

Est-ce déja connu ?

Pas sur MSConnect, et pour moi c'est bien un bug.
Perso écrit:

Celà semble correlé avec le fait que l'événement en vue XML ait un \&quot;Qualifiers\&quot;

Je n'ai pas vu d'usage du XML dans le code source.

Tutoriels PowerShell

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

Plus d'informations
il y a 6 ans 4 mois #19542 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Bug Get-EventLog ?
Le paramètre InstanceID pointe sur la propriété InstanceID pas sur EventID qui est obsolète :
[code:1]
private bool FiltersMatch(EventLogEntry entry)
{
if (this._indexes != null &amp;&amp; !((IList)this._indexes).Contains(entry.Index))
{
return false;
}
if (this._instanceIds != null &amp;&amp; !((IList)this._instanceIds).Contains(entry.InstanceId))
{
return false;
}
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 6 ans 4 mois #19545 par Madrolle
Réponse de Madrolle sur le sujet Re:Bug Get-EventLog ?
Ok effectivement EventID est déprecié ... depuis .net 2 ...
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
- &lt;System&gt;
&lt;Provider Name=\&quot;EventLog\&quot; /&gt;
&lt;EventID Qualifiers=\&quot;32768\&quot;&gt;6013&lt;/EventID&gt;
&lt;Level&gt;4&lt;/Level&gt;

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' \&quot;depreciés\&quot;, 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 \&quot;simplifiée\&quot; des entrées de journal.

En attendant j'utilise Get-CimInstance.

ShellDealer sur Twitter

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

Plus d'informations
il y a 6 ans 4 mois #19546 par Madrolle
Réponse de Madrolle sur le sujet Re:Bug Get-EventLog ?
Ok effectivement EventID est déprecié ... depuis .net 2 ...
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
- &lt;System&gt;
&lt;Provider Name=\&quot;EventLog\&quot; /&gt;
&lt;EventID Qualifiers=\&quot;32768\&quot;&gt;6013&lt;/EventID&gt;
&lt;Level&gt;4&lt;/Level&gt;

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' \&quot;depreciés\&quot;, 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 \&quot;simplifiée\&quot; des entrées de journal.

En attendant j'utilise Get-CimInstance.

ShellDealer sur Twitter

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

Plus d'informations
il y a 6 ans 4 mois #19547 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Bug Get-EventLog ?
Perso écrit:

le paramètre '-InstanceId' pointe manifestement sur la propriété 'EventIdentifier',

Oui, seul le nom diffère.
Perso écrit:

ce qui explique que 6013 ne soit pas trouvé par get-eventlog.

La doc MSDN de InstanceId détaille un peu son interprétation.
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:

l'event identifier n'est pas donné explicitement

Oui, le pb est là.

Perso écrit:

Je pense que la demande sur MSConnect pourrait être double ?
1/ rajouter une option '-EventCode' à get-eventlog

Propriété obsolète...
Perso écrit:

2/ afficher explicitement 'EventIdentifier' dans la vue \&quot;simplifiée\&quot; des entrées de journal.

Là c'est plutot à l'équipe Windows qu'il faut s'adresser...
Perso écrit:

En attendant j'utilise Get-CimInstance.

Il me reste un doute sur l'approche : est-ce que tous les entrées renvoyées correspondent vraiment au même event ?

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 -&gt; 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.

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