Question [Résolu] Problème de boucle

Plus d'informations
il y a 7 ans 9 mois #25559 par Corentin
Bonjour à tous, nouvelle journée, nouveau problème ;)

Ce programme récupère des données dans un fichier csv.
Ce fichier contient donc une colonne nommé PPPOE_USERNAME.
Toutes les lignes ne possèdent pas de données dans cette colonne.
J'aimerais que quand il y a quelque chose dans cette colonne, alors on va chercher le bon modèle et le fichier généré a le bon nom,
else on va chercher un autre modèle et le nom du fichier générer est différent.
Seulement mon programme actuellement il prend toujours le premier modèle et concernant les noms de fichiers il génère que des PPPOE sauf la dernière ligne de mon fichier csv ou la il prend le bon modèle et met le bon nom

[code:1]
$FichierCSV = Import-Csv -Path \"C:\Users\Corentin.FOURRIER\Documents\ecoles1.csv\" -Delimiter \",\"

$compteur = 0

do{
foreach ($Ligne in $FichierCSV) {

$NOM_ECOLE = $ligne.NOM_ECOLE
$ADDR_FW_LAN = $ligne.ADDR_FW_LAN
$ADDR_POOL_DHCP_LAN = $ligne.ADDR_POOL_DHCP_LAN
$ADDR_FW_WAN = $ligne.ADDR_FW_WAN
$ADDR_MASK_WAN = $ligne.ADDR_MASK_WAN
$ADDR_GW_WAN = $ligne.ADDR_GW_WAN
$MAC_FW = $ligne.MAC_FW
$PPPOE_USERNAME = $ligne.PPPOE_USERNAME
$PPPOE_PASSWORD = $ligne.PPPOE_PASSWORD

if ($PPPOE_USERNAME -ne $null){
$contentPPPOE = Get-Content \"C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.ADDR-MAC-MODELE-PPPOE.clish\" | foreach {
$_ -replace \"<NOM_ECOLE>\",$NOM_ECOLE -replace \"<ADDR_FW_LAN>\", $ADDR_FW_LAN -replace \"<ADDR_POOL_DHCP_LAN>\", $ADDR_POOL_DHCP_LAN -replace \"<ADDR_FW_WAN>\", $ADDR_FW_WAN -replace \"<ADDR_MASK_WAN>\", $ADDR_MASK_WAN -replace \"<ADDR_GW_WAN>\", $ADDR_GW_WAN -replace \"<MAC_FW>\", $MAC_FW -replace \"<PPPOE_USERNAME>\", $PPPOE_USERNAME -replace \"<PPPOE_PASSWORD>\", $PPPOE_PASSWORD }
Set-Content -Path \"C:\Users\Corentin.FOURRIER\Documents\autoconf.MAC.clish\autoconf.$MAC_FW.PPPOE.clish\" -Value $contentPPPOE
} else {
$contentFO = Get-Content \"C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.ADDR-MAC-MODELE-FO.clish\" | foreach {
$_ -replace \"<NOM_ECOLE>\",$NOM_ECOLE -replace \"<ADDR_FW_LAN>\", $ADDR_FW_LAN -replace \"<ADDR_POOL_DHCP_LAN>\", $ADDR_POOL_DHCP_LAN -replace \"<ADDR_FW_WAN>\", $ADDR_FW_WAN -replace \"<ADDR_MASK_WAN>\", $ADDR_MASK_WAN -replace \"<ADDR_GW_WAN>\", $ADDR_GW_WAN -replace \"<MAC_FW>\", $MAC_FW }
Set-Content -Path \"C:\Users\Corentin.FOURRIER\Documents\autoconf.MAC.clish\autoconf.$MAC_FW.FO.clish\" -Value $contentFO
}
$compteur++
}
} until ($Ligne -ne $null)

#echo $contentPPPOE
#echo $contentFO
echo \"Le programme a généré $compteur fichiers avec succés\"

[/code:1]

Message édité par: Corentin, à: 8/06/18 14:55

Message édité par: Corentin, à: 11/06/18 12:51<br><br>Message édité par: Corentin, à: 12/06/18 12:54

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

Plus d'informations
il y a 7 ans 9 mois #25561 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Problème de boucle
Bonjour Corentin,

Je pense que le problème n'est pas là où tu penses...

En effet, avec Set-Content tu réécrases à chaque fois ton fichier. Essaie plutôt avec la commande Add-Content. ;)

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 ?

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

Plus d'informations
il y a 7 ans 9 mois #25563 par Corentin
Réponse de Corentin sur le sujet Re:Problème de boucle
Bonne idée, seulement cela me poserait problème d'avoir deux fichiers avec la même adresse MAC, si par exemple on modifie des données et qu'on relance le programme je risquerait d'avoir deux fichier avec la même adresse MAC.

J'ai donc laissé les Set-Content, et je ne sais pas trop comment mais le programme fonctionne désormais.

Seulement j'ai toujours un petit bug,
Encore une fois c'est la dernière ligne de mon fichier csv qui pose problème, et donc le dernier fichier de généré, il n'y a pourtant aucune erreurs dans mon fichier csv

il est généré comme les fichiers qui ont des données dans la colonne PPPOE_USERNAME alors qu'il n'y en a pas.

Est-ce une erreur commune cette histoire de dernière ligne d'un fichier csv ? Car je ne comprend vraiment pas :S

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

Plus d'informations
il y a 7 ans 9 mois #25564 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Problème de boucle

il est généré comme les fichiers qui ont des données dans la colonne PPPOE_USERNAME alors qu'il n'y en a pas.


Es-tu sûr qu'il n'y aurait pas un espace dans ta chaine ? Car un espace n'est pas une valeur nulle.

Pour en avoir le cœur net, essaie ceci:
[code:1]
$FichierCSV = Import-Csv -Path \&quot;C:\Users\Corentin.FOURRIER\Documents\ecoles1.csv\&quot; -Delimiter \&quot;,\&quot;

$FichierCSV[-1].PPPOE_USERNAME -eq $null
[/code:1]

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 ?

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

Plus d'informations
il y a 7 ans 9 mois #25565 par Corentin
Réponse de Corentin sur le sujet Re:Problème de boucle
Le programme me renvoie \&quot;True\&quot; à cette commande

J'ai régler le problème en tous simplement créant une autre ligne vide en dessous
En gros la dernière ligne était la 23ème j'ai juste appuyer sur Entré pour créer une 24ème ligne.
C'est tout de même étrange ce problème de dernière ligne :pinch:<br><br>Message édité par: Corentin, à: 7/06/18 14:38

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

Plus d'informations
il y a 7 ans 9 mois #25566 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Problème de boucle
Affiche $FichierCSV[-1] et vérifie que tes valeurs sont correctes.

L'indice -1 représente la dernière valeur d'un tableau.

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.046 secondes
Propulsé par Kunena