variable computername change powershell environment-variables

computername - powershell set environment variable



¿Cómo configuro una variable env en PowerShell si no existe? (1)

Me sorprende que no obtuve la respuesta para este escenario común después de buscar en Google por un tiempo ...

¿Cómo se puede configurar una variable de entorno en PowerShell si no existe?


El siguiente código define la variable de entorno FOO , si aún no existe.

if (-not (Test-Path env:FOO)) { $env:FOO = ''bar'' }

Nota: esta variable de entorno recién definida solo existirá para el proceso actual y para cualquier proceso secundario que cree (por ejemplo, cuando inicia una nueva sesión de PowerShell desde el ISE). Gracias, PetSerAl .

Lo siguiente fue contribuido principalmente por Ansgar Wiechers , con un suplemento de Mathias R. Jessen :

Si desea definir una variable de entorno de forma persistente , necesita usar el método SetEnvironmentVariable() estático de la clase [System.Environment] :

# user environment [Environment]::SetEnvironmentVariable(''FOO'', ''bar'', ''User'') # system environment (requires admin privileges) [Environment]::SetEnvironmentVariable(''FOO'', ''bar'', ''Machine'')

Tenga en cuenta que estas definiciones surten efecto en futuras sesiones (procesos), por lo que también para definir la variable para el proceso actual , ejecute $env:FOO = ''bar'' además , que en realidad es lo mismo que [Environment]::SetEnvironmentVariable(''FOO'', ''bar'', ''Process'') .

Cuando se usa [Environment]::SetEnvironmentVariable() con User o Machine , se WM_SETTINGCHANGE un mensaje WM_SETTINGCHANGE a otras aplicaciones para notificarles el cambio (aunque pocas aplicaciones reaccionan a dichas notificaciones).
Esto no se aplica cuando se dirige al Process (o cuando se asigna a $env:FOO ), porque ninguna otra aplicación (proceso) puede ver la variable de todos modos.

Ver tambien