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 :

Formater la sortie d'un script powershell


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 63
    Points : 57
    Points
    57
    Par défaut Formater la sortie d'un script powershell
    Bonjour,
    Je rencontre un petit problème lorsque j'utilise un script powershell à l’intérieur d'un script batch pour un agent nagios.
    Pour faire simple, l'agent nagios qui exécute le script batch :
    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
    set retour=
    set variable=
    
    FOR /F "usebackq delims=" %%v IN (`Powershell.exe -executionpolicy remotesigned -File  powershell\TestConnexionBase.ps1 -Server %1`) DO set d=%%v
    
    echo %d%
    
    setlocal enableDelayedExpansion
    
    if /I %d:~0,6% EQU reussi (
    	set variable=0;
    	echo OK-Connexion avec %1 fonctionnelle
    	goto END
    )
     
    if /I %d:~0,4% EQU rate (
    	set variable=2;
    	echo CRITICAL-Connexion avec %1 non fonctionnelle
    	goto END
    )
    
    :END
    exit /b %variable%
    Ici, tant que le script powershell s’exécute,même si le serveur n'est pas joignable, l'agent nagios récupère le code 0 alors que la variable de sortie du batch vaut bien 2.
    Je ne vois pas d'ou vient le problème, donc si quelqu'un a une piste, je suis preneur.

    Je me disais que peut être en forçant le script powershell à sortir avec un code 2 en cas de connexion impossible, cela corrigerai le problème mais je n'y arrive pas.

    Merci d'avance.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Salut moman,

    Si tu parles du code erreur de fin d'exécution de PowerShell tu peux le fixer.
    La variable se nomme $LASTEXITCODE (attention au scope tout de même)
    Et il me semble que %ERRORLEVEL% aura la valeur de $LASTEXITCODE donc tu pourras continuer ton script en fonction du résultat 0 ou 2.

    Voilà une piste à creuse, bon courage.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 63
    Points : 57
    Points
    57
    Par défaut
    Merci pour ta réponse.
    Je vais creuser cette piste.

  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
    Citation Envoyé par dj_max_69 Voir le message
    Et il me semble que %ERRORLEVEL% aura la valeur de $LASTEXITCODE donc tu pourras continuer ton script en fonction du résultat 0 ou 2.
    Pour propager un code de sortie mieux vaut utiliser l'instruction Exit.
    $LASTEXITCODE est interne à Powershell, code de retour du dernier programme externe exécuté.
    Un exemple :
    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
    &{
    @'
    $LastexitCode=2
    "Inner Lastexitcode=$Lastexitcode"
    '@ > C:\temp\Test1.ps1
    Powershell.exe -noprofile -executionpolicy remotesigned -File C:\temp\Test1.ps1 
    "Outer Lastexitcode=$Lastexitcode"
    }
    &{
    @'
    $LastexitCode=2
    "Inner Lastexitcode=$Lastexitcode"
    Exit 2
    '@ > C:\temp\Test2.ps1
    Powershell.exe -noprofile -executionpolicy remotesigned -File C:\temp\Test2.ps1 
    "Outer Lastexitcode=$Lastexitcode"
    }
    
    @'
    rem Powershell.exe -noprofile -executionpolicy remotesigned -File C:\temp\Test1.ps1
    Powershell.exe -noprofile -executionpolicy remotesigned -File C:\temp\Test2.ps1
    @Echo Batch : %errorlevel%
    '@ |set-content -path C:\temp\Test3.cmd -Encoding ASCII  
    C:\temp\Test3.cmd
    En cas d'exception inattendue, PS renvoie 1. Mais en tenant compte d'un bug :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @'
    Throw "marche pas"
    '@ > C:\temp\Test3.ps1
    
    @'
    Powershell.exe -noprofile -executionpolicy remotesigned -Command  "& {. "C:\temp\Test3.ps1"}"
    @Echo Batch : %errorlevel%
    '@ |set-content -path C:\temp\Test5.cmd -Encoding ASCII  
    C:\temp\Test5.cmd

Discussions similaires

  1. [Sqlplus] Format de sortie
    Par cheung dans le forum Sql*Plus
    Réponses: 7
    Dernier message: 03/11/2006, 09h28
  2. Réponses: 8
    Dernier message: 15/06/2006, 20h56
  3. [VB6] debutant format de sortie d un fichier
    Par Slumpy dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/05/2006, 21h49
  4. Réponses: 7
    Dernier message: 02/05/2006, 11h28
  5. format de sortie commande \pset
    Par Alesk dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 30/01/2006, 14h48

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