Question
Récupération d'un résultat multiligne
- Kazer2.0
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 10
- Remerciements reçus 0
il y a 13 ans 4 mois #13020
par Kazer2.0
Récupération d'un résultat multiligne a été créé 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
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.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 13 ans 4 mois #13027
par SiSMik
Réponse de SiSMik sur le sujet Re:Récupération d'un résultat multiligne
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(\"`r`n\"«»)
if ($ListOfBoxes) {
$ListOfBoxes | % {
Write-Host \"Remove box: $($_)\"
vagrant box remove $_
}
}
else { Write-Host \"No box found! }
[/code:1]
Je ne peux pas tester ce code, mais ça devrait fonctionner.
@+
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(\"`r`n\"«»)
if ($ListOfBoxes) {
$ListOfBoxes | % {
Write-Host \"Remove box: $($_)\"
vagrant box remove $_
}
}
else { Write-Host \"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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 13 ans 4 mois #13030
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Récupération d'un résultat multiligne
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
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.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 13 ans 4 mois #13032
par SiSMik
Réponse de SiSMik sur le sujet Re:Récupération d'un résultat multiligne
Ta solution est bien plus sexy Laurent
Connexion ou Créer un compte pour participer à la conversation.
- Kazer2.0
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 10
- Remerciements reçus 0
il y a 13 ans 4 mois #13036
par Kazer2.0
Réponse de Kazer2.0 sur le sujet Re:Récupération d'un résultat multiligne
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 \"propre\" 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
[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 \"propre\" 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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 13 ans 4 mois #13042
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Récupération d'un résultat multiligne
benduru écrit:
Kazer2.0 écrit:
Kazer2.0 écrit:
[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]
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.Ta solution est bien plus sexy Laurent
Kazer2.0 écrit:
On peut tjr ergoter, le principal est ton code réponde au besoin.Par contre, je ne sais pas si c'est la manière la plus \"propre\" qui soit.
Kazer2.0 écrit:
Une possible solution rapido :Le cas d'erreur c'est simplement un message d'erreur du type : no box found
[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.050 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Récupération d'un résultat multiligne