コマンドラインからスクリプトを実行するときに引数を渡しますPowerShell で書かれたより大きなスクリプトの一部として実行される JMP スクリプトがあります。
次を使用して JMP スクリプトを開始します
Start-Process -FilePath $JMP_path -ArgumentList ("`""+$JMPScriptPath+"`"") -Waitスクリプトに追加の引数 (単なるテキスト文字列) を渡したいと考えています。
それ、どうやったら出来るの?
これを環境変数に書き込んでみましたが、JMP がスタンドアロンで実行されている場合は問題なく読み取ることができますが、PowersShell 内から JMP を起動すると読み取ることができません。 また、JSL スクリプトから読み取るためだけにこの文字列を Powershell スクリプトからファイルに書き込むことも避けたいと考えています。 おそらくその文字列をスクリプトに渡す方法はあるでしょうか? それとも、JMP が環境変数を読み取れるように、別の方法で Start-Process を使用する必要があるでしょうか?
自動化とスクリプト作成Re: コマンドラインからスクリプトを実行するときに引数を渡す実際にこんな感じで設定してみました。
[System.Environment]::SetEnvironmentVariable('scriptArg', 'Hello From PowerShell', 'User')...私が理解している限り、次のように設定した場合のみです。
$Env:ScriptArg = "Hello from PowerShell";
これは PowerShell セッションを超えて持続することはなく、Windows ツールを使用してテストしていたときに、奇妙な動作が発生していました。 ただし、セッションを超えて保持する必要さえありません。セッション内はまったく問題ありません。そのため、もう一度テストしたので、おそらくあなたの(そして私の最初の)オプションに戻るでしょう。
ありがとう!
Re: コマンドラインからスクリプトを実行するときに引数を渡す環境変数をどのように設定しているのか教えていただけますか?
これは私にとってはうまくいきます:
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
テスト.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"
ping をありがとう@Craige_Hales
Re: コマンドラインからスクリプトを実行するときに引数を渡す@jschroedl
Re: コマンドラインからスクリプトを実行するときに引数を渡すはい、その投稿を見ました。 先ほど述べたように、PowerShell スクリプトから起動すると、何らかの理由で JMP は環境変数を読み取ることができません。Re: コマンドラインからスクリプトを実行するときに引数を渡す多かれ少なかれ同じ考え:
Jmp.exe の引数
Re: コマンドラインからスクリプトを実行するときに引数を渡すわかりました、
今のところこのようにしています:
'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");