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ération d'une variable d'une fonction dans un workflow [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2016
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Récupération d'une variable d'une fonction dans un workflow
    Bonjour tout le monde,

    Je travaille sur un script capable de faire des requêtes ping sur une plage d'adresses IP entrée en paramètre avec une ip de début et une ip de fin. Le script récupère aussi le nom de l'équipement interrogé via la commande "ping -a".
    Une première fonction "plageIP" s'occupe donc de récupérer la plage et d'envoyer à la variable "$plageIP" la liste des adresses à interroger sous forme de tableau.

    La "fonction" workflow permet d'effectuer les ping en parallèle (d'après ce que j'ai compris). C'est ce workflow qui prend les paramètres ip de début (exemple : 192.168.1.1) et ip fin (exemple : 192.168.1.10) et qui les envoie à la fonction "plageIP" qui va donc au final renseigner "$plageIP" telle que :
    192.168.1.1
    192.168.1.2
    192.168.1.3
    192.168.1.4
    192.168.1.5
    192.168.1.6
    192.168.1.7
    192.168.1.8
    192.168.1.9
    192.168.1.10

    Le problème c'est que je n'arrive pas à récupérer cette variable ($plageIP) dans le workflow afin de pouvoir effectuer les traitements de ping sur cette dernière.
    Auriez-vous une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    function plageIP  { 
    Param ([string] $ipDebut, [string] $ipFin)
    $plage = $ipDebut.remove($ipDebut.LastIndexOf("."))
    $début = $ipDebut.remove(0,$ipDebut.LastIndexOf(".")+1)
    $fin = $ipFin.remove(0,$ipFin.LastIndexOf(".")+1)
    $plageIP = $debut..$fin
    $plageIP = foreach ($i in $plageIP){"$plage.$i"}
    }
    
    
    
    Workflow Ping-Host
    {
     Param ([string] $ipDebut,[string] $ipFin)  
     plageIP $ipDebut $ipFin
        ForEach -Parallel ($i in $plageIP)
        {
            If (Test-Connection -ComputerName $i -Count 2 -Quiet)
                {
                $ping = ping -a $i
                $nom0 = $ping[1].remove($ping[1].indexof("[") - 1)
                $nom00 = $nom0.remove(0,31)
                "$i,       $nom00,        alive"
                
        } Else {
                "$i is down"
        }
        }
    }

  2. #2
    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,
    si ta fonction renvoie des données il n'est pas nécessaire de se préoccuper de la portée des variables :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    function Get-plageIP  { 
    Param ([string] $ipDebut, [string] $ipFin)
    $plage = $ipDebut.remove($ipDebut.LastIndexOf("."))
    $début = $ipDebut.remove(0,$ipDebut.LastIndexOf(".")+1)
    $fin = $ipFin.remove(0,$ipFin.LastIndexOf(".")+1)
    $plageIP = $debut..$fin
    foreach ($i in $plageIP){"$plage.$i"}
    }
     
     
     
    Workflow Ping-Host
    {
     Param ([string] $ipDebut,[string] $ipFin)  
     $r=Get-plageIP $ipDebut $ipFin
     $r|% {write-host $_}
    }
    Ping-Host 127.1.1.0 127.1.1.10
    Et le mieux est d'utiliser le type IpAddress au lieu de string qui t'oblige à recoder les contrôles de validité.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2016
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Bonjour

    Merci beaucoup pour les infos !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Affecter une variable d'une classe C# à une variable Javascript
    Par SultanGeek dans le forum C#
    Réponses: 0
    Dernier message: 20/06/2015, 20h42
  2. Récupération de la valeur d une variable elle même contenue dans une variable
    Par guiplongeur dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 16/03/2015, 16h23
  3. Réponses: 5
    Dernier message: 27/02/2014, 12h09
  4. [Débutant] récupération d'une variable d'une procédure a une autre
    Par labib23dz dans le forum C#
    Réponses: 5
    Dernier message: 26/02/2012, 19h30
  5. Réponses: 5
    Dernier message: 14/06/2006, 16h35

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