Question
WMI ou .NET
- Olivier
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 182
- Remerciements reçus 0
il y a 17 ans 3 semaines #4190
par Olivier
WMI ou .NET a été créé par Olivier
Bonjour !
J'essaie d'optimiser un peu mon script d'audit ...
J'ai remarqué que l'audit des événements par WMI était plus lent que par .NET.
Alors là, me suis dit pourquoi pas travailler avec :net pour retrouver les même résultats mais plus rapidement.
Donc, j'ai écris en WMI :
[code:1]Get-WmiObject -ComputerName travail Win32_NTEventLogFile | Where-Object {$_.FileName -eq 'Internet Explorer'} | select MaxFileSize,CSName[/code:1]
et le résultat fut :
MaxFileSize 1052672
CSName travail
et quand j'ai écris en .NET :
[code:1][System.Diagnostics.EventLog]::GetEventLogs('travail') | Where-Object {$_.Log -eq 'Internet Explorer'} | select MaximumKilobytes,MachineName[/code:1]
le résultat fut différent :
MaximumKilobytes 512
MachineName travail
PS : j'ai fais exprès d'indiquer la machine \"Travail\" pour être sûr de soutirer les info de la même machine avec les deux méthodes ...
Ma question serait \"Est-ce que la valeur \"WMI\" de MaxFileSize a sa correspondance avec la valeur \".NET\" de MaximumKilobytes ??
Je conçois tout à fait que dans l'exemple \"WMI\" la valeur est en Bytes et que dans l'exemple \".NET\" la valeur est en KiloBytes mais même si on divise la valeur retournée par la méthode \"WMI\" par 1024, on obtient 1028 (la bonne réponse !) alros que Mr.NET nous dis 512 ...
Est-ce que quelqu'un pourrait me donner une explication ?
Mon but est de pouvoir diminuer le temps de traitement de ce boute de code :
[code:1]Measure-Command {
$WmidtQueryDT = [System.Management.ManagementDateTimeConverter]::ToDmtfDateTime([DateTime]::Now.AddDays(-14))
$colLoggedEvents = Get-WmiObject -computer travail -query (\"Select * from Win32_NTLogEvent Where eventtype=1 and TimeWritten >='\" + $WmidtQueryDT + \"'\")
$colLoggedEvents = Get-WmiObject -computer travail -query (\"Select * from Win32_NTLogEvent Where eventtype=2 and TimeWritten >='\" + $WmidtQueryDT + \"'\")}[/code:1]
L'énorme avantage de chercher et de se prendre bien des crises d'insomnies, s'est que quand on passe toute une nuit sur un problème et qu'on trouve réponse, ben on s'en rapelle
et en plus, généralement, on comprend bien ce qu'on fait et comment on y parvient (avec des alumettes pour les paupières 
Merci de m'avoir lu et d'avance à ceux qui pourront éclairer ma lanterne
Olivier<br><br>Message édité par: Olivier, à: 26/02/09 00:48
J'essaie d'optimiser un peu mon script d'audit ...
J'ai remarqué que l'audit des événements par WMI était plus lent que par .NET.
Alors là, me suis dit pourquoi pas travailler avec :net pour retrouver les même résultats mais plus rapidement.
Donc, j'ai écris en WMI :
[code:1]Get-WmiObject -ComputerName travail Win32_NTEventLogFile | Where-Object {$_.FileName -eq 'Internet Explorer'} | select MaxFileSize,CSName[/code:1]
et le résultat fut :
MaxFileSize 1052672
CSName travail
et quand j'ai écris en .NET :
[code:1][System.Diagnostics.EventLog]::GetEventLogs('travail') | Where-Object {$_.Log -eq 'Internet Explorer'} | select MaximumKilobytes,MachineName[/code:1]
le résultat fut différent :
MaximumKilobytes 512
MachineName travail
PS : j'ai fais exprès d'indiquer la machine \"Travail\" pour être sûr de soutirer les info de la même machine avec les deux méthodes ...
Ma question serait \"Est-ce que la valeur \"WMI\" de MaxFileSize a sa correspondance avec la valeur \".NET\" de MaximumKilobytes ??
Je conçois tout à fait que dans l'exemple \"WMI\" la valeur est en Bytes et que dans l'exemple \".NET\" la valeur est en KiloBytes mais même si on divise la valeur retournée par la méthode \"WMI\" par 1024, on obtient 1028 (la bonne réponse !) alros que Mr.NET nous dis 512 ...
Est-ce que quelqu'un pourrait me donner une explication ?
Mon but est de pouvoir diminuer le temps de traitement de ce boute de code :
[code:1]Measure-Command {
$WmidtQueryDT = [System.Management.ManagementDateTimeConverter]::ToDmtfDateTime([DateTime]::Now.AddDays(-14))
$colLoggedEvents = Get-WmiObject -computer travail -query (\"Select * from Win32_NTLogEvent Where eventtype=1 and TimeWritten >='\" + $WmidtQueryDT + \"'\")
$colLoggedEvents = Get-WmiObject -computer travail -query (\"Select * from Win32_NTLogEvent Where eventtype=2 and TimeWritten >='\" + $WmidtQueryDT + \"'\")}[/code:1]
L'énorme avantage de chercher et de se prendre bien des crises d'insomnies, s'est que quand on passe toute une nuit sur un problème et qu'on trouve réponse, ben on s'en rapelle
Merci de m'avoir lu et d'avance à ceux qui pourront éclairer ma lanterne
Olivier<br><br>Message édité par: Olivier, à: 26/02/09 00:48
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 17 ans 2 semaines #4237
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:WMI ou .NET
Salut,
Olivier écrit:
Sur mon poste je n'ai pas de différence. Seul le nom type de la valeur maxfilesize différe, codé en Uint32 sous WMI et en Long sur .NEt mais c'est bien le même type.
Olivier écrit:
Oui.Ma question serait \"Est-ce que la valeur \"WMI\" de MaxFileSize a sa correspondance avec la valeur \".NET\" de MaximumKilobytes ??
Sur mon poste je n'ai pas de différence. Seul le nom type de la valeur maxfilesize différe, codé en Uint32 sous WMI et en Long sur .NEt mais c'est bien le même type.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Olivier
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 182
- Remerciements reçus 0
il y a 17 ans 2 semaines #4238
par Olivier
Réponse de Olivier sur le sujet Re:WMI ou .NET
Merci pour la réponse 
Il doit y avoir un \"bug\" sur mon post mais étant pas devant pour l'instant, je verrai cela un de ces soirs
Salutations
Olivier
Il doit y avoir un \"bug\" sur mon post mais étant pas devant pour l'instant, je verrai cela un de ces soirs
Salutations
Olivier
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.058 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- WMI ou .NET