about_Environment_Variables

Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0

TEMA

about_Environment_Variables

DESCRIPCIÓN BREVE

Describe cómo acceder a 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 del sistema operativo, el número de procesadores que usa el sistema operativo y la ubicación de las carpetas temporales.

Las variables de entorno almacenan datos que usan 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.

Windows PowerShell le permite ver y cambiar las variables de entorno de Windows, incluidas las variables establecidas en el registro y las que se establecen para una sesión determinada. El proveedor de entorno de Windows PowerShell simplifica este proceso porque facilita la visualización y el cambio de las variables de entorno.

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

PROVEEDOR DE ENTORNO DE WINDOWS POWERSHELL

El proveedor de entorno de Windows PowerShell le proporciona acceso a variables de entorno de Windows en Windows PowerShell en una unidad Windows PowerShell (la unidad Env:). Esta unidad se parece mucho a una unidad de 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 de la unidad Env: desde cualquier otra unidad de Windows PowerShell, y puede acceder a la unidad Env: para ver y cambiar las variables de entorno.

OBJETOS DE VARIABLE DE ENTORNO

En Windows 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 del diccionario. El valor de la variable es el valor del diccionario.

Para mostrar una variable de entorno en Windows 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 Windows PowerShell, use los métodos que están asociados con el objeto DictionaryEntry.

Para mostrar las propiedades y métodos del objeto que representa una variable de entorno en Windows 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

VISUALIZACIÓN DE VARIABLES DE ENTORNO

Puede usar los cmdlets que contienen el nombre de elemento (los cmdlets Item) para mostrar y cambiar los valores de las variables de entorno. Dado que las variables de entorno no tienen elementos secundarios, el resultado de Get-Item y Get-ChildItem es el mismo.

Al hacer 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, Windows PowerShell muestra las variables de entorno en el orden en el 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 Windows PowerShell, escriba:

  Get-ChildItem Env: | Sort Name

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

  Set-Location Env:

Si ya está en la unidad Env:, puede omitir el nombre de unidad Env: en 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 de Windows PowerShell. Para mostrar el valor de una variable de entorno, use la siguiente sintaxis:

  $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 Windows PowerShell:

  $Env:windir

En esta sintaxis, el símbolo del dólar ($) indica una variable y el nombre de unidad indica una variable de entorno.

CAMBIO DE LAS VARIABLES DE ENTORNO

Para realizar un cambio persistente en una variable de entorno, use Sistema en el Panel de control (ficha Avanzadas o el elemento Configuración avanzada del sistema) para almacenar el cambio en el registro.

Al cambiar las variables de entorno en Windows 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 al del 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 el permiso suficiente, se produce un error en el comando, y Windows PowerShell muestra un error.

Puede cambiar los valores de 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 siguiente sintaxis:

  $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 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 siguiente sintaxis:

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

En este comando, el valor está entre paréntesis, por lo que se interpreta como una unidad.

GUARDAR LOS CAMBIOS EN LAS VARIABLES DE ENTORNO

Para crear o cambiar el valor de una variable de entorno en todas las sesiones de Windows PowerShell, agregue el cambio a su perfil de Windows PowerShell.

Por ejemplo, para agregar el directorio C:\Temp a la variable de entorno Path en todas las sesiones de Windows PowerShell, agregue el siguiente comando a su 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 LAS PREFERENCIAS

Las características de Windows PowerShell pueden usar variables de entorno para almacenar las preferencias del usuario. Estas variables funcionan como las 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 el conjunto de directivas de ejecución de la sesión actual. Esta variable de entorno existe solo cuando se establece una directiva de ejecución para una única 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 para la sesión.

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

Para más información, vea about_Execution_Policies.

PSMODULEPATH

Almacena las rutas de acceso a los directorios de módulos predeterminados. Windows PowerShell busca módulos en los directorios especificados si 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

Windows PowerShell establece el valor de "$pshome\Modules" en el registro. Establece el valor de "$home\Documents\WindowsPowerShell\Modules" cada vez que inicie Windows 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ódulos predeterminados para la sesión actual, use el formato de comando siguiente 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 todas las sesiones, agregue el comando anterior a su perfil de Windows PowerShell o use el método SetEnvironmentVariable de la clase Environment.

El comando siguiente usa el método GetEnvironmentVariable para obtener la configuración de máquina de PSModulePath y el método SetEnvironmentVariable para agregar la ruta C:\Archivos de programa\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 de usuario, cambie el valor de destino a User.

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

Para obtener más información acerca de los métodos de la clase System.Environment, vea "Environment (Métodos)" en MSDN en https://go.microsoft.com/fwlink/?LinkId=242783.

También puede agregar un comando que cambie el valor a su perfil o usar Sistema en el 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.

VEA TAMBIÉN

Entorno (proveedor)

about_Modules