从命令行运行脚本时传递参数我有一个 JMP 脚本,它作为用 PowerShell 编写的较大脚本的一部分运行。
我使用以下命令启动 JMP 脚本
Start-Process -FilePath $JMP_path -ArgumentList ("`""+$JMPScriptPath+"`"") -Wait我想向脚本传递一个附加参数 - 只是一个文本字符串。
我怎么做?
我尝试将其写入环境变量,但是虽然 JMP 在独立运行时可以很好地读取它,但当 JMP 从 PowersShell 内启动时,它无法读取它。 我还想避免从 Powershell 脚本将此字符串写入文件中,而只是从 JSL 脚本中读取它。 也许有办法将该字符串传递给脚本? 或者也许我应该以不同的方式使用 Start-Process 以便 JMP 可以读取环境变量?
自动化和脚本编写回复:从命令行运行脚本时传递参数我实际上是这样设置的:
[System.Environment]::SetEnvironmentVariable('scriptArg', 'Hello From PowerShell', 'User')...只是因为据我了解,当你这样设置时:
$Env:ScriptArg = "Hello from PowerShell";
它不会在 powershell 会话之外持续存在,当我通过 Windows 工具查看它时,我遇到了一些奇怪的行为。 但是,我什至不需要它在会话之外持续存在 - 在会话内完全没问题,所以我可能会回到您的(和我最初的)选项,现在我再次测试了它。
谢谢!
回复:从命令行运行脚本时传递参数您能向我们展示您如何设置环境变量吗?
这对我有用:
开始jmp.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
测试.jsl:
Open Log();
myvar = Get Environment Variable("ScriptArg");
print(myvar);
从 PS 启动 startjmp
JMP 中的日志输出:
Open Log();
myvar = Get Environment Variable("ScriptArg");
print(myvar);
/*:
"Hello from PowerShell"
谢谢你的平@Craige_Hales
回复:从命令行运行脚本时传递参数@jschroedl
回复:从命令行运行脚本时传递参数是的,我看到了那个帖子。 正如我所说,从 powershell 脚本启动时,JMP 由于某种原因无法读取环境变量。回复:从命令行运行脚本时传递参数或多或少相同的想法:
Jmp.exe 参数
回复:从命令行运行脚本时传递参数好的,
我现在这样做:
'myVariable = "{0}";' -f $variableToPassToJMP | Out-File "./paths.jsl"
Start-Process -FilePath $JMP_path -ArgumentList ("`""+$JMPScriptPath+"`"") -Wait
Remove-Item -Path "./paths.jsl" -Force -Confirm:$false不是很优雅,但很有效
更新: 哦,在 JSL 脚本本身中我只是这样做:
Include("paths.jsl");