TEMA about_Environment_Variables DESCRIPCIÓN BREVE Describe cómo se tiene acceso a las variables de entorno de Windows en Windows PowerShell. DESCRIPCIÓN DETALLADA Las variables de entorno almacenan información acerca del entorno del sistema operativo. Esta información incluye detalles como la ruta de acceso al 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 el sistema operativo y otros programas usan. 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 la ubicación de los archivos del sistema operativo Windows. Windows PowerShell permite ver y cambiar las variables de entorno de Windows, inclusive las que se establecen en el Registro y las que se establecen para una sesión determinada. El proveedor de entorno de Windows PowerShell simplifica este proceso facilitando la presentación y modificación de las variables de entorno. Al contrario que otros tipos diferentes de variables de Windows PowerShell, las sesiones secundarias, tales como los trabajos de segundo plano locales o las sesiones en las que se ejecutan los miembros de módulo, heredan las variables de entorno y sus valores. Por este motivo, las variables de entorno son adecuadas para almacenar valores que se necesitan en las sesiones primarias y secundarias. Proveedor de entorno de Windows PowerShell El proveedor de entorno de Windows PowerShell permite tener acceso a las variables de entorno de Windows en Windows PowerShell en una unidad de Windows PowerShell (la unidad Env:). Se trata de una unidad muy parecida a una unidad de disco 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 que contiene la unidad Env: desde cualquier otra unidad de Windows PowerShell, así como tener acceso a la unidad Env: para ver y cambiar las variables de entorno. Objetos de variables de entorno En Windows PowerShell, cada variable de entorno está representada por 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 Windows PowerShell, es preciso obtener un objeto que represente la variable y, a continuación, mostrar los valores de las propiedades del objeto. Al modificar una variable de entorno en Windows PowerShell, deben usarse los métodos que están asociados al objeto DictionaryEntry. Para mostrar las propiedades y los métodos del objeto que representa una variable de entorno en Windows PowerShell, se utiliza el cmdlet Get-Member. Por ejemplo, para mostrar las propiedades y métodos de todos los objetos que contiene la unidad Env:, escriba: get-item -path env:* | get-member Mostrar variables de entorno Los cmdlets que contienen el nombre Item (cmdlets Item) se pueden utilizar 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, debe escribirse 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 que se recuperan. Para ordenar la lista de variables de entorno por el nombre de la variable, se debe canalizar el resultado del comando Get-ChildItem al cmdlet Sort-Object. Por ejemplo, desde cualquier unidad de Windows PowerShell, escriba: get-childitem env: | sort name También es posible entrar en la unidad Env: utilizando el cmdlet Set-Location: set-location env: Si se encuentra en la unidad Env:, puede omitir el nombre de la unidad 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 es posible mostrar y cambiar los valores de las variables de entorno sin usar un cmdlet, sino el analizador de expresiones de Windows PowerShell. Para mostrar el valor de una variable de entorno, se utiliza la siguiente sintaxis: $env:<nombreVariable> Por ejemplo, para mostrar el valor de la variable de entorno WINDIR, escriba el comando siguiente en el símbolo del sistema de Windows 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. Cambiar variables de entorno Para realizar un cambio persistente en una variable de entorno, es preciso abrir Sistema en el Panel de control (pestaña Opciones avanzadas o elemento Configuración avanzada del sistema) para almacenar el cambio en el Registro. Cuando se cambian variables de entorno en Windows PowerShell, el cambio afecta solamente a la sesión actual. Este comportamiento se parece al comportamiento del comando Set en los entornos basados en Windows y del comando Setenv en los entornos basados en UNIX. También debe tener permiso para cambiar los valores de las variables. Si intenta cambiar un valor sin tener los permisos suficientes, se producirá un error al ejecutar el comando y Windows PowerShell mostrará un error. Puede cambiar los valores de variables sin usar un cmdlet, con la siguiente sintaxis: $env:<nombreVariable> = "<nuevoValor>" 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 es posible usar los cmdlets Item, tales como Set-Item, Remove-Item y Copy-Item, para cambiar los valores de las variables de entorno. Por ejemplo, si desea 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 se especifica entre paréntesis para que se interprete como una unidad. Guardar los cambios en las variables de entorno Para crear o cambiar el valor de una variable de entorno en cada sesión de Windows PowerShell, debe agregarse el cambio al perfil de Windows PowerShell. Por ejemplo, para agregar el directorio C:\Temp a la variable de entorno Path en cada sesión de Windows PowerShell, agregue el comando siguiente a su perfil de Windows PowerShell. $env:path = $env:path + ";c:\temp" Para agregar el comando a un perfil existente, como CurrentUser,AllHosts, escriba lo siguiente: add-content -path $profile.CurrentUserAllHosts -value '$env:path = $env:path + ";c:\temp"' Variables de entorno que almacenan preferencias Las características de Windows PowerShell pueden utilizar variables de entorno para almacenar las preferencias del usuario. Estas variables funcionan como las variables de preferencia, pero las heredan las sesiones secundarias de las sesiones en las que se crean. Para obtener más información sobre las variables de preferencias, vea about_preference_variables. Las variables de entorno que almacenan preferencias incluyen: PSModulePath Almacena las rutas de acceso a los directorios de módulos predeterminados. Si no se especifica una ruta de acceso completa a un módulo, Windows PowerShell busca los módulos en los directorios especificados. 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\M odules" cada vez que se inicia Windows PowerShell. Además, los programas de instalación que instalan módulos en otros directorios, como el directorio Archivos de programa, anexan sus ubicaciones al valor de PSModulePath. Para cambiar los directorios de módulos predeterminados, hay que cambiar el valor de la variable de entorno PSModulePath. Por ejemplo, para agregar el directorio "C:\ps-test\Module s" al valor de la variable de entorno PSModulePath, escriba: $env:PSModulePath = $env:PSModulePath + ";c:\ps-test\Modules" El signo de punto y coma (;) en el comando separa la nueva ruta de acceso de la ruta de acceso anterior en la lista. Los cambios que se realizan afectan solamente a la sesión actual, a menos que se agregue un comando que modifique el valor en el perfil o que se utilice el cuadro de diálogo Sistema del Panel de control para cambiar el valor de la variable de entorno PSModulePath en el Registro. Para obtener más información, vea about_Modules. VEA TAMBIÉN Entorno (proveedor)