none
Accès aux variables entre fonctions RRS feed

  • Question

  • Bonjour à toutes et tous,

    En train d'élaborer un script PowerShell pour un besoin particulier, je fais face à un problème : l'accès aux variables entre fonctions.

    En effet, dans un même script, je crée une variable avec la portée "script" dans une première fonction puis je souhaite supprimer cette variable à l'aide d'une seconde fonction.

    Hors, lors de l'appel de la cmdlet Remove-Variable dans la seconde fonction, il m'est retourné que la variable n'existe pas.

    Voici un exemple :

    function CreateVar{
        $script:a="test"
        }
    
    function RemoveVar{
        Remove-Variable a
        }
    
    CreateVar
    RemoveVar

    Auriez-vous une idée svp ? Merci.

    Bon après-midi.


    FXE


    • Modifié FXE mardi 26 avril 2016 13:40
    mardi 26 avril 2016 13:39

Réponses

  • Bonjour Olivier et merci pour ta réponse.

    En fait j'ai fait appel aux variables créées dans la fonction "CreateVar" dans la fonction "RemoveVar" en précisant le paramètre "Scope".

    Ce qui donne :

    function CreateVar{
        $script:a="test"
        }
    
    function RemoveVar{
        Remove-Variable a -Scope script
        }
    
    CreateVar
    RemoveVar

    Merci pour votre aide en tout cas.

    Bonne continuation.


    FXE

    • Marqué comme réponse FXE mardi 26 avril 2016 17:07
    mardi 26 avril 2016 17:06

Toutes les réponses

  • Bonjour,Il faudrait déclarer tes variables en tant que global :

    # Définition de la variable
    $global:var1

    Ensuite, tu peux l'utiliser dans toutes tes fonctions qui sont dans ton ps1.

    Après, il y a une autre facon qui est le passage de variable. Par exemple :

    Function coucou ($Ma_Variable)
           {
             mon script
           }
    coucou ("MaVariableAPasser")

    J'espère que ça va t'aider !

    Olivier

    mardi 26 avril 2016 15:34
  • Bonjour Olivier et merci pour ta réponse.

    En fait j'ai fait appel aux variables créées dans la fonction "CreateVar" dans la fonction "RemoveVar" en précisant le paramètre "Scope".

    Ce qui donne :

    function CreateVar{
        $script:a="test"
        }
    
    function RemoveVar{
        Remove-Variable a -Scope script
        }
    
    CreateVar
    RemoveVar

    Merci pour votre aide en tout cas.

    Bonne continuation.


    FXE

    • Marqué comme réponse FXE mardi 26 avril 2016 17:07
    mardi 26 avril 2016 17:06