Question Récupération d'un résultat multiligne

Plus d'informations
il y a 13 ans 4 mois #13020 par Kazer2.0
Bonjour à tous,

J'ai un petit problème et mes faibles compétences ne me permettent malheureusement pas de le résoudre sans aide (et à priori, google ne m'aide pas trop non plus).

J'ai une commande, \"vagrant box list\"

Le résultat de la commande peut être null (vide), ou prendre différente valeur, de type :

example 1
example 2

Concrètement, ça me renvoi les \"boxs\" installées, hors pour faire du nettoyage, je suis en train de mettre en place un bouton qui les supprimes tous, le problème, c'est que le résultat peut être null, avoir une valeur, ou avoir plusieurs valeur.

La commande de suppression est vagrant box remove <le nom de la box>

Je cherche donc un moyen de faire une fonction qui exécute donc vagrant box list, et en fonction du résultat, la fonction lancement la commande vagrant box remove <nom de box> pour chaque box.


- Si il n'y a pas de valeur de retour à la commande vagrant box list, ben on fait rien
- Si on reçoit la valeur example1, ben on fait simplement un vagrant box remove example1
- Si on reçoit les valeurs example1, example2, example3, ben on fait à la suite, vagrant box remove example1, vagrant box remove example2, vagrant box remove example3.

Le séparateur est un retour chariot (le résultat de vagrant box list sépare les différentes \"box\" par un retour à la ligne).



J'avoue que étant débutant, et malgré de recherche, j'ai n'ai pas encore le niveau pour exploiter des valeurs de retours qui peuvent varier comme ça (d'habitude, la fonction me renvoi UNE seul valeur, ce qui n'est pas le cas ici).





Je vous remercie d'avance de votre aide !


Cordialement

Kazer2.0<br><br>Message édité par: Kazer2.0, à: 14/11/12 10:28

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

Plus d'informations
il y a 13 ans 4 mois #13027 par SiSMik
Bonjour,

Si j'ai bien compris ton problème c'est que tu ne sais pas comment traiter ce qui t'es retourné comme un objet.

Je te propose ceci:

[code:1]
$Resultat = vagrant box list
$ListOfBoxes = $Resultat.split(\&quot;`r`n\&quot;«»)
if ($ListOfBoxes) {
$ListOfBoxes | % {
Write-Host \&quot;Remove box: $($_)\&quot;
vagrant box remove $_
}
}
else { Write-Host \&quot;No box found! }
[/code:1]

Je ne peux pas tester ce code, mais ça devrait fonctionner.

@+

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

Plus d'informations
il y a 13 ans 4 mois #13030 par Laurent Dardenne
Salut,
première idée, forcer le résultat, de type String, en un tableau d'objet :
[code:1]$Result=@(vagrant box list)[/code:1]

Puis tester la proprièté Count
Ensuite, étant donné que tu utilises un prg externe, il manque les cas d'erreur. Que reçois-tu dans ces cas là ?
[Edit]
pas vu le poste de benduru...<br><br>Message édité par: Laurent Dardenne, à: 14/11/12 14:51

Tutoriels PowerShell

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

Plus d'informations
il y a 13 ans 4 mois #13032 par SiSMik
Ta solution est bien plus sexy Laurent :)

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

Plus d'informations
il y a 13 ans 4 mois #13036 par Kazer2.0
En fait, à force de bidouille et de recherche plus ou moins fructueuse, j'ai réussi à faire ce que je voulais avec :

[code:1]
$liste_box_vagrant = vagrant box list
Foreach
($line in $liste_box_vagrant)
{vagrant box remove $line}[/code:1]

Par contre, je ne sais pas si c'est la manière la plus \&quot;propre\&quot; qui soit.

Le cas d'erreur c'est simplement un message d'erreur du type : no box found<br><br>Message édité par: Kazer2.0, à: 14/11/12 15:42

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

Plus d'informations
il y a 13 ans 4 mois #13042 par Laurent Dardenne
benduru écrit:

Ta solution est bien plus sexy Laurent :)

Le pb est qu'il faut connaitre cette syntaxe pour comprendre ce que ça fait, alors que la tienne est plus explicite, et demande moins de commentaires ou de prérequis.
Kazer2.0 écrit:

Par contre, je ne sais pas si c'est la manière la plus \&quot;propre\&quot; qui soit.

On peut tjr ergoter, le principal est ton code réponde au besoin.
Kazer2.0 écrit:

Le cas d'erreur c'est simplement un message d'erreur du type : no box found

Une possible solution rapido :
[code:1]
$t='box1','no box found','box2'
$t -eq 'no box found'

if ($t -eq 'no box found') {write-host 'ok'} else {write-host 'Nok'}

$t='box1','box2'
$t -eq 'no box found'
if ($t -eq 'no box found') {write-host 'ok'} else {write-host 'Nok'}
[/code:1]

Tutoriels PowerShell

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

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