Ver y modificar variables de entorno

Discusión

En los archivos por lotes, las variables de entorno son la principal forma de almacenar información temporal o de transferir información entre archivos por lotes. Las variables de PowerShell y los parámetros de script son formas más eficaces de resolver esos problemas, pero las variables de entorno siguen proporcionando una forma útil de acceder a la configuración común del sistema, como la ruta del sistema, el directorio temporal, el nombre de dominio, el nombre de usuario y mucho más.

PowerShell hace aflorar las variables de entorno a través de su proveedor de entorno: un contenedor que le permite trabajar con las variables de entorno de forma similar a como lo haría con los elementos del sistema de archivos o los proveedores del registro. Por defecto, PowerShell define una unidad env: (muy parecida a c: o d:) que proporciona acceso a esta información:

PS > dir env:Name Value---- -----Path c:\progra~1\ruby\bin;C:\WINDOWS\system32;C:\TEMP C:\DOCUME~1\Lee\LOCALS~1\TempSESSIONNAME ConsolePATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;(...)

Dado que se trata de una unidad normal de PowerShell, la forma completa de obtener el valor de una variable de entorno tiene este aspecto:

PS > Get-Content Env:\UsernameLee

Cuando se trata de variables de entorno, sin embargo, esa es una sintaxis que casi nunca necesitarás usar, debido al soporte de PowerShell para la sintaxis de variables Get-Content y Set-Content, que acorta eso a:

PS > $env:UsernameLee

Esta sintaxis funciona para todas las unidades, pero se utiliza más comúnmente para acceder a las variables de entorno. Para obtener más información sobre esta sintaxis, consulte Acceder a información sobre la invocación de su comando.

Algunas variables de entorno obtienen realmente sus valores de una combinación de dos lugares: la configuración de toda la máquina y la configuración del usuario actual. Si desea acceder a los valores de las variables de entorno configuradas específicamente a nivel de máquina o de usuario, utilice el método ::GetEnvironmentVariable(). Por ejemplo, si has definido un directorio de herramientas en tu ruta, podrías ver:

PS > ::GetEnvironmentVariable("Path", "User")d:\lee\tools

Para establecer estas variables de entorno específicas de la máquina o del usuario de forma permanente, utiliza el método ::SetEnvironmentVariable():

::SetEnvironmentVariable(<name>, <value>, <target>

)

El parámetro target define dónde debe almacenarse esta variable: User para el usuario actual y Machine para todos los usuarios de la máquina. Por ejemplo, para añadir permanentemente el directorio de herramientas a la ruta:

$pathElements = @(::GetEnvironmentVariable("Path", "User") -split ";")$pathElements += "d:\tools"$newPath = $pathElements -join ";"::SetEnvironmentVariable("Path", $newPath, "User")

Para obtener más información sobre la modificación de la ruta del sistema, consulte Modificar la ruta del usuario o del sistema.

Para obtener más información sobre la sintaxis de las variables Get-Content y Set-Content, consulte Variables. Para obtener más información sobre el proveedor de entorno, escriba Get-Help About_Environment.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *