Question
[Résolu] Problème de boucle
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 7 ans 9 mois #25587
par Philippe
Réponse de Philippe sur le sujet Re:Problème de boucle
après quelques essais j'ai réussi à avoir le même problème que toi
et j'ai donc compris pourquoi
je sais pas comment tu crée ton fichier CSV mais il manque des délimiteurs à la fin de la ligne
dans le standard CSV il faut au minimum que les délimiteurs soit present même si il n'y a pas de valeur
donc
- soit tu corrige le problème à la source (la création du CSV)
- soit si c'est pas possible de changer la création, tu utilise le code suivant :
[code:1]if ($PPPOE_USERNAME -ne \"\" -and $PPPOE_USERNAME -ne $null) {[/code:1]mais sans garantie de fonctionnement dans toutes les situations d'un mauvais fichier CSV<br><br>Message édité par: 6ratgus, à: 8/06/18 14:44
je sais pas comment tu crée ton fichier CSV mais il manque des délimiteurs à la fin de la ligne
dans le standard CSV il faut au minimum que les délimiteurs soit present même si il n'y a pas de valeur
donc
- soit tu corrige le problème à la source (la création du CSV)
- soit si c'est pas possible de changer la création, tu utilise le code suivant :
[code:1]if ($PPPOE_USERNAME -ne \"\" -and $PPPOE_USERNAME -ne $null) {[/code:1]mais sans garantie de fonctionnement dans toutes les situations d'un mauvais fichier CSV<br><br>Message édité par: 6ratgus, à: 8/06/18 14:44
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 #25588
par Corentin
Réponse de Corentin sur le sujet Re:Problème de boucle
J'ai changé le délimiteur de \",\" à \";\" et insérer comme vous avez conseillé \"-and $PPPOE_USERNAME -ne $null\"
et ça fonctionne!
Merci à toi
<br><br>Message édité par: Corentin, à: 8/06/18 14:53
et ça fonctionne!
Merci à toi
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 #25595
par Corentin
Réponse de Corentin sur le sujet Re:Problème de boucle
J'essaie maintenant d'améliorer la lisibilité du code et d'enlever toutes choses inutiles, j'en suis arrivé ici : [code:1]$FichierCSV = Import-Csv -Path \"C:\Users\Corentin.FOURRIER\Documents\ecoles1.csv\" -Delimiter \";\"
$CompteurFichierPPPOE=0
$CompteurFichierFO=0
$compteur=0
$FichierCSV | where {$_.NOM_ECOLE -ne \"\"} | foreach {
$ligne = $_
if ($ligne.PPPOE_USERNAME -ne \"\" -and $ligne.PPPOE_USERNAME -ne $null){
$Modele = Get-Content \"C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.ADDR-MAC-MODELE-PPPOE.clish\"
$CompteurFichierPPPOE++
}
else {
$Modele = Get-Content \"C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.ADDR-MAC-MODELE-FO.clish\"
$CompteurFichierFO++
}
$Modele -replace \"<NOM_ECOLE>\", $ligne.NOM_ECOLE -replace \"<ADDR_FW_LAN>\", $ligne.ADDR_FW_LAN -replace \"<ADDR_POOL_DHCP_LAN>\", $ligne.ADDR_POOL_DHCP_LAN -replace \"<ADDR_FW_WAN>\", $ligne.ADDR_FW_WAN -replace \"<ADDR_MASK_WAN>\", $ligne.ADDR_MASK_WAN -replace \"<ADDR_GW_WAN>\", $ligne.ADDR_GW_WAN -replace \"<MAC_FW>\", $ligne.MAC_FW -replace \"<PPPOE_USERNAME>\", $ligne.PPPOE_USERNAME -replace \"<PPPOE_PASSWORD>\", $ligne.PPPOE_PASSWORD
Set-Content -Path \"C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.$($_.MAC_FW).clish\" -Value $Modele
$compteur++
}
echo \"Le programme a généré $compteur fichiers avec succés\"
echo \"$CompteurFichierPPPOE fichiers PPPOE et $CompteurFichierFO fichiers FO\"[/code:1]
(J'ai laissé $ligne = $_ exprès je sais qu'il est inutile)
Le programme me renvoie touts les fichiers avec les bon remplacement comme il faut dans l'écran de sortie, mais le replace ne s'effectue pas sur les fichiers générés, des idées ?<br><br>Message édité par: Corentin, à: 11/06/18 15:21
$CompteurFichierPPPOE=0
$CompteurFichierFO=0
$compteur=0
$FichierCSV | where {$_.NOM_ECOLE -ne \"\"} | foreach {
$ligne = $_
if ($ligne.PPPOE_USERNAME -ne \"\" -and $ligne.PPPOE_USERNAME -ne $null){
$Modele = Get-Content \"C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.ADDR-MAC-MODELE-PPPOE.clish\"
$CompteurFichierPPPOE++
}
else {
$Modele = Get-Content \"C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.ADDR-MAC-MODELE-FO.clish\"
$CompteurFichierFO++
}
$Modele -replace \"<NOM_ECOLE>\", $ligne.NOM_ECOLE -replace \"<ADDR_FW_LAN>\", $ligne.ADDR_FW_LAN -replace \"<ADDR_POOL_DHCP_LAN>\", $ligne.ADDR_POOL_DHCP_LAN -replace \"<ADDR_FW_WAN>\", $ligne.ADDR_FW_WAN -replace \"<ADDR_MASK_WAN>\", $ligne.ADDR_MASK_WAN -replace \"<ADDR_GW_WAN>\", $ligne.ADDR_GW_WAN -replace \"<MAC_FW>\", $ligne.MAC_FW -replace \"<PPPOE_USERNAME>\", $ligne.PPPOE_USERNAME -replace \"<PPPOE_PASSWORD>\", $ligne.PPPOE_PASSWORD
Set-Content -Path \"C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.$($_.MAC_FW).clish\" -Value $Modele
$compteur++
}
echo \"Le programme a généré $compteur fichiers avec succés\"
echo \"$CompteurFichierPPPOE fichiers PPPOE et $CompteurFichierFO fichiers FO\"[/code:1]
(J'ai laissé $ligne = $_ exprès je sais qu'il est inutile)
Le programme me renvoie touts les fichiers avec les bon remplacement comme il faut dans l'écran de sortie, mais le replace ne s'effectue pas sur les fichiers générés, des idées ?<br><br>Message édité par: Corentin, à: 11/06/18 15:21
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 9 mois #25597
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
Bonjour à tous les 2,
Pour moi le fichier n'est absolument pas un fichier CSV. Tu devrais plutôt utiliser la commande Get-Content au lieu d'Import-CSV.
Arnaud
Pour moi le fichier n'est absolument pas un fichier CSV. Tu devrais plutôt utiliser la commande Get-Content au lieu d'Import-CSV.
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.
- 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 #25598
par Corentin
Réponse de Corentin sur le sujet Re:Problème de boucle
Type de mon fichier je cite \"Fichier CSV Microsoft Excel\"
Ensuite j'ai essayer le Get-Content à la place du Import CSV et ça génère de nouvelles erreurs donc bon..
Ensuite j'ai essayer le Get-Content à la place du Import CSV et ça génère de nouvelles erreurs donc bon..
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 9 mois #25600
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
Bon, fait comme tu veux, c'est pas grave 
Il faut juste savoir qu'un fichier CSV valide possède une ligne d'entête, et un séparateur de champs entre les données.
Ce n'est pas parce que c'est exporté avec Excel que c'est forcément bon
.
Une bonne façon de voir si l'import a bien fonctionné est d'afficher ta variable $FichierCSV directement dans la console PowerShell et voir si l'affichage se fait bien dans un format de type Table.
Arnaud
Il faut juste savoir qu'un fichier CSV valide possède une ligne d'entête, et un séparateur de champs entre les données.
Ce n'est pas parce que c'est exporté avec Excel que c'est forcément bon
Une bonne façon de voir si l'import a bien fonctionné est d'afficher ta variable $FichierCSV directement dans la console PowerShell et voir si l'affichage se fait bien dans un format de type Table.
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.
Temps de génération de la page : 0.050 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Problème de boucle