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 :
 - $ficenv=".\env.txt"
 - if (test-path $ficenv)
 - {
 -     write-host "DEBUG : `$tabenv=import-csv -path $ficenv -delimiter ';'"
 -     $tabenv=import-csv -delimiter ";" $ficenv
 -     write-host "DEBUG : Contenu `$tabenv : `n $tabenv"
 - }
 - else
 - {
 -     write-host "/!\ le fichier des environnement : $ficenv n'est pas présent"
 -     exit 1
 - }
 - la y'a un choix d'environnement, puis un switch
 -             $ENVE="QUA L1"
 -             write-host "DEBUG : `$ENVE : $ENVE"
 -             write-host "DEBUT : `$AIASRV=$tabenv | foreach ($_) { if ($_.env -eq `"$ENVE`" ) { $_.srvaia}}"
 -             $AIASRV=$tabenv | foreach ($_) { if ($_.env -eq "$ENVE" ) { $_.srvaia}}
 -             $AIAUSR=$tabenv | foreach ($_) { if ($_.env -eq "$ENVE" ) { $_.usraia}}
 -             $AIAPWD=$tabenv | foreach ($_) { if ($_.env -eq "$ENVE" ) { $_.pwdaia}}
 -             $MEDSRV=$tabenv | foreach ($_) { if ($_.env -eq "$ENVE" ) { $_.srvmed}}
 -             $MEDUSR=$tabenv | foreach ($_) { if ($_.env -eq "$ENVE" ) { $_.usrmed}}
 -             $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