Compartir a través de


Acerca de las variables de entorno

DESCRIPCIÓN BREVE

Describe cómo acceder a las variables de entorno de Windows en Windows PowerShell.

DESCRIPCIÓN LARGA

Las variables de entorno almacenan información sobre el entorno del sistema operativo. Esta información incluye detalles como la ruta de acceso del sistema operativo, el número de procesadores usados por el sistema operativo y la ubicación de las carpetas temporales.

Las variables de entorno almacenan los datos que usa el sistema operativo y otros programas. Por ejemplo, la variable de entorno WINDIR contiene la ubicación del directorio de instalación de Windows. Los programas pueden consultar el valor de esta variable para determinar dónde se encuentran los archivos del sistema operativo Windows.

PowerShell permite ver y cambiar las variables de entorno de Windows, incluidas las variables establecidas en el Registro, y las establecidas para una sesión determinada. El proveedor de entornos de PowerShell simplifica este proceso al facilitar la visualización y el cambio de las variables de entorno.

A diferencia de otros tipos de variables en PowerShell, las variables de entorno y sus valores los heredan las sesiones secundarias, como los trabajos en segundo plano locales y las sesiones en las que se ejecutan los miembros del módulo. Esto hace que las variables de entorno sean adecuadas para almacenar valores necesarios en sesiones primarias y secundarias.

Proveedor de entornos de PowerShell

El proveedor de entornos de PowerShell le permite acceder a las variables de entorno de Windows en PowerShell en una unidad de PowerShell (la unidad Env: ). Esta unidad se parece mucho a una unidad del sistema de archivos. Para ir a la unidad Env: , escriba:

Set-Location Env:

A continuación, para mostrar el contenido de la unidad Env: , escriba:

Get-ChildItem

Puede ver las variables de entorno en la unidad Env: desde cualquier otra unidad de PowerShell y puede ir a la unidad Env: para ver y cambiar las variables de entorno.

Objetos de variables de entorno

En PowerShell, cada variable de entorno se representa mediante un objeto que es una instancia de la clase System.Collections.DictionaryEntry.

En cada objeto DictionaryEntry, el nombre de la variable de entorno es la clave de diccionario. El valor de la variable es el valor del diccionario.

Para mostrar una variable de entorno en PowerShell, obtenga un objeto que represente la variable y, a continuación, muestre los valores de las propiedades del objeto. Al cambiar una variable de entorno en PowerShell, use los métodos asociados al objeto DictionaryEntry.

Para mostrar las propiedades y los métodos del objeto que representa una variable de entorno en PowerShell, use el cmdlet Get-Member. Por ejemplo, para mostrar los métodos y propiedades de todos los objetos de la unidad Env: , escriba:

Get-Item -Path Env:* | Get-Member

Mostrar variables de entorno

Puede usar los cmdlets que contienen el sustantivo Item (los cmdlets Item) para mostrar y cambiar los valores de las variables de entorno. Dado que las variables de entorno no tienen elementos secundarios, la salida de Get-Item y Get-ChildItem es la misma.

Cuando haga referencia a una variable de entorno, escriba el nombre de la unidad Env: seguido del nombre de la variable. Por ejemplo, para mostrar el valor de la variable de entorno COMPUTERNAME, escriba:

Get-ChildItem Env:Computername

Para mostrar los valores de todas las variables de entorno, escriba:

Get-ChildItem Env:

De forma predeterminada, PowerShell muestra las variables de entorno en el orden en que las recupera. Para ordenar la lista de variables de entorno por nombre de variable, canalice la salida de un comando Get-ChildItem al cmdlet Sort-Object. Por ejemplo, desde cualquier unidad de PowerShell, escriba:

Get-ChildItem Env: | Sort Name

También puede ir a la unidad Env: mediante el cmdlet Set-Location:

Set-Location Env:

Cuando se encuentra en la unidad Env: , puede omitir el nombre de la unidad Env: de la ruta de acceso. Por ejemplo, para mostrar todas las variables de entorno, escriba:

Get-ChildItem

Para mostrar el valor de la variable COMPUTERNAME desde la unidad Env: , escriba:

Get-ChildItem ComputerName

También puede mostrar y cambiar los valores de las variables de entorno sin usar un cmdlet mediante el analizador de expresiones en PowerShell. Para mostrar el valor de una variable de entorno, use la sintaxis siguiente:

$Env:<variable-name>

Por ejemplo, para mostrar el valor de la variable de entorno WINDIR, escriba el siguiente comando en el símbolo del sistema de PowerShell:

$Env:windir

En esta sintaxis, el signo de dólar ($) indica una variable y el nombre de la unidad indica una variable de entorno.

Cambio de variables de entorno

Para realizar un cambio persistente en una variable de entorno, use System en Panel de control (pestaña Opciones avanzadas o el elemento Configuración avanzada del sistema) para almacenar el cambio en el Registro.

Al cambiar las variables de entorno en PowerShell, el cambio afecta solo a la sesión actual. Este comportamiento es similar al comportamiento del comando Set en entornos basados en Windows y el comando Setenv en entornos basados en UNIX.

También debe tener permiso para cambiar los valores de las variables. Si intenta cambiar un valor sin permisos suficientes, se produce un error en el comando y PowerShell muestra un error.

Puede cambiar los valores de las variables sin usar un cmdlet mediante la sintaxis siguiente:

$Env:<variable-name> = "<new-value>"

Por ejemplo, para anexar "; c:\temp" al valor de la variable de entorno Path, use la sintaxis siguiente:

$Env:path = $env:path + ";c:\temp"

También puede usar los cmdlets Item, como Set-Item, Remove-Item y Copy-Item para cambiar los valores de las variables de entorno. Por ejemplo, para usar el cmdlet Set-Item para anexar "; c:\temp" al valor de la variable de entorno Path, use la sintaxis siguiente:

Set-Item -Path Env:Path -Value ($Env:Path + ";C:\Temp")

En este comando, el valor se incluye entre paréntesis para que se interprete como una unidad.

Guardar cambios en variables de entorno

Para crear o cambiar el valor de una variable de entorno en cada sesión de Windows PowerShell, agregue el cambio al perfil de PowerShell.

Por ejemplo, para agregar el directorio C:\Temp a la variable de entorno Path en cada sesión de PowerShell, agregue el siguiente comando al perfil de Windows PowerShell.

$Env:Path = $Env:Path + ";C:\Temp"

Para agregar el comando a un perfil existente, como el perfil CurrentUser,AllHosts, escriba:

Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:Path = `
$Env:Path + ";C:\Temp"'

Variables de entorno que almacenan preferencias

Las características de PowerShell pueden usar variables de entorno para almacenar las preferencias del usuario. Estas variables funcionan como variables de preferencia, pero son heredadas por sesiones secundarias de las sesiones en las que se crean. Para obtener más información sobre las variables de preferencia, consulte about_preference_variables.

Las variables de entorno que almacenan preferencias incluyen:

  • PSExecutionPolicyPreference

    Almacena la directiva de ejecución establecida para la sesión actual. Esta variable de entorno solo existe cuando se establece una directiva de ejecución para una sola sesión. Puede hacerlo de dos maneras diferentes.

    • Use PowerShell.exe para iniciar una sesión en la línea de comandos y use su parámetro ExecutionPolicy para establecer la directiva de ejecución de la sesión.

    • Use el cmdlet Set-ExecutionPolicy. Use el parámetro Scope con un valor de "Process".

      Para obtener más información, vea about_Execution_Policies.

  • PSModulePath

    Almacena las rutas de acceso a los directorios de módulo predeterminados. PowerShell busca módulos en los directorios especificados cuando no se especifica una ruta de acceso completa a un módulo.

    El valor predeterminado de $Env:PSModulePath es:

    $HOME\Documents\WindowsPowerShell\Modules; $PSHOME\Modules
    

PowerShell establece el valor de "$PSHOME\Modules" en el Registro. Establece el valor de "$HOME\Documents\WindowsPowerShell\Modules" cada vez que inicie PowerShell.

Además, los programas de instalación que instalan módulos en otros directorios, como el directorio Archivos de programa, pueden anexar sus ubicaciones al valor de PSModulePath.

Para cambiar los directorios de módulo predeterminados de la sesión actual, use el siguiente formato de comando para cambiar el valor de la variable de entorno PSModulePath.

Por ejemplo, para agregar el directorio "C:\Archivos de programa\Fabrikam\Modules" al valor de la variable de entorno PSModulePath, escriba:

$Env:PSModulePath = $Env:PSModulePath+";C:\Program Files\Fabrikam\Modules"

El punto y coma (;) en el comando separa la nueva ruta de la ruta de acceso de la ruta que la precede en la lista.

Para cambiar el valor de PSModulePath en cada sesión, agregue el comando anterior al perfil de PowerShell o use el método SetEnvironmentVariable de la clase Environment.

El siguiente comando usa el método GetEnvironmentVariable para obtener la configuración de la máquina de PSModulePath y el método SetEnvironmentVariable para agregar la ruta de acceso C:\Program Files\Fabrikam\Modules al valor.

$path = [System.Environment]::GetEnvironmentVariable("PSModulePath",
 "Machine")
[System.Environment]::SetEnvironmentVariable("PSModulePath", $path +
";C:\Program Files\Fabrikam\Modules", "Machine")

Para agregar una ruta de acceso a la configuración del usuario, cambie el valor de destino a Usuario.

$path = [System.Environment]::GetEnvironmentVariable("PSModulePath",
 "User")
[System.Environment]::SetEnvironmentVariable("PSModulePath", $path +
";$home\Documents\Fabrikam\Modules", "User")

Para obtener más información sobre los métodos de la clase System.Environment, vea Métodos de entorno en MSDN.

También puede agregar un comando que cambie el valor a su perfil o use System en Panel de control para cambiar el valor de la variable de entorno PSModulePath en el Registro.

Para obtener más información, consulte about_Modules.

CONSULTE TAMBIÉN