Question [Résolu] Problème de boucle

Plus d'informations
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

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

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

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

$FichierCSV | ForEach {$_.MAC_FW = $_.MAC_FW.replace(\&quot;:\&quot;,\&quot;-\&quot;«»)}
$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++
}

ForEach-Object {
$FichierModifié = $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 $FichierModifié
$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]

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

Temps de génération de la page : 0.034 secondes
Propulsé par Kunena