Passa argomento durante l'esecuzione dello script dalla riga di comandoHo uno script JMP che viene eseguito come parte di uno script più grande scritto in PowerShell.
Avvio lo script JMP usando
Start-Process -FilePath $JMP_path -ArgumentList ("`""+$JMPScriptPath+"`"") -WaitVorrei passare un argomento aggiuntivo a uno script, solo una stringa di testo.
Come lo faccio?
Ho provato a scriverlo semplicemente in una variabile ambientale, ma mentre JMP può leggerlo bene quando viene eseguito come standalone, non può leggerlo quando JMP viene avviato da PowersShell. Vorrei anche evitare di scrivere questa stringa in un file dallo script Powershell solo per leggerla dallo script JSL. Forse c'è un modo per passare quella stringa allo script? O forse dovrei usare Start-Process in un modo diverso in modo che JMP possa leggere la variabile Environmenta?
ScriptingOggetto: Passa argomento durante l'esecuzione di script dalla riga di comandoOk,
Lo sto facendo in questo modo per ora:
'myVariable = "{0}";' -f $variableToPassToJMP | Out-File "./paths.jsl"
Start-Process -FilePath $JMP_path -ArgumentList ("`""+$JMPScriptPath+"`"") -Wait
Remove-Item -Path "./paths.jsl" -Force -Confirm:$falseNon molto elegante, ma funziona
Oggetto: Passa argomento durante l'esecuzione di script dalla riga di comandostessa idea, più o meno:
Argomenti Jmp.exe
Oggetto: Passa argomento durante l'esecuzione di script dalla riga di comandoSì, ho visto quel post. Come ho detto, JMP per qualche motivo non può leggere la variabile ambientale quando viene avviato dallo script PowerShell.Oggetto: Passa argomento durante l'esecuzione di script dalla riga di comando@jschroedl
Oggetto: Passa argomento durante l'esecuzione di script dalla riga di comandoPuoi mostrarci come stai impostando la variabile d'ambiente?
Questo funziona per me:
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);
Avviato startjmp da PS
Log output in JMP:
Open Log();
myvar = Get Environment Variable("ScriptArg");
print(myvar);
/*:
"Hello from PowerShell"
Grazie per il ping @Craige_Hales