Résolu continue dans un foreach

Plus d'informations
il y a 9 mois 3 jours - il y a 9 mois 3 jours #33450 par rhiwotar
continue dans un foreach a été créé par rhiwotar
Bonjour à tous !!

Je n'ai jamais utiliser le continue dans une boucle mais vu ce que je vois sur les forums, je dois pas être si loin de la plaque

le but est de générer un XML en fonction des groupes utilisateurs et si le groupe n'est pas dans le switch, qu'il n'ajoute pas les variables vide dans mon $XML et passe au suivant

foreach($Conf in $groupe){
    Clear-Variable Name,Guid
    switch($Conf){
        "groupe1"{
            $Name = "Nom-Conf1"
            $Guid = "00000-000000-00000-0000-00"
        }

        "groupe2"{
            $Name = "Nom-Conf2"
            $Guid = "111111-11111-111111-11111-11"
        }
       default { continue }
    }
    $XML +="
        <Conf>
          <name=`""+$Name+"`">
            <ServerName>"+$Name+"</ServerName>
            <ServerGUID>{"+$Guid+"}</ServerGUID>
       </Conf>


le résultat donne un truc comme ça
        <Conf>
          <name="Nom-Conf1">
            <ServerName>"Nom-Conf1"</ServerName>
            <ServerGUID>{"00000-000000-00000-0000-00"}</ServerGUID>
       </Conf>
        <Conf>
          <name="">
            <ServerName>""</ServerName>
            <ServerGUID>{""}</ServerGUID>
       </Conf>
        <Conf>
          <name="">
            <ServerName>""</ServerName>
            <ServerGUID>{""}</ServerGUID>
       </Conf>
        <Conf>
          <name="Nom-Conf2">
            <ServerName>"Nom-Conf2"</ServerName>
            <ServerGUID>{"111111-11111-111111-11111-11"}</ServerGUID>
       </Conf>


Si vous avez une idée, je vous remercie d'avance !!
 
Dernière édition: il y a 9 mois 3 jours par rhiwotar.

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

Plus d'informations
il y a 9 mois 3 jours #33451 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet continue dans un foreach
Hello Rhiwotar !

Ca faisait un moment que tu n'étais pas venu ;-)

Personnellement je n'utilise jamais Continue . En effet, selon sa façon de coder, on peut largement s'en passer. Continue va te permettre de quitter ton Switch; ce qui risque d'être plus problématique qu'autre choses car il n'effectuera pas la seconde itération, si lors de la première l'instruction Continue a été exécutée.

En général, on dans un switch, on va ajouter l'instruction break dans chacun des blocs de conditions. Car si la première condition est vraie, ça ne sert à rien d'aller tester la 2e.

Dans ton cas présent, il faut juste que tu ajoutes un test pour vérifier si tu dois ajouter tes données à ton fichier XML. Rien de plus à mon avis.

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

Plus d'informations
il y a 9 mois 3 jours #33452 par rhiwotar
Réponse de rhiwotar sur le sujet continue dans un foreach
j'ai rajouté un
default {$stop = $true}
à la fin et ça fonctionne mais j'imaginais un truc plus propre que ça ^^

Merci pour ton aide!

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

Plus d'informations
il y a 9 mois 3 jours - il y a 9 mois 3 jours #33453 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet continue dans un foreach
Il y a toujours possibilité de faire mieux. Mais souvent le mieux est l'ennemi du bien  .

Ce que tu pourrais essayer c'est de charger ton fichier en mémoire et ensuite dans chaque condition de ton switch, faire un insert des valeurs s'il y a lieu. Ensuite à la sortie de ta boucle, tu réécris ton fichier sur disque.

Quand je dis "charger ton fichier", c'est l'importer en mémoire en tant que fichier XML en faisant ainsi :
[XML]$myXMLData = Get-Content -Path myFile.txt

Ensuite observe les méthodes de $myXMLData avec Get-Member et tu verras qu'il y a des méthodes pour manipuler ton "arbre XML" (noeuds et feuilles).

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Dernière édition: il y a 9 mois 3 jours par Arnaud Petitjean.

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

Plus d'informations
il y a 9 mois 3 jours #33455 par rhiwotar
Réponse de rhiwotar sur le sujet continue dans un foreach
Mouais, je manipule pas assez souvent de XML pour me perdre là dedans pour l'instant 

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

Plus d'informations
il y a 9 mois 3 jours #33456 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet continue dans un foreach
Voici un petit exemple de code qui peut t'aider à démarrer : 
# Chemin vers le fichier XML
$xmlFilePath = "C:\Chemin\vers\votre\fichier.xml"

# Charge le document XML en utilisant le type [xml]
[xml]$xmlDoc = Get-Content $xmlFilePath

# Crée le nouveau nœud que tu veux ajouter
$newNode = $xmlDoc.CreateElement("NouveauNoeud")
$newNode.InnerText = "Contenu du nouveau nœud"

# Sélectionne le nœud parent auquel tu souhaites ajouter le nouveau nœud
$parentNode = $xmlDoc.SelectSingleNode("/Chemin/Vers/NoeudParent")

# Ajoute le nouveau nœud au nœud parent
$parentNode.AppendChild($newNode)

# Enregistre les modifications dans le fichier XML
$xmlDoc.Save($xmlFilePath)

"Nouveau nœud ajouté avec succès."

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

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