從命令列運行腳本時傳遞參數我有一個 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");