명령줄에서 스크립트를 실행할 때 인수 전달PowerShell로 작성된 더 큰 스크립트의 일부로 실행되는 JMP 스크립트가 있습니다.
다음을 사용하여 JMP 스크립트를 시작합니다.
Start-Process -FilePath $JMP_path -ArgumentList ("`""+$JMPScriptPath+"`"") -Wait스크립트에 추가 인수(텍스트 문자열)를 전달하고 싶습니다.
어떻게 해야 하나요?
환경 변수에 작성해 보았지만 JMP가 독립 실행형으로 실행될 때는 잘 읽을 수 있지만 PowersShell 내에서 JMP가 시작되면 읽을 수 없습니다. 또한 이 문자열을 JSL 스크립트에서만 읽기 위해 Powershell 스크립트의 파일에 쓰는 것을 피하고 싶습니다. 해당 문자열을 스크립트에 전달하는 방법이 있을까요? 아니면 JMP가 Environmenta 변수를 읽을 수 있도록 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"
핑을 보내주셔서 감사합니다 @Craige_Hales
Re: 명령줄에서 스크립트를 실행할 때 인수를 전달하세요.@jschroedl
Re: 명령줄에서 스크립트를 실행할 때 인수를 전달하세요.응, 그 게시물 봤어. 앞서 말했듯이 JMP는 Powershell 스크립트에서 실행될 때 어떤 이유로 환경 변수를 읽을 수 없습니다.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");