[RESOLU][PowerShell] Pb Impor-csv et recuperation en variable

Pb Impor-csv et recuperation en variable [RESOLU][PowerShell] - Shell/Batch - Programmation

Marsh Posté le 17-01-2014 à 10:37:27    

BOnjour
 
J'ai un soucis en Powershell
 
Pour l'eviter d'avoir a coder en dire des variables de serveure et mdp, pour passer des commandes reccurentes, j'ai voulu le faire via un fichier type csv.
(modification plus simple aussi a l'avenir si les infos changent)
 
Mon script me parait bon, mais il ne fonctionne pas.
en fait, c'est comme ci malgré l'importation avec import-csv marche, il ne stock pas les variables.
alors que si je passe les commandes une par une dans powershell, tout marche très bien.
 
mon fichier a la structure suivante :
env;srvaia;usraia;pwdaia;srvmed;usrmed;pwdmed
 
Voici quelques bout de mon code :

Code :
  1. $ficenv=".\env.txt"
  2. if (test-path $ficenv)
  3. {
  4.     write-host "DEBUG : `$tabenv=import-csv -path $ficenv -delimiter ';'"
  5.     $tabenv=import-csv -delimiter ";" $ficenv
  6.     write-host "DEBUG : Contenu `$tabenv : `n $tabenv"
  7. }
  8. else
  9. {
  10.     write-host "/!\ le fichier des environnement : $ficenv n'est pas présent"
  11.     exit 1
  12. }
  13. la y'a un choix d'environnement, puis un switch
  14.             $ENVE="QUA L1"
  15.             write-host "DEBUG : `$ENVE : $ENVE"
  16.             write-host "DEBUT : `$AIASRV=$tabenv | foreach ($_) { if ($_.env -eq `"$ENVE`" ) { $_.srvaia}}"
  17.             $AIASRV=$tabenv | foreach ($_) { if ($_.env -eq "$ENVE" ) { $_.srvaia}}
  18.             $AIAUSR=$tabenv | foreach ($_) { if ($_.env -eq "$ENVE" ) { $_.usraia}}
  19.             $AIAPWD=$tabenv | foreach ($_) { if ($_.env -eq "$ENVE" ) { $_.pwdaia}}
  20.             $MEDSRV=$tabenv | foreach ($_) { if ($_.env -eq "$ENVE" ) { $_.srvmed}}
  21.             $MEDUSR=$tabenv | foreach ($_) { if ($_.env -eq "$ENVE" ) { $_.usrmed}}
  22.             $MEDPWD=$tabenv | foreach ($_) { if ($_.env -eq "$ENVE" ) { $_.pwdmed}}


le script ps1 et le fichier env.txt sont dans le meme dossier.
les variables me servent a lancer des commandes via plink et pscp (putty)
 
Le premier write-host "DEBUG : Contenu `$tabenv : `n $tabenv" ne m'affiche rien, et du coup, les debug suivant, les variables $AIAxxx et $MEDxxx sont vide.
 
c'est d'autant plus perturbant qu'en tapant tout à la mano, ca marche très bien.
pour les lignes suivantes : $tabenv | foreach ($_) { if ($_.env -eq "$ENVE" ) { $_.pwdmed}}
J'ai essayer avec le code suivant : $tabenv | where ($_.env -eq "$ENVE" ) | select srvaia | format-table -HideTableHeaders, mais pareil, les variables sont vide.
 
Pouvez vous me dire ce qui cloche ?
 
Merci de votre aide.


Message édité par chico008 le 17-01-2014 à 16:47:42

---------------
Serveur HFR - OpenTTD
Reply

Marsh Posté le 17-01-2014 à 10:37:27   

Reply

Marsh Posté le 17-01-2014 à 16:46:59    

Au final, c'est pas l'import-csv qui merdait, mais le foreach.
en codant comme ceci, ca fonctionne beaucoup mieux
 

Code :
  1. foreach ($elem in $tabenv)
  2.             {
  3.                 if ($elem.env -eq "$ENVE" )
  4.                 {
  5.                     $AIASRV=$elem.srvaia
  6.                     $AIAUSR=$elem.usraia
  7.                     $AIAPWD=$elem.pwdaia
  8.                     $MEDSRV=$elem.srvmed
  9.                     $MEDUSR=$elem.usrmed
  10.                     $MEDPWD=$elem.pwdmed
  11.                 }
  12.             }


la ligne $tabenv=import-csv ... ne change pas


---------------
Serveur HFR - OpenTTD
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed