Nombre de proveedor
Variable
Unidades
Variable:
Descripción breve
Proporciona acceso a las variables de Windows PowerShell y sus valores.
Descripción detallada
El proveedor de variables de Windows PowerShell permite obtener, agregar, cambiar, borrar y eliminar variables de Windows PowerShell en la consola actual.
El proveedor Variable de Windows PowerShell admite las variables que crea Windows PowerShell, incluidas las variables automáticas y de preferencia, así como las variables que cree el usuario.
El proveedor Variable es un espacio de nombres sin formato que contiene únicamente los objetos de variable. Las variables no tienen elementos secundarios.
La mayoría de las variables son instancias de la clase System.Management.Automation.PSVariable. No obstante, existen algunas variaciones. Por ejemplo, la variable "?" es miembro de la clase QuestionMarkVariable y la variable "MaximumVariableCount" es miembro de la clase SessionStateCapacityVariable.
El proveedor de variables expone su almacén de datos en la unidad Variable:. Para trabajar con variables, se puede cambiar la ubicación a la unidad Variable: ("set-location variable:"), o bien trabajar desde cualquier otra unidad de Windows PowerShell. Para hacer referencia a una variable desde otra ubicación, se debe incluir el nombre de la unidad (Variable:) en la ruta de acceso.
Windows PowerShell incluye un conjunto de cmdlets diseñados especialmente para ver y cambiar variables:
-- Get-Variable
-- New-Variable
-- Set-Variable
-- Remove-Variable
-- Clear-Variable
Si se usan estos cmdlets, no es necesario especificar la unidad Variable: en el nombre.
El proveedor Variable admite todos los cmdlets cuyos nombres contienen el sustantivo Item (los cmdlets Item), salvo Invoke-Item. El proveedor Variable admite los cmdlets Get-Content y Set-Content. Sin embargo, no admite los cmdlets cuyos nombres contienen el sustantivo ItemProperty (los cmdlets ItemProperty), ni el parámetro Filter de ningún cmdlet.
También puede usar el analizador de expresiones de Windows PowerShell para crear, ver y cambiar los valores de variables sin usar los cmdlets. Cuando trabaje con variables directamente, use un signo de dólar ($) para identificar el nombre como una variable y el operador de asignación (=) para establecer y cambiar su valor. Por ejemplo, "$p = Get-Process" crea la variable "p" y almacena en ella el resultado de un comando "Get-Process".
Todos los cambios realizados en las variables afectan únicamente a la sesión actual. Para guardar los cambios, hay que agregarlos al perfil de Windows PowerShell o bien utilizar Export-Console para guardar la consola actual.
Ejemplos
Tener acceso a la unidad Variable:
-------------------------- EJEMPLO 1 --------------------------
Este comando cambia la ubicación actual a la unidad Variable:. Puede usar este comando desde cualquier unidad de Windows PowerShell. Para volver a una unidad del sistema de archivos, escriba el nombre de la unidad. Por ejemplo, escriba "set-location c:".
set-location variable:
Mostrar el valor de las variables
-------------------------- EJEMPLO 1 --------------------------
Este comando obtiene la lista de todas las variables y sus valores de la sesión actual. Puede usar este comando desde cualquier unidad de Windows PowerShell.
get-childitem -path variable:
-------------------------- EJEMPLO 2 --------------------------
Este comando obtiene las variables cuyos nombres comienzan por "max". Puede usar este comando desde cualquier unidad de Windows PowerShell.
get-childitem -path variable:max*
Si se encuentra en la unidad Variable:, puede omitir el nombre de la unidad en la ruta de acceso.
-------------------------- EJEMPLO 3 --------------------------
Este comando obtiene el valor de la variable WhatIfPreference mediante su especificación en la línea de comandos.
El nombre de la variable va precedida de un signo de dólar ($) para indicar que se trata de una variable. No se especifica el nombre de la unidad Variable:.
$WhatIfPreference
-------------------------- EJEMPLO 4 --------------------------
Este comando utiliza el parámetro LiteralPath de Get-ChildItem para obtener el valor de la variable "?" desde la unidad Variable:. Get-ChildItem no intenta resolver los caracteres comodín incluidos en el valor del parámetro LiteralPath.
get-childitem -literalpath ?
Para mostrar el valor de una variable con un nombre de carácter especial sin usar un cmdlet, escriba un signo de dólar ($) y el nombre de la variable. Por ejemplo, para mostrar el valor de la variable "?", escriba "$?".
-------------------------- EJEMPLO 5 --------------------------
Este comando obtiene las variables cuyo valor de la propiedad Options sea "ReadOnly" o "Constant".
get-childitem -path variable: | where-object {$_.options -match "Constant" -or $_.options -match "ReadOnly"} | format-list -property name, value, options
Crear una nueva variable
-------------------------- EJEMPLO 1 --------------------------
Este comando crea la variable "services" y almacena en ella los resultados de un comando Get-Service. Como la ubicación actual se encuentra en la unidad Variable:, el valor del parámetro Path es un punto (.), que representa la ubicación actual.
Los paréntesis que contienen el comando Get-Service garantizan que el comando se ejecute antes de que se cree la variable. Sin estos paréntesis, el valor de la nueva variable sería una cadena "Get-Service".
new-item -path . -name services -value (Get-Service)
Si no se encuentra en la unidad Variable:, incluya el nombre de esta unidad en la ruta de acceso.
-------------------------- EJEMPLO 2 --------------------------
Este comando crea una variable "services" y almacena en ella el resultado de un comando Get-Service.
El comando usa un signo de dólar ($) para indicar que se trata de una variable, y el operador de asignación (=) para asignar el resultado del comando Get-Service a la variable que se acaba de crear.
$services = Get-Service
Para crear una variable sin valor, se omite el operador de asignación.
Mostrar las propiedades y los métodos de las variables
-------------------------- EJEMPLO 1 --------------------------
Este comando usa el cmdlet Get-Item para obtener todas las variables. El operador de canalización (|) envía los resultados al cmdlet Get-Member, que muestra los métodos y las propiedades del objeto.
get-item -path variable:* | get-member
Cuando se canaliza una colección de objetos a Get-Member (por ejemplo, la colección de variables de la unidad Variable:), Get-Member evalúa cada objeto de la colección por separado y devuelve información acerca de cada uno de los tipos de objeto que encuentra. Para obtener información acerca de la colección de objetos de la unidad Variable:, se utiliza el parámetro InputObject de Get-Member. Por ejemplo, "get-member -inputobject (get-item variable:*)". Si se usa InputObject, Get-Member evalúa la colección, no los objetos que esta contiene.
-------------------------- EJEMPLO 2 --------------------------
Este comando enumera los valores de las propiedades de la variable "home". Usa el cmdlet Get-Item para obtener un objeto que representa la variable "home". El operador de canalización (|) envía los resultados al comando Format-List. El comando Format-List usa el parámetro Property con un carácter comodín (*) para dar formato y mostrar los valores de todas las propiedades de la variable "home".
get-item variable:home | format-list -property *
Cambiar las propiedades de una variable
-------------------------- EJEMPLO 1 --------------------------
Este comando usa el cmdlet Rename-Item para cambiar a "process" el nombre de la variable "a".
rename-item -path variable:a -newname processes
-------------------------- EJEMPLO 2 --------------------------
Este comando usa el cmdlet Set-Item para cambiar a "Stop" el valor de la variable ErrorActionPreference.
set-item -path variable:ErrorActionPreference -value Stop
-------------------------- EJEMPLO 3 --------------------------
Este comando cambia el valor de la variable ErrorActionPreference a "Stop".
Usa un signo de dólar ($) para indicar que se trata de una variable, y el operador de asignación (=) para asignar el valor.
$ErrorActionPreference = Stop
Copiar una variable
-------------------------- EJEMPLO 1 --------------------------
Este comando usa el cmdlet Copy-Item para copiar la variable "processes" en "old_processes". De esta manera se crea una nueva variable llamada "old_processes" que tiene el mismo valor que la variable "processes".
copy-item -path variable:processes -destination variable:old_processes
Si el comando se emite desde la unidad Variable:, se puede omitir el nombre de esta unidad en el valor del parámetro Path.
-------------------------- EJEMPLO 2 --------------------------
Este comando copia la variable "processes" en "old_processes" sin usar un cmdlet. Usa el signo de dólar ($) para indicar que se trata de una variable, y el operador de asignación para asignar el valor de $processes a old_processes.
$old_processes = $processes
Eliminar una variable
-------------------------- EJEMPLO 1 --------------------------
Este comando elimina la variable "serv" de la sesión actual. Puede usar este comando en cualquier unidad de Windows PowerShell.
remove-variable -path variable:serv
-------------------------- EJEMPLO 2 --------------------------
Este comando elimina todas las variables de la sesión actual, excepto aquellas cuyo valor de la propiedad Options sea Constant. Sin el parámetro Force, el comando no elimina las variables cuya propiedad Options tenga el valor ReadOnly.
remove-item variable:* -force
Establecer el valor de una variable en NULL
-------------------------- EJEMPLO 1 --------------------------
Este comando usa el cmdlet Clear-Item para cambiar a NULL el valor de variable "processes".
clear-item -path variable:processes
-------------------------- EJEMPLO 2 --------------------------
Este comando borra el valor de la variable "processes" y le asigna un valor NULL. Usa la variable automática $null para representar el valor NULL.
$processes = $null
Vea también