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 :

Debug simple des variables [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut Debug simple des variables
    Bonjour à tous,

    Je débute en PowerShell et j'ai donc besoin de tester fréquemment mes variables...
    Est-il possible d'afficher un dump de toutes les variables locales / globales dans un script ?
    ou
    Est-il possible d'avoir une fonction qui permet d'afficher le nom d'une variable et sa valeur ?
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $compteur=113
    Function Dump($var) {
        Write-Host $var" :"$($var) # A CORRIGER
    }
    Dump("compteur")
    Merci d'avance

  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,
    tu peux utiliser ceci :
    Voir aussi ceci et cela

  3. #3
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Super !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function DumpVar($var) {
    	#Dir Variable:$Var | Select Name,Value | Format-Table -AutoSize -HideTableHeaders
    	Write-Host (Dir Variable:$Var).Name":" -NoNewLine
    	Write-Host (Dir Variable:$Var).Value -ForegroundColor White
    }
    Merci Laurent Dardenne
    par contre tes liens sont trop évolués pour mon niveau actuel...

  4. #4
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    et sinon... comment garder le même résultat mais avec

    $truc = "Hello"
    DumpVar($truc)

    plutôt que :

    DumpVar("truc")

    ?

  5. #5
    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
    L'usage du Dir était pour te donner une piste, le provider de variable.
    Ceci est préférable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function DumpVar([string]$VariableName) {
       $v=Get-Item Variable:$VariableName
       Write-Host ("{0}={1}" -F $V.Name, $V.Value) -ForegroundColor White
    }
    
    #test
    DumpVar pwd
    Citation Envoyé par Tchupacabra Voir le message
    par contre tes liens sont trop évolués pour mon niveau actuel...
    Le code surement, l'usage déjà moins :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     $Result=Get-Variable 'pwd'|Write-Properties -PropertyName Name,Value
     $Result
      #Ne contient rien, Write-Properties affiche uniquement sur la console ou le debugger actif
    La seconde approche permet de fonctionner dans un job, mais pas la première.
    Et Show-object détaille tous les champs de la variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Show-Object (get-variable pwd)
    C'est plus pour de la mise au point au cas par cas.

    Voici quelque chose d'évolué, Log4posh.
    Avec ceci tu peux tracer sur plusieurs dispositif, que ce soit un script dans la console, un module particulier, un job voir un script dans une tâche planifiée.

    [edit]
    Un exemple d'usage du module Log4Posh dans un script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Import-Module Log4Posh
      
     #Configure les loggers pour ce script
     #Le chemins des FileAppenders nommés FileExternal sont redirigés
     #Les appenders console sont activés
     #Les variables logger sont créées dans la portée de l'appelant de ce script
    Initialize-Log4NetScript -FileExternal "C:\temp\Main.log" -Console All
      
    $InfoLogger.PSInfo("Logger info ready.") 
    $DebugLogger.PSDebug("Logger debug ready.")
    
    Type "C:\temp\Main.log"

  6. #6
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    C'est super tout ça !!!
    Merci beaucoup !

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

Discussions similaires

  1. Inspection des variables en debug - problème
    Par Pocus dans le forum EDI
    Réponses: 10
    Dernier message: 08/12/2017, 15h31
  2. division simple avec des chiffres et non des variables
    Par bosk1000 dans le forum Débuter
    Réponses: 5
    Dernier message: 15/01/2015, 20h46
  3. Initialisation des variables. Debug vs Release
    Par deubelte dans le forum Débuter
    Réponses: 2
    Dernier message: 09/03/2012, 12h02
  4. Script shell : afficher le contenu des variables entre simple quote
    Par mualki dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 23/01/2010, 00h14
  5. Opérations simple pour des variables
    Par anayathefirst dans le forum Jasper
    Réponses: 8
    Dernier message: 31/03/2008, 11h57

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