Question cmdlet Get-WinEvent avec variable

Plus d'informations
il y a 3 ans 2 mois #30452 par Zohan
Bonjour,
Je suis nouveau, j'ai testé le script trouvé sur le forum qui retourne les résultats dans la partie script-original

Aussi, ce que je souhaiterai faire dans un seul script c'est : 

1 / Lancement du script, 
2 / Le script demande l'ID ( exemple 6006 )  l'admin met le numéro   -->  Read-Host
3 / Le script confirme la valeur 6006 -->  Write-Host
3 / le script renvoit les résultats (10 derniers evenements )  en ayant pris en compte la valeur 6006 ( dans l'exemple ) --> dans ISE ou dans l'invite de commande



J'ai pensé à déclarer la variable (mais il doit manquer quelque chose ou ce n'est tout simplement pas possible)

$DefaultValue = [string]
Read-Host "Veuillez renseigner le Numéro d'evenement : $DefaultValue"
Write-Host "vous avez renseigner la valeur : $DefaultValue"

----script original
$query = @"
<QueryList>
  <Query Id="0" Path="System">
    <Select Path="System">*[System[(EventID=6006)]]</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


merci pour votre aide si c'est faisable. 
Zohan

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

Plus d'informations
il y a 3 ans 2 mois - il y a 3 ans 2 mois #30454 par Damien Commenge
Bonjour,

Encore une fois, attention cela ne fonctionnera pas pour tous les evenements...

Voici une réponse à votre problème :

function Get-customEvent
{
    param(
        [int]$eventID
    )
    $query = @"
    <QueryList>
      <Query Id="0" Path="System">
        <Select Path="System">*[System[(EventID=$eventID)]]</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 -First 10
}
$EventNb = Read-Host "Veuillez renseigner le Numéro d'evenement "
Write-host "vous avez renseigner la valeur : $EventNb"
Get-customEvent -eventID $EventNb

J'ai donc crée une fonction si c'est pour une utilisation récurrente, je pense que c'est plus simple. Au niveau de cette fonction, elle a besoin d'un paramètre en entré qui sera le numéro d'évènement que l'utilisateur va saisir.
Pour récupérer une valeur saisie par l'utilisateur dans la console, il suffit juste de créer une variable qui sera égale à read-host "...." 
Enfin, j'appelle la fonction avec le paramètre saisit par l'utilisateur.

Si jamais l'objectif est de faire une requête sur plusieurs évènements du journal d'évènement, il est alors nécessaire d'identifier chaque champ souhaité par évènement et d'adapter la partie param en conséquence mais la fonction devra être mis à jour en utilisant un "switch". Il permettra de dire :
Si l'event est la valeur X le nom du serveur se récupère de telle façon, la date de telle façon et les autres champs souhaités de telle façon
Si l'event est la valeur X+10 pareil 
...

En espérant t'avoir aider mais sans avoir plus d'explication sur ce que tu veux vraiment faire, je suis bloqué. 

PS : Je ne suis pas du tout un pro powershell et même loin de là. J'arrive assez souvent à obtenir le résultat que je souhaite, mais je suis loin de coder comme un developpeur.
Dernière édition: il y a 3 ans 2 mois par Damien Commenge.

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

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