Question
[Résolu] Problème de boucle
- Corentin
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 7 ans 9 mois #25567
par Corentin
Réponse de Corentin sur le sujet Re:Problème de boucle
réponse du dessus édité ^^
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 9 mois #25568
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Problème de boucle
Il n'y a pas de souci de dernière ligne avec les fichiers CSV en PowerShell. Le souci doit venir obligatoirement de ton fichier.
Pour moi il n'y a pas lieu d'insérer une ligne vide à la fin de ton fichier CSV.
Que contenait [code:1] $FichierCSV[-1][/code:1] ?
Pour moi il n'y a pas lieu d'insérer une ligne vide à la fin de ton fichier CSV.
Que contenait [code:1] $FichierCSV[-1][/code:1] ?
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.
- Corentin
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 7 ans 9 mois #25569
par Corentin
Réponse de Corentin sur le sujet Re:Problème de boucle
NOM_ECOLE : EE_Louvois
ADDR_FW_LAN : 192.168.10.22
ADDR_POOL_DHCP_LAN : 192.168.31.1-192.168.31.2
ADDR_FW_WAN : 192.168.10.22
ADDR_MASK_WAN : 255.255.255.0
ADDR_GW_WAN : 192.168.10.22
MAC_FW : 00-1C-7F-7E-01-23
PPPOE_USERNAME :
PPPOE_PASSWORD :
ADDR_FW_LAN : 192.168.10.22
ADDR_POOL_DHCP_LAN : 192.168.31.1-192.168.31.2
ADDR_FW_WAN : 192.168.10.22
ADDR_MASK_WAN : 255.255.255.0
ADDR_GW_WAN : 192.168.10.22
MAC_FW : 00-1C-7F-7E-01-23
PPPOE_USERNAME :
PPPOE_PASSWORD :
Connexion ou Créer un compte pour participer à la conversation.
- Corentin
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 7 ans 9 mois #25575
par Corentin
Réponse de Corentin sur le sujet Re:Problème de boucle
En fait le programme me génère un fichier pour chaque ligne, même si elles sont vides mais par contre avec une seule ligne vide le programme fonctionne, il faudrait donc modifier la boucle non ? j'ai essayé [code:1]($PPPOE_USERNAME -ne \"\" -and $Ligne -ne \"\"«»)[/code:1]
mais ça ne marche pas non plus :/
mais ça ne marche pas non plus :/
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 7 ans 9 mois #25577
par Philippe
Réponse de Philippe sur le sujet Re:Problème de boucle
salut Arnaud et correntin
carrentin je vais te faire la même remarque de l'autre jour, ton do/until est inutile dans ton script
après tu peut filtrer les lignes vides de plusieurs façons avec un if, un where voir un switch !!
je te donne la solution avec le where :
[code:1]$FichierCSV = Import-Csv -Path \"C:\Users\Corentin.FOURRIER\Documents\ecoles1.csv\" -Delimiter \",\"
$compteur = 0
$FichierCSV | where {$_ -ne $null -and $_ -ne \"\" -and $_.NOM_ECOLE -ne \"\"} | foreach {
$ligne = $_
$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++
}
#echo $contentPPPOE
#echo $contentFO
echo \"Le programme a généré $compteur fichiers avec succés\"
[/code:1]
carrentin je vais te faire la même remarque de l'autre jour, ton do/until est inutile dans ton script
après tu peut filtrer les lignes vides de plusieurs façons avec un if, un where voir un switch !!
je te donne la solution avec le where :
[code:1]$FichierCSV = Import-Csv -Path \"C:\Users\Corentin.FOURRIER\Documents\ecoles1.csv\" -Delimiter \",\"
$compteur = 0
$FichierCSV | where {$_ -ne $null -and $_ -ne \"\" -and $_.NOM_ECOLE -ne \"\"} | foreach {
$ligne = $_
$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++
}
#echo $contentPPPOE
#echo $contentFO
echo \"Le programme a généré $compteur fichiers avec succés\"
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Corentin
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 7 ans 9 mois #25579
par Corentin
Réponse de Corentin sur le sujet Re:Problème de boucle
Bonjour 6ratgus,
Merci pour cette solution ça règle une partie de mon problème sans rajouter de ligne c'est parfait !
Le problème est réglé quant au fait que il y a beau avoir 10 lignes vides à la fin, ça ne générera pas de fichiers pour autant, cependant il y a toujours ce problème de dernière ligne, je m'explique,
mon fichier contient 23 lignes,
voici la 23ème ligne en question :
[code:1]EE_Louvois,192.168.10.22,192.168.31.1-192.168.31.2,192.168.10.22,255.255.255.0,192.168.10.22,00-1C-7F-7E-01-23,[/code:1]
comparé à cette ligne :
[code:1]EE_Gen.Carre,192.168.10.21,192.168.30.1-192.168.30.2,192.168.10.21,255.255.255.0,192.168.10.21,00-1C-7F-7E-01-22,ldp/46310,TQVDUI,[/code:1]
Vous voyez bien qu'il n'y a pas de donnée dans PPPOE_Username et pourtant le programme considère que si.
Merci pour cette solution ça règle une partie de mon problème sans rajouter de ligne c'est parfait !
Le problème est réglé quant au fait que il y a beau avoir 10 lignes vides à la fin, ça ne générera pas de fichiers pour autant, cependant il y a toujours ce problème de dernière ligne, je m'explique,
mon fichier contient 23 lignes,
voici la 23ème ligne en question :
[code:1]EE_Louvois,192.168.10.22,192.168.31.1-192.168.31.2,192.168.10.22,255.255.255.0,192.168.10.22,00-1C-7F-7E-01-23,[/code:1]
comparé à cette ligne :
[code:1]EE_Gen.Carre,192.168.10.21,192.168.30.1-192.168.30.2,192.168.10.21,255.255.255.0,192.168.10.21,00-1C-7F-7E-01-22,ldp/46310,TQVDUI,[/code:1]
Vous voyez bien qu'il n'y a pas de donnée dans PPPOE_Username et pourtant le programme considère que si.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.049 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Problème de boucle