Question [Résolu] Problème de boucle

Plus d'informations
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 B) 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 \&quot;\&quot; -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.

Plus d'informations
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 \&quot;,\&quot; à \&quot;;\&quot; et insérer comme vous avez conseillé \&quot;-and $PPPOE_USERNAME -ne $null\&quot;
et ça fonctionne!
Merci à toi ;)<br><br>Message édité par: Corentin, à: 8/06/18 14:53

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

Plus d'informations
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 \&quot;C:\Users\Corentin.FOURRIER\Documents\ecoles1.csv\&quot; -Delimiter \&quot;;\&quot;

$CompteurFichierPPPOE=0
$CompteurFichierFO=0
$compteur=0

$FichierCSV | where {$_.NOM_ECOLE -ne \&quot;\&quot;} | foreach {

$ligne = $_

if ($ligne.PPPOE_USERNAME -ne \&quot;\&quot; -and $ligne.PPPOE_USERNAME -ne $null){
$Modele = Get-Content \&quot;C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.ADDR-MAC-MODELE-PPPOE.clish\&quot;
$CompteurFichierPPPOE++
}
else {
$Modele = Get-Content \&quot;C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.ADDR-MAC-MODELE-FO.clish\&quot;
$CompteurFichierFO++
}
$Modele -replace \&quot;&lt;NOM_ECOLE&gt;\&quot;, $ligne.NOM_ECOLE -replace \&quot;&lt;ADDR_FW_LAN&gt;\&quot;, $ligne.ADDR_FW_LAN -replace \&quot;&lt;ADDR_POOL_DHCP_LAN&gt;\&quot;, $ligne.ADDR_POOL_DHCP_LAN -replace \&quot;&lt;ADDR_FW_WAN&gt;\&quot;, $ligne.ADDR_FW_WAN -replace \&quot;&lt;ADDR_MASK_WAN&gt;\&quot;, $ligne.ADDR_MASK_WAN -replace \&quot;&lt;ADDR_GW_WAN&gt;\&quot;, $ligne.ADDR_GW_WAN -replace \&quot;&lt;MAC_FW&gt;\&quot;, $ligne.MAC_FW -replace \&quot;&lt;PPPOE_USERNAME&gt;\&quot;, $ligne.PPPOE_USERNAME -replace \&quot;&lt;PPPOE_PASSWORD&gt;\&quot;, $ligne.PPPOE_PASSWORD
Set-Content -Path \&quot;C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.$($_.MAC_FW).clish\&quot; -Value $Modele
$compteur++
}

echo \&quot;Le programme a généré $compteur fichiers avec succés\&quot;
echo \&quot;$CompteurFichierPPPOE fichiers PPPOE et $CompteurFichierFO fichiers FO\&quot;[/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.

Plus d'informations
il y a 7 ans 9 mois #25597 par Arnaud Petitjean
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

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 #25598 par Corentin
Réponse de Corentin sur le sujet Re:Problème de boucle
Type de mon fichier je cite \&quot;Fichier CSV Microsoft Excel\&quot;
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.

Plus d'informations
il y a 7 ans 9 mois #25600 par Arnaud Petitjean
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

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