Question powershell $Env variable et perl

Plus d'informations
il y a 12 ans 6 mois #15963 par Albert
Salut,

J'ai un problème combinant perl et powershell, donc peut etre que cela vous est déjà arrivé.
Enfaite j'ai un script de variable d'environnement en powershell qui contient simplement des set de variable :

[code:1]
$Env:ORACLE_HOME=\"C:\app\Baueiuh\product\11.2.0\dbhome_1\"
$Env:«»PATH=\"$Env:ORACLE_HOME\bin;$Env:«»PATH\"
...[/code:1]

Je veux éxecuter ce script pour avoir mes variables et les récupérer dans un script perl. J'arrive à executer le script depuis perl de cette manière :
[code:1]my $pwspath = \"c:\\windows\\system32\\windowspowershell\\v1.0\\powershell.exe\";
my $pathEnv = \".\\setvariable_test.ps1\";
system(\"$pwspath $pathEnv\"«»);
[/code:1]
Le script powershell s'éxecute bien mais quand j'essaye de récupérer les variable elles sont vides :
[code:1]my $ORA_HOME = $ENV{'ORACLE_HOME'};[/code:1]
Pourtant si je set les variables depuis ma console powershell à la main j'arrive bien à les récupérer dans perl, si j'éxecute le script powershell à la main et que j'essaye de les récupérer dans perl cela fonctionne également. Est ce que quelqu'un a déjà eu un problème de porté de ce genre ?<br><br>Message édité par: FlqX, à: 16/09/13 15:53

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

Plus d'informations
il y a 12 ans 6 mois #15964 par Laurent Dardenne
Salut,
concernant tes tests nous ne savons pas si tu exécutes Perl depuis la session PS.

Si tu exécutes ton script dans lequel tu crées des variable, leurs durée de vie est celle du process en cours. Il est donc normal de ne pas les retrouver dans le process appelant.
Il faut utiliser des API, mais je ne me souviens plus lesquelles :side:

Tutoriels PowerShell

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

Plus d'informations
il y a 12 ans 6 mois #15965 par Laurent Dardenne
Consulte ce code ou celui-ci . A toi de voir si cela peut t'aider, je n'ai pas testé si seul l'appelant peut être ciblé au lieu de tous les process.

Tutoriels PowerShell

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

Plus d'informations
il y a 12 ans 6 mois #15970 par Albert
Réponse de Albert sur le sujet Re:powershell $Env variable et perl
Je me doute que le problème vient de la portée, mais je trouve ça dommage pour des variables d'environnement... En général j'exécute ce script en utilisant \&quot;invoke-expression\&quot; dans mes autres scripts powershell. Mais la \&quot;system\&quot; de perl n'a pas l'air de me donner la même portée. Mon autre solution revient à utiliser le script d'env comme un fichier texte et de récupérer les infos à l'aide de regex dans perl, ça ne me plais pas vraiment mais c'est surement le moyen le plus simple ...
Je pense pas pouvoir réutiliser le code que tu m'as donné car je n'ai pas forcément de version 2 de powershell partout.
Merci.

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

Plus d'informations
il y a 12 ans 6 mois #15972 par Laurent Dardenne
Tu ne peux pas manipuler les variables d'environnement directement sous perl ?
Pourquoi passer par un script PS ?

Tutoriels PowerShell

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

Plus d'informations
il y a 12 ans 6 mois #15973 par Albert
Réponse de Albert sur le sujet Re:powershell $Env variable et perl
Si, je peux les manipuler avec perl mais lorsque je les set depuis le script powershell (lancé depuis le script perl) je n'arrive pas à les avoirs.
Je passe par un script PS pour set mes variables pour tout mes scripts (qui sont en PS) sauf que la j'ai une demande spécifique perl et dans un soucis d'automatisation je veux continuer d'utiliser ce script.

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

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