Ich habe ein JMP-Skript, das als Teil eines größeren Skripts ausgeführt wird, das in PowerShell geschrieben wurde.
Ich starte das JMP-Skript mit
Start-Process -FilePath $JMP_path -ArgumentList ("`""+$JMPScriptPath+"`"") -WaitIch möchte einem Skript ein zusätzliches Argument übergeben - nur eine Textzeichenfolge.
Wie mache ich das?
Ich habe versucht, es einfach in eine Umgebungsvariable zu schreiben, aber während JMP es gut lesen kann, wenn es als Standalone ausgeführt wird, kann es es nicht lesen, wenn JMP in PowersShell gestartet wird. Ich möchte auch vermeiden, diese Zeichenfolge aus dem Powershell-Skript in eine Datei zu schreiben, nur um sie aus dem JSL-Skript zu lesen. Vielleicht gibt es eine Möglichkeit, diese Zeichenfolge an das Skript zu übergeben? Oder sollte ich Start-Process anders verwenden, damit JMP die Umgebungsvariable lesen kann?
OK,
Ich mache es jetzt so:
'myVariable = "{0}";' -f $variableToPassToJMP | Out-File "./paths.jsl"
Start-Process -FilePath $JMP_path -ArgumentList ("`""+$JMPScriptPath+"`"") -Wait
Remove-Item -Path "./paths.jsl" -Force -Confirm:$falseNicht sehr elegant, funktioniert aber
gleiche Idee, mehr oder weniger:
Jmp.exe Argumente
Können Sie uns zeigen, wie Sie die Umgebungsvariable einstellen?
Das funktioniert bei mir:
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);
Startjmp von PS gestartet
Protokollausgabe in JMP:
Open Log();
myvar = Get Environment Variable("ScriptArg");
print(myvar);
/*:
"Hello from PowerShell"
Danke für den Ping @Craige_Hales