Espero que el título sea conciso, pero por las dudas:¿Llamar a PowerShell por lotes y recuperar el nuevo valor de una variable de entorno temporal establecida en el script?
Estoy llamando a un script de PowerShell desde un archivo por lotes. Quiero que el script de PowerShell establezca el valor de una variable de entorno y que ese nuevo valor esté disponible en el archivo por lotes cuando finalice el script de PowerShell.
Sé que es posible establecer una variable de entorno usando $ env en PowerShell, pero el valor no persiste cuando termina el script de PowerShell. Imagino que esto es probablemente porque PowerShell se ejecuta en un proceso separado.
Soy consciente de que puedo devolver un código de salida y usar% ErrorLevel%, pero eso solo me dará números, y habrá un conflicto, ya que 1 indica una excepción de PowerShell en lugar de un número útil.
Ahora, aquí está la advertencia: no quiero que la variable de entorno persista. Es decir, no quiero que se defina para el usuario o el sistema y, por lo tanto, quiero que no esté disponible tan pronto como se cierre el archivo por lotes. En última instancia, simplemente quiero comunicar los resultados de una secuencia de comandos de PowerShell al archivo por lotes de la llamada.
¿Esto es posible?
Gracias de antemano :)
Nick
Buena solución. Dudo que haya otro que sea tan fácil y directo. – stej
Gracias por la respuesta, pero no creo que lo anterior funcione? Lo que esperaría que sucediera en este caso es que el valor de la variable de entorno 'd' será 'powershell -noprofile' y {get-date} "'. IE: los contenidos del lado derecho de la expresión no son evaluados. –
@Nicholas, tienes razón. Lo he intentado ahora y realmente solo hay una cadena almacenada en la variable. – stej