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