Question
gestion des codes retours/erreurs
- Thierry
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 13
- Remerciements reçus 0
il y a 16 ans 1 semaine #1964
par Thierry
gestion des codes retours/erreurs a été créé par Thierry
Je souhaite gérer les codes retour comme sur UNIX, je m'explique :
[code:1]
$a = 4
if ($a -eq 5)
{
$?
Write-Host \"OK\"
}
else
{
$?
Write-Host \"KO\"
}
[/code:1]
Sous UNIX, le test n'étant pas concluant, la valeur de $? est à 0, alors que sous PS est est invariablement à TRUE. Peux t'on modifier son comportement ou doit t'on utiliser une autre variable ?
Merci, toutes les idées sont les bienvenues.
[code:1]
$a = 4
if ($a -eq 5)
{
$?
Write-Host \"OK\"
}
else
{
$?
Write-Host \"KO\"
}
[/code:1]
Sous UNIX, le test n'étant pas concluant, la valeur de $? est à 0, alors que sous PS est est invariablement à TRUE. Peux t'on modifier son comportement ou doit t'on utiliser une autre variable ?
Merci, toutes les idées sont les bienvenues.
Connexion ou Créer un compte pour participer à la conversation.
- Robin Lemesle
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 260
- Remerciements reçus 0
il y a 16 ans 1 semaine #1965
par Robin Lemesle
Robin MVP PowerShell
Réponse de Robin Lemesle sur le sujet Re:gestion des codes retours/erreurs
La variable $? est le resultat (booléen) de la bonne exécution d'une cmdlet et non pas d'un test avec un opérateur de comparaison (ex : -eq)
Robin MVP PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 16 ans 1 semaine #1971
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:gestion des codes retours/erreurs
Robin écrit:
[code:1]
Dir
$?
(a).name
$?
Dir;(a).name
$?
Dir;($a).name
$?
. \c:\temp\rien.exe
$?
. \c:\temp\rien.exe;($a).name
$?
[/code:1]
Son résultat est en plus dépendant du contexte, car ici a n'existe pas. Mais cela ne gêne pas le parseur qui avec rien, ne fait rien
[code:1]
set-psdebug -strict -trace 0
. \c:\temp\rien.exe;($a).name
$?
[/code:1]
Avec cet ajout du mode strict le résultat est bien $false pour la suite d'instruction.
Il reste $LastExitError a intégrer dans ce type de test et aussi regarder comment cette variable automatique se comporte au sein d'un bloc d'exception.
Mais là je n'ai pas trop le temps de creuser le sujet.
Mais pas seulement. Je dirais que c'est plutot le résultat de la dernière instruction parsée contenue dans une ligne provenant de la console ou d'un script :de la bonne exécution d'une cmdlet
[code:1]
Dir
$?
(a).name
$?
Dir;(a).name
$?
Dir;($a).name
$?
. \c:\temp\rien.exe
$?
. \c:\temp\rien.exe;($a).name
$?
[/code:1]
Son résultat est en plus dépendant du contexte, car ici a n'existe pas. Mais cela ne gêne pas le parseur qui avec rien, ne fait rien
[code:1]
set-psdebug -strict -trace 0
. \c:\temp\rien.exe;($a).name
$?
[/code:1]
Avec cet ajout du mode strict le résultat est bien $false pour la suite d'instruction.
Il reste $LastExitError a intégrer dans ce type de test et aussi regarder comment cette variable automatique se comporte au sein d'un bloc d'exception.
Mais là je n'ai pas trop le temps de creuser le sujet.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Thierry
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 13
- Remerciements reçus 0
il y a 16 ans 1 semaine #1973
par Thierry
Réponse de Thierry sur le sujet Re:gestion des codes retours/erreurs
Merci, mais existe t'il un moyen simple d'obtenir le resultat d'un test dans une variable système ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 16 ans 1 semaine #1974
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:gestion des codes retours/erreurs
tibal écrit:
Je ne sais pas et je ne comprend pas ton problème.existe t'il un moyen simple d'obtenir le resultat d'un test dans une variable système ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Thierry
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 13
- Remerciements reçus 0
il y a 16 ans 1 semaine #1975
par Thierry
Réponse de Thierry sur le sujet Re:gestion des codes retours/erreurs
Je veux simplement récupérer le code retour après un test comme sous UNIX :
[code:1]
1 er cas)
$var = 10
if ($var -eq 10)
{
$code_retour # ici la valeur devrait être 0
}
2 nd cas)
$var = 11
if ($var -eq 10)
{
$code_retour # ici la valeur devrait être 1
}
[/code:1]
[code:1]
1 er cas)
$var = 10
if ($var -eq 10)
{
$code_retour # ici la valeur devrait être 0
}
2 nd cas)
$var = 11
if ($var -eq 10)
{
$code_retour # ici la valeur devrait être 1
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.080 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- gestion des codes retours/erreurs