IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Récupérer une chaîne de caractères dans un objet WMI


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Récupérer une chaîne de caractères dans un objet WMI
    Salut à tous!

    J'essaie de récupérer les adresses IP de ceux qui échouent une ouverture de session d’un compte Windows.

    Par exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gwmi -query "Select * from Win32_NTLogEvent Where Logfile = 'Security' and category = 12544 and eventcode = 4625"
    Ici, j'obtiens un paquet d'information dont l'adresse IP. J'aimerais seulement obtenir l'adresse IP et le mettre dans un fichier texte.

    J'ai essayé un de faire un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select-string -pattern "Adresse du réseau source:\t(\d+\.\d+\.\d+\.\d+)" | export-csv E:\fichier.txt
    Mais, ça ne fonctionne pas. Il ne doit pas manquer grand chose...

    Merci de votre aide.

  2. #2
    Membre éclairé Avatar de suchiwa
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2010
    Messages
    435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2010
    Messages : 435
    Points : 899
    Points
    899
    Par défaut
    Citation Envoyé par Zipper963 Voir le message
    Salut à tous!

    J'essaie de récupérer les adresses IP de ceux qui échouent une ouverture de session d’un compte Windows.

    Par exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gwmi -query "Select * from Win32_NTLogEvent Where Logfile = 'Security' and category = 12544 and eventcode = 4625"
    Ici, j'obtiens un paquet d'information dont l'adresse IP. J'aimerais seulement obtenir l'adresse IP et le mettre dans un fichier texte.

    J'ai essayé un de faire un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select-string -pattern "Adresse du réseau source:\t(\d+\.\d+\.\d+\.\d+)" | export-csv E:\fichier.txt
    Mais, ça ne fonctionne pas. Il ne doit pas manquer grand chose...

    Merci de votre aide.
    Bonjour Zipper,

    Je pense qu'un pipe de ta sortie, peut te permettre de filtrer ce que tu veux, suivant cet exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $a = gwmi -query "Select * from Win32_NTLogEvent Where Logfile = 'Security' and eventcode = 4625"
    $a | % {$_.message}
    Tu auras uniquement le contenu du message.

    Maintenant je n'ai pas réussi à extraire comme toi le ligne que tu voulais.
    L'une des raisons peut etre dû au fait que le message est vu comme une seule ligne et non comme une imbrication d'informations ( un tableau d'information ).

    J'ai utilisé le regex suivant, basé sur le tient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [regex]$ip = "^(\d+\.\d+\.\d+\.\d+)$"
    Quand je fais un second pipe avec le filtre where-object {...} , je n'ai aucun retour, pas même une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $a | foreach-object {$_.message} | where-object {$_ -contains "$ip"}
    $a | foreach-object {$_.message} | where-object {$_ -match "$ip"}
    $a | foreach-object {$_.message} | where-object {$_ -like "$ip"}
    [...]
    Donc la commande est bonne, mais ne renvoie rien, car soit on prend le bloc du message en entier, soit c'est un retour $false ,et donc n'affiche rien, c'est ce que nous avons au dessus, les commandes ne "match" pas avec le "filtre" $ip.

    Je voulais te demander, j'ai cherché la correspondance de ton "\t" dans ton regex, à quoi il correspond, une tabulation ?

    Coridialement,
    Vincent

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Salut Vincent,

    Tout d'abord, merci beaucoup de ton aide

    Pour ce qui est du /t, je crois en effet que c'est une tabulation et c'est peut-être facultatif de l'utiliser.

    J'ai pensé à une autre solution. Je pourrais peut-être extraire le contenu de message dans un fichier texte temporaire et ensuite supprimer tout sauf l'adresse IP. Je t'en redonne des nouvelles.

    Merci encore.

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par Zipper963 Voir le message
    Pour ce qui est du /t, je crois en effet que c'est une tabulation et c'est peut-être facultatif de l'utiliser.
    Vérifie ce que tu récupères comme infos, une tabulation ? Une suite d'espaces ? Sous quel encodage ?
    Citation Envoyé par Zipper963 Voir le message
    J'ai pensé à une autre solution
    Ta première approche me semble correcte, as-tu des exemples de résultats à nous communiquer ?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Rebonjour!

    J'ai finalement trouvé une solution!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gwmi -query "Select * from Win32_NTLogEvent Where Logfile = 'Security' and eventcode = 4625" | foreach-object {$_.message} | select-string -pattern "(\d+\.\d+\.\d+\.\d+)" |  foreach-object {$_.Matches} | foreach-object {$_.Value} | Group-Object -Property ("length")[0].group | Where-Object {$_.count -gt 4} | foreach-object {$_.name} | select-string -pattern "(\d+\.\d+\.\d+\.\d+)" |  select-string -pattern "\w" | foreach-object {$_.line} | out-file fichier.txt
    Tout ça en une ligne seulement

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Zipper963 Voir le message
    Tout ça en une ligne seulement
    Et quelle ligne ! C'est la maintenance qui va se régaler

    Ceci dit, sur mon poste elle ne renvoie rien, par contre ceci me renvoie un résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    gwmi -query "Select * from Win32_NTLogEvent Where Logfile = 'Security' and eventcode = 4625" |
      Where-object {$_.Message -Match "Adresse du réseau source\s*:\s*(?<AdresseIP>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})"}|
      Foreach-Object {$Matches.AdresseIP}

Discussions similaires

  1. [MySQL] Remplacer une chaîne de caractères dans une base de données
    Par Furius dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/11/2013, 21h06
  2. [Turbo Pascal] Récupérer une chaîne de caractères dans une pile
    Par matdu27 dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 26/11/2011, 13h26
  3. sql récupérer une chaîne de caractères dans un champ
    Par ritchie23 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/05/2009, 12h12
  4. Remplacer une chaîne de caractères dans une base
    Par Furius dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/10/2005, 23h03
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo