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 :

Probleme des variables dans Start-Job [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Janvier 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Probleme des variables dans Start-Job
    Bonjour,
    Je suis bloqué dans mon script de test de connexion.
    Si je mets en dur le nom de l'ordinateur ça fonctionne, mais je voudrais utiliser les variables ($x et $y).
    Est-ce que vous pouvez m'aider? S' il vous plaît
    Merci

    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
    20
    21
    function TestConnection ([STRING]$x,[STRING]$y)
    {    
        write-host $x -ForegroundColor red
        write-host $y -ForegroundColor Yellow
     
        $JobName = Start-Job -ScriptBlock { Test-Connection -ComputerName $x -Count $y -Quiet }
    	while ($JobName.JobStateInfo.State -eq "Running")
    	{
    		"Please wait, I check if this computer is connected to the network"
    		Start-Sleep -M 2000
    	}
     
    Receive-Job -id $JobName.Id 
    Get-Job -id $JobName.Id | Remove-Job 
     
     
    }
     
     
    $test = TestConnection 192.168.1.2 2
    echo $test

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    salut MiroFR

    tu doit utilisé l'option ArgumentList que tu trouvera dans la doc de start-job
    tu trouvera aussi un exemple d'utilisation sur ce blog

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Janvier 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta réponse mais je ne n'arrive pas a mon sortir. Peux-tu modifier mon script? Ce sera plus clair.
    Je te remercie.

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    tu doit utilisé ArgumentList dans ta commande Start-Job pour passer les argument au scriptblock.
    apres dans le scriptblock tu peut utilisé les argument avec $args
    ça devrait fonctionner comme ça :
    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
    function TestConnection ([STRING]$x,[STRING]$y) {    
        write-host $x -ForegroundColor red
        write-host $y -ForegroundColor Yellow
     
        $JobName = Start-Job -ScriptBlock { Test-Connection -ComputerName $args[0] -Count $args[1] -Quiet } -ArgumentList $x, $y
    	while ($JobName.JobStateInfo.State -eq "Running") {
    		"Please wait, I check if this computer is connected to the network"
    		Start-Sleep -M 2000
            	}
     
        Receive-Job -id $JobName.Id 
        Get-Job -id $JobName.Id | Remove-Job 
     
        }
     
    $test = TestConnection 192.168.1.2 2
    write-host $test

    pour t'embrouiller un peu, une autre façon de l'écrire, mais que je trouve plus clair à l'utilisation et pour une relecture quelque mois ou années plus tard
    tu utilise dans le scriptblock des paramètres comme dans une fonction, soit param et la liste des variables
    par exemple dans ton script :
    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
    function TestConnection ([STRING]$x,[STRING]$y) {
        write-host $x -ForegroundColor red
        write-host $y -ForegroundColor Yellow
     
        $JobName = Start-Job -ScriptBlock {param ($ordi, $nbping); Test-Connection -ComputerName $ordi -Count $nbping -Quiet } -ArgumentList $x, $y
    	while ($JobName.JobStateInfo.State -eq "Running") {
    		write-host "Please wait, I check if this $x is connected to the network"
    		Start-Sleep -M 2000
    	    }
     
        Receive-Job -id $JobName.Id 
        Get-Job -id $JobName.Id | Remove-Job 
        }
     
     
    $test = TestConnection 192.168.1.2 2
    write-host $test

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Janvier 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Magnifique !!!!

    Merci 1000 fois

  6. #6
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    en complément, si tu as PS3+ tu peux utiliser le modificateur $using: et ainsi se passer d -argumentlist une chose du genre

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    $JobName = Start-Job -ScriptBlock { Test-Connection -ComputerName $using:x -Count $using:y -Quiet } 
    ...

    et +1 pour 6ratgus

  7. #7
    Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Janvier 2019
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Merci bien

  8. #8
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    Citation Envoyé par I'm_HERE

    en complément, si tu as PS3+ tu peux utiliser le modificateur $using:
    je l'avais oublier, merci I'm_HERE
    personnellement je n'utilise pas les portées car je trouve que ce n'est pas une bonne façon de programmer même pour du script/shell
    sauf dans les event ou on n'a pas le choix je crois

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

Discussions similaires

  1. Probleme dans le passage des variables dans URL
    Par GarsDuCalvados dans le forum Langage
    Réponses: 16
    Dernier message: 04/01/2011, 14h02
  2. [EasyPHP] problème de visibilité des variable dans les includes
    Par d1g-2-d1g dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 23/10/2005, 01h55
  3. Réponses: 5
    Dernier message: 21/10/2005, 11h48
  4. [AS2] déclarer des variables dans une fonction
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 12
    Dernier message: 02/08/2005, 12h50
  5. Réponses: 2
    Dernier message: 04/01/2004, 15h14

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