Question gestion des codes retours/erreurs

Plus d'informations
il y a 16 ans 1 semaine #1964 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.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 1 semaine #1965 par Robin Lemesle
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.

Plus d'informations
il y a 16 ans 1 semaine #1971 par Laurent Dardenne
Robin écrit:

de la bonne exécution d'une cmdlet

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 :
[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.

Plus d'informations
il y a 16 ans 1 semaine #1973 par Thierry
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.

Plus d'informations
il y a 16 ans 1 semaine #1974 par Laurent Dardenne
tibal écrit:

existe t'il un moyen simple d'obtenir le resultat d'un test dans une variable système ?

Je ne sais pas et je ne comprend pas ton problème.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 1 semaine #1975 par Thierry
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]

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.080 secondes
Propulsé par Kunena