Pase el argumento al ejecutar el script desde la línea de comandoTengo un script JMP que se ejecuta como parte de un script más grande escrito en PowerShell.
Comienzo el script JMP usando
Start-Process -FilePath $JMP_path -ArgumentList ("`""+$JMPScriptPath+"`"") -WaitMe gustaría pasar un argumento adicional a un script, solo una cadena de texto.
¿Cómo puedo hacer eso?
Intenté simplemente escribirlo en una variable ambiental, pero si bien JMP puede leerlo bien cuando se ejecuta de forma independiente, no puede leerlo cuando JMP se inicia desde PowersShell. También me gustaría evitar escribir esta cadena en un archivo desde el script de Powershell solo para leerlo desde el script JSL. ¿Tal vez hay una manera de pasar esa cadena al script? ¿O tal vez debería usar Start-Process de una manera diferente para que JMP pueda leer la variable Environmenta?
secuencias de comandosRe: Pasar argumento al ejecutar un script desde la línea de comandoDe hecho, lo configuré así:
[System.Environment]::SetEnvironmentVariable('scriptArg', 'Hello From PowerShell', 'User')... solo porque, según tengo entendido, cuando lo configuras así:
$Env:ScriptArg = "Hello from PowerShell";
no persiste más allá de la sesión de PowerShell, y cuando lo estaba probando mirando a través de las herramientas de Windows, obtuve un comportamiento extraño. Sin embargo, ni siquiera necesito que persista más allá de la sesión: dentro de la sesión está perfectamente bien, por lo que probablemente volveré a su opción (y a la mía inicial), ahora que la probé nuevamente.
¡Gracias!
Re: Pasar argumento al ejecutar un script desde la línea de comando¿Puede mostrarnos cómo está configurando la variable de entorno?
Esto es trabajo para mí:
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
prueba.jsl:
Open Log();
myvar = Get Environment Variable("ScriptArg");
print(myvar);
Lanzado startjmp desde PS
Salida de registro en JMP:
Open Log();
myvar = Get Environment Variable("ScriptArg");
print(myvar);
/*:
"Hello from PowerShell"
gracias por el ping @Craige_Hales
Re: Pasar argumento al ejecutar un script desde la línea de comando@jschroedl
Re: Pasar argumento al ejecutar un script desde la línea de comandoSí, vi esa publicación. Como dije, JMP, por alguna razón, no puede leer la variable ambiental cuando se inicia desde el script de PowerShell.Re: Pasar argumento al ejecutar un script desde la línea de comandola misma idea, más o menos:
Argumentos jmp.exe
Re: Pasar argumento al ejecutar un script desde la línea de comandoDe acuerdo,
Lo estoy haciendo de esta manera por ahora:
'myVariable = "{0}";' -f $variableToPassToJMP | Out-File "./paths.jsl"
Start-Process -FilePath $JMP_path -ArgumentList ("`""+$JMPScriptPath+"`"") -Wait
Remove-Item -Path "./paths.jsl" -Force -Confirm:$falseNo es muy elegante, pero funciona.
Actualización: Oh, en el script JSL solo hago esto:
Include("paths.jsl");