Pregunta

Estoy trabajando en la automatización de los parches para un proveedor de la aplicación.Yo quería usar powershell para iterar a través de una lista de los servidores y el uso de la comunicación remota para instalar en cada caja.Sin embargo, un aspecto que me está dando un gran dolor de cabeza.Tengo que llamar a un cmd secuencia de comandos proporcionados por el proveedor para establecer las variables del sistema antes de ejecutar el script de instalación.Así que me llame la secuencia de comandos como en powershell:

Invoke-Command -session $session {cmd /k ($args[0]+"\data\env.bat")} -Args $lesDestDir

Yo lo veo ejecutar como se hace eco de su trabajo en mi ventana de powershell, pero las llamadas posteriores a la secuencia de comandos de instalación, es decir:

Invoke-Command -session $session {perl ".\rollout-2010.pl " $args[0] " NC"} -Args $rollout

salga inmediatamente diciendo las distintas variables del sistema se utiliza no se han establecido.Puede que alguien me explique el alcance de las variables del sistema?Hacer que cesen de existir después de la de invocar completa de comandos?Qué necesito para encadenar la secuencia de comandos de dos llamadas en una sola invocar el comando de modo que la segunda secuencia de comandos puede acceder a las variables del sistema o algo así?

¿Fue útil?

Solución

Los cambios realizados mediante la SET comando son NO permanente, que se aplican a la actual cmd proceso único y permanecer así hasta que el cmd termina el proceso.

Si es posible, establezca la variable de entorno con el uso de powershell sintaxis:

Invoke-Command -session $session {$env:myvar = 1}

Alternativamente, usted podría cadena de los comandos utilizando el comando cmd separador & como este:

Invoke-Command -session $session {cmd /k "set myvar = 1" `& "set"}

Otros consejos

Sí, necesitas juntarlos.Las variables de entorno se están estableciendo en la primera sesión CMD que sale, luego se inicia una segunda sin ellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top