Passer l'argument lors de l'exécution du script à partir de la ligne de commandeJ'ai un script JMP qui s'exécute dans le cadre d'un script plus vaste écrit en PowerShell.
Je démarre le script JMP en utilisant
Start-Process -FilePath $JMP_path -ArgumentList ("`""+$JMPScriptPath+"`"") -WaitJe voudrais passer un argument supplémentaire à un script - juste une chaîne de texte.
Comment je fais ça?
J'ai simplement essayé de l'écrire dans une variable environnementale, mais même si JMP peut le lire très bien lorsqu'il s'exécute de manière autonome, il ne peut pas le lire lorsque JMP démarre à partir de PowersShell. Je voudrais également éviter d'écrire cette chaîne dans un fichier à partir du script Powershell uniquement pour la lire à partir du script JSL. Peut-être existe-t-il un moyen de transmettre cette chaîne au script ? Ou peut-être devrais-je utiliser Start-Process d'une manière différente pour que JMP puisse lire la variable Environmenta ?
Automatisation et scriptsRe : Passer l'argument lors de l'exécution du script à partir de la ligne de commandeEn fait, je l'ai configuré comme ceci :
[System.Environment]::SetEnvironmentVariable('scriptArg', 'Hello From PowerShell', 'User')...seulement parce que d'après ce que je comprends, lorsque vous le configurez comme ceci :
$Env:ScriptArg = "Hello from PowerShell";
il ne persiste pas au-delà de la session PowerShell, et lorsque je le testais en regardant via les outils Windows, j'obtenais un comportement étrange. Cependant, je n'en ai même pas besoin pour persister au-delà de la session - au sein de la session, c'est parfaitement bien, donc je reviendrai probablement à votre (et à ma première) option, maintenant que je l'ai testée à nouveau.
Merci!
Re : Passer l'argument lors de l'exécution du script à partir de la ligne de commandePouvez-vous nous montrer comment vous définissez la variable d'environnement ?
Cela fonctionne pour moi:
startjmp.ps1 :
$JMP_Path = "C:\Program Files\SAS\JMPPRO\15\jmp.exe"
$JMPScriptPath = "C:\util\test.jsl";
$Env:ScriptArg = "Hello from PowerShell";
Start-Process -FilePath $JMP_Path -ArgumentList ("`""+$JMPScriptPath+"`"") -Wait
test.jsl :
Open Log();
myvar = Get Environment Variable("ScriptArg");
print(myvar);
Lancement de startjmp depuis PS
Sortie du journal dans JMP :
Open Log();
myvar = Get Environment Variable("ScriptArg");
print(myvar);
/*:
"Hello from PowerShell"
Merci pour le ping @Craige_Hales
Re : Passer l'argument lors de l'exécution du script à partir de la ligne de commande@jschroedl
Re : Passer l'argument lors de l'exécution du script à partir de la ligne de commandeOuais, j'ai vu ce post. Comme je l'ai dit, JMP, pour une raison quelconque, ne peut pas lire la variable d'environnement lorsqu'il est lancé à partir d'un script PowerShell.Re : Passer l'argument lors de l'exécution du script à partir de la ligne de commandemême idée, plus ou moins :
Arguments de Jmp.exe
Re : Passer l'argument lors de l'exécution du script à partir de la ligne de commandeD'accord,
Je procède ainsi pour l'instant :
'myVariable = "{0}";' -f $variableToPassToJMP | Out-File "./paths.jsl"
Start-Process -FilePath $JMP_path -ArgumentList ("`""+$JMPScriptPath+"`"") -Wait
Remove-Item -Path "./paths.jsl" -Force -Confirm:$falsePas très élégant, mais ça marche
Mise à jour : Oh, dans le script JSL lui-même, je fais juste ceci :
Include("paths.jsl");