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 #25611
par Corentin
Réponse de Corentin sur le sujet Re:Problème de boucle
Pratique ce Get-Member effectivement merci ça me resservira plus tard!
Du coup je vous réexplique mon problème.
J'ai ce code qui fonctionne :
[code:1]$FichierCSV = Import-Csv -Path \"C:\Users\Corentin.FOURRIER\Documents\ecoles1.csv\" -Delimiter \";\"
$CompteurFichierPPPOE=0
$CompteurFichierFO=0
$compteur=0
$FichierCSV | ForEach {$_.MAC_FW = $_.MAC_FW.replace(\":\",\"-\"«»)}
$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\" | foreach {
$_ -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.$($ligne.MAC_FW).clish\" -Value $Modele
$CompteurFichierPPPOE++
}
else {
$Modele = Get-Content \"C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.ADDR-MAC-MODELE-FO.clish\" | foreach {
$_ -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 }
Set-Content -Path \"C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.$($ligne.MAC_FW).clish\" -Value $Modele
$CompteurFichierFO++
}
$compteur++
}
echo \"Le programme a généré $compteur fichiers avec succés\"
echo \"$CompteurFichierPPPOE fichiers PPPOE et $CompteurFichierFO fichiers FO\"[/code:1]
Seulement pour l'optimiser j'aimerais qu'il y est une seule ligne de -replace (pour que se soit plus simple pour les futurs utilisateurs si ils doivent modifier le code.)
Pour cela j'ai essayé ce code :
[code:1]$FichierCSV = Import-Csv -Path \"C:\Users\Corentin.FOURRIER\Documents\ecoles1.csv\" -Delimiter \";\"
$CompteurFichierPPPOE=0
$CompteurFichierFO=0
$compteur=0
$FichierCSV | ForEach {$_.MAC_FW = $_.MAC_FW.replace(\":\",\"-\"«»)}
$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++
}
ForEach-Object {
$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]
Il ne fonctionnne pas, l'intérieur des fichiers générés sont pareils que les modèles, aucun remplacement d'effectué quoi en gros.<br><br>Message édité par: Corentin, à: 12/06/18 10:32
Du coup je vous réexplique mon problème.
J'ai ce code qui fonctionne :
[code:1]$FichierCSV = Import-Csv -Path \"C:\Users\Corentin.FOURRIER\Documents\ecoles1.csv\" -Delimiter \";\"
$CompteurFichierPPPOE=0
$CompteurFichierFO=0
$compteur=0
$FichierCSV | ForEach {$_.MAC_FW = $_.MAC_FW.replace(\":\",\"-\"«»)}
$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\" | foreach {
$_ -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.$($ligne.MAC_FW).clish\" -Value $Modele
$CompteurFichierPPPOE++
}
else {
$Modele = Get-Content \"C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.ADDR-MAC-MODELE-FO.clish\" | foreach {
$_ -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 }
Set-Content -Path \"C:\Users\Corentin.FOURRIER\Documents\USB_V2\autoconf.$($ligne.MAC_FW).clish\" -Value $Modele
$CompteurFichierFO++
}
$compteur++
}
echo \"Le programme a généré $compteur fichiers avec succés\"
echo \"$CompteurFichierPPPOE fichiers PPPOE et $CompteurFichierFO fichiers FO\"[/code:1]
Seulement pour l'optimiser j'aimerais qu'il y est une seule ligne de -replace (pour que se soit plus simple pour les futurs utilisateurs si ils doivent modifier le code.)
Pour cela j'ai essayé ce code :
[code:1]$FichierCSV = Import-Csv -Path \"C:\Users\Corentin.FOURRIER\Documents\ecoles1.csv\" -Delimiter \";\"
$CompteurFichierPPPOE=0
$CompteurFichierFO=0
$compteur=0
$FichierCSV | ForEach {$_.MAC_FW = $_.MAC_FW.replace(\":\",\"-\"«»)}
$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++
}
ForEach-Object {
$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]
Il ne fonctionnne pas, l'intérieur des fichiers générés sont pareils que les modèles, aucun remplacement d'effectué quoi en gros.<br><br>Message édité par: Corentin, à: 12/06/18 10:32
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 #25614
par Corentin
Réponse de Corentin sur le sujet Re:Problème de boucle
Problème résolu je vous partage mon code pour ceux que ça peut aider 
[code:1]$FichierCSV = Import-Csv -Path \"C:\Users\Corentin.FOURRIER\Documents\ecoles1.csv\" -Delimiter \";\"
$CompteurFichierPPPOE=0
$CompteurFichierFO=0
$compteur=0
$FichierCSV | ForEach {$_.MAC_FW = $_.MAC_FW.replace(\":\",\"-\"«»)}
$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++
}
ForEach-Object {
$FichierModifié = $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 $FichierModifié
$compteur++
}
echo \"Le programme a généré $compteur fichiers avec succés\"
echo \"$CompteurFichierPPPOE fichiers PPPOE et $CompteurFichierFO fichiers FO\"[/code:1]
[code:1]$FichierCSV = Import-Csv -Path \"C:\Users\Corentin.FOURRIER\Documents\ecoles1.csv\" -Delimiter \";\"
$CompteurFichierPPPOE=0
$CompteurFichierFO=0
$compteur=0
$FichierCSV | ForEach {$_.MAC_FW = $_.MAC_FW.replace(\":\",\"-\"«»)}
$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++
}
ForEach-Object {
$FichierModifié = $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 $FichierModifié
$compteur++
}
echo \"Le programme a généré $compteur fichiers avec succés\"
echo \"$CompteurFichierPPPOE fichiers PPPOE et $CompteurFichierFO fichiers FO\"[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.035 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Problème de boucle