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 large écrit dans PowerShell.
Je lance 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 bien que JMP puisse 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 le 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?
ScriptingRe: Passer l'argument lors de l'exécution du script à partir de la ligne de commandeD'accord,
Je le fais de cette façon pour le moment:
'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 fonctionne
Re: Passer l'argument lors de l'exécution du script à partir de la ligne de commandemême idée, plus ou moins:
Arguments Jmp.exe
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 du script PowerShell.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 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);
Démarrage de startjmp depuis PS
Sortie de journal dans JMP:
Open Log();
myvar = Get Environment Variable("ScriptArg");
print(myvar);
/*:
"Hello from PowerShell"
Merci pour le ping @Craige_Hales