Résolu Propriété de la cmdlet Get-WinEvent

Plus d'informations
il y a 1 semaine 5 jours #30313 par Giraudeau
Bonjour,

Je cherche à récupérer l'historique des redémarrages serveurs de manière simple et lisible : date et heure, utilisateur qui a lancé le reboot, machine concernée.
Pour cela je fais appel à la commande Get-WinEvent, je précise l'ID de l'évènements que je souhaite récupérer (ici le 1074), puis je le formatte de manière à obtenir uniquement les 3 colonnes ci-dessus.

Sauf que...(oui parce qu'il y a un "sauf que" sinon je ne serais pas la à vous décrire mon problème), lorsque je regarde les propriétés disponibles pour la cmdlet Get-WinEvent, je trouve bien celle correspondant à la date "TimeCreated", celle correspondant à la machine "MachineName" mais impossible de trouver celle correspondant au nom de l'utilisateur.
Je trouve certaines propriétés comme "LogName" par exemple mais aucune ne correspond à l'information "Utilisateur" que je vois quand je vais dans l'observateur d'évènement.

Est-ce que j'ai raté quelque chose ou cette propriété n'existe pas, ce qui serait assez surprenant ?

Merci pour votre aide.

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

Plus d'informations
il y a 1 semaine 5 jours #30314 par Arnaud Petitjean
Bonjour à toi !

Sois le bienvenu dans le forum ! Une petite introduction de ta personne dans le forum dédié serait apprécié ;-)

As-tu essayé avec la commande Get-EventLog ? Si l'info se trouve dans les logs Windows, on doit forcément pouvoir la récupérer avec PowerShell...

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 ou d'un conseil ?

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

Plus d'informations
il y a 1 semaine 5 jours - il y a 1 semaine 5 jours #30315 par Damien Commenge
Bonjour,

Est ce que cela correspond à ce que vous souhaiteriez ?

Get-eventlog -logname system | Where-Object {$_.EventID -eq 1074} | fl machinename,timegenerated,message,username


Une façon beaucoup plus efficace en temps, mais plus complexe est celle ci :
$query = @"
<QueryList>
  <Query Id="0" Path="System">
    <Select Path="System">*[System[(EventID=1074)]]</Select>
  </Query>
</QueryList>
"@

$param= @(
    @{label="ServerName";expression={$_.properties.value[1]}},
    @{label="Date";expression={$_.TimeCreated}},
    @{label="User";expression={$_.properties.value[6]}}
)
(Get-WinEvent -FilterXml $query) | select $param

J'avais pas mal galéré avec les journaux d'évènements à une époque ou je voulais récupérer des informations présentes à l'intérieur de ces dernier, donc j'ai retrouvé quelque notes :P

De façon générale, lorsqu'on souhaite jouer avec powershell et les journaux d'évènements je m'étais apperçu qu'il fallait utiliser le paramètre filterhashtable ou filterxml sinon c'est beaucoup trop long.
Une explication plus "technique" est proposée ici : devblogs.microsoft.com/scripting/data-mi...-powershell-and-xml/
Dernière édition: il y a 1 semaine 5 jours par Damien Commenge.
Les utilisateur(s) suivant ont remercié: Giraudeau

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

Plus d'informations
il y a 1 semaine 3 jours - il y a 1 semaine 3 jours #30319 par Laurent Dardenne
Salut,

commenge écrit: mais plus complexe est celle ci

je dirais "plus approprié et optimisé" :-)
approprié : on utilise une API adéquate
optimisé: on laisse l'API filtrer les données

Tutoriels PowerShell
Dernière édition: il y a 1 semaine 3 jours par Laurent Dardenne.

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

Plus d'informations
il y a 1 semaine 3 jours #30323 par Giraudeau
Bonjour Commenge,

C'est exactement ce que je voulais faire !!!
Je t'avoue que je ne comprend pas tout car je débute en powershell mais un grand merci à toi !

De mon coté, j'ai effectivement utilisé le paramètre filterhashtable car je le trouve beaucoup plus rapide (y'a pas photo d'ailleurs). Par contre pour le user, je me suis pris la tête à faire des indexof et des substring pour récupérer cette valeur dans le corps du message car c'est le seul endroit ou elle figure...

Bref ta solution est 100 fois mieux, merci pour ton aide précieuse :)

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

Plus d'informations
il y a 1 semaine 3 jours #30327 par Giraudeau
Merci Arnaud pour ton retour.
J'ai viens de faire la petite prezzz ;)

Cédric

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

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