about_Variables

Descripción breve

Describe cómo las variables almacenan los valores que se pueden usar en PowerShell.

Descripción larga

Puede almacenar todos los tipos de valores en variables de PowerShell. Por ejemplo, almacene los resultados de los comandos y almacene los elementos que se usan en comandos y expresiones, como nombres, rutas de acceso, configuración y valores.

Una variable es una unidad de memoria en la que se almacenan los valores. En PowerShell, las variables se representan mediante cadenas de texto que comienzan con un signo de dólar ($), como $a, $processo $my_var.

Los nombres de variable no distinguen mayúsculas de minúsculas y pueden incluir espacios y caracteres especiales. Sin embargo, los nombres de variable que incluyen caracteres especiales y espacios son difíciles de usar y deben evitarse. Para obtener más información, vea Nombres de variables que incluyen caracteres especiales.

Hay varios tipos diferentes de variables en PowerShell.

  • Variables creadas por el usuario: el usuario crea y mantiene las variables creadas por el usuario. De forma predeterminada, las variables que cree en la línea de comandos de PowerShell solo existen mientras la ventana de PowerShell está abierta. Cuando se cierran las ventanas de PowerShell, se eliminan las variables. Para guardar una variable, agréguela al perfil de PowerShell. También puede crear variables en scripts con ámbito global, de script o local.

  • Variables automáticas: las variables automáticas almacenan el estado de PowerShell. PowerShell crea estas variables y PowerShell cambia sus valores según sea necesario para mantener su precisión. Los usuarios no pueden cambiar el valor de estas variables. Por ejemplo, la $PSHOME variable almacena la ruta de acceso al directorio de instalación de PowerShell.

    Para obtener más información, una lista y una descripción de las variables automáticas, consulte about_Automatic_Variables.

  • Variables de preferencia: las variables de preferencia almacenan preferencias de usuario para PowerShell. PowerShell crea estas variables y se rellenan con valores predeterminados. Los usuarios pueden cambiar los valores de estas variables. Por ejemplo, la $MaximumHistoryCount variable determina el número máximo de entradas en el historial de sesiones.

    Para obtener más información, una lista y una descripción de las variables de preferencia, consulte about_Preference_Variables.

Trabajo con variables

Para crear una variable, use una instrucción de asignación para asignar un valor a la variable. No es necesario declarar la variable antes de usarla. El valor predeterminado de todas las variables es $null.

Para obtener una lista de todas las variables de la sesión de PowerShell, escriba Get-Variable. Los nombres de variable se muestran sin el signo de dólar anterior ($) que se usa para hacer referencia a variables.

Por ejemplo:

$MyVariable = 1, 2, 3

$Path = "C:\Windows\System32"

Las variables son útiles para almacenar los resultados de los comandos.

Por ejemplo:

$Processes = Get-Process

$Today = (Get-Date).DateTime

Para mostrar el valor de una variable, escriba el nombre de la variable, precedido por un signo de dólar ($).

Por ejemplo:

$MyVariable
1
2
3
$Today
Tuesday, September 3, 2019 09:46:46

Para cambiar el valor de una variable, asigne un nuevo valor a la variable.

En los ejemplos siguientes se muestra el valor de la $MyVariable variable, se cambia el valor de la variable y, a continuación, se muestra el nuevo valor.

$MyVariable = 1, 2, 3
$MyVariable
1
2
3
$MyVariable = "The green cat."
$MyVariable
The green cat.

Para eliminar el valor de una variable, use el Clear-Variable cmdlet o cambie el valor a $null.

Clear-Variable -Name MyVariable
$MyVariable = $null

Para eliminar la variable, use Remove-Variable o Remove-Item.

Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable

También es posible asignar valores a varias variables con una instrucción . En los ejemplos siguientes se asigna el mismo valor a varias variables:

$a = $b = $c = 0

En el ejemplo siguiente se asignan varios valores a varias variables.

$i,$j,$k = 10, "red", $true    # $i is 10, $j is "red", $k is True
$i,$j = 10, "red", $true       # $i is 10, $j is [object[]], Length 2

Para obtener información más detallada, consulte la sección Asignación de varias variables de about_Assignment_Operators.

Tipos de variables

Puede almacenar cualquier tipo de objeto en una variable, incluidos enteros, cadenas, matrices y tablas hash. Además, los objetos que representan procesos, servicios, registros de eventos y equipos.

Las variables de PowerShell se escriben de forma flexible, lo que significa que no se limitan a un tipo determinado de objeto. Una sola variable puede incluso contener una colección, o matriz, de diferentes tipos de objetos al mismo tiempo.

El tipo de datos de una variable viene determinado por los tipos de .NET de los valores de la variable. Para ver el tipo de objeto de una variable, use Get-Member.

Por ejemplo:

$a = 12                         # System.Int32
$a = "Word"                     # System.String
$a = 12, "Word"                 # array of System.Int32, System.String
$a = Get-ChildItem C:\Windows   # FileInfo and DirectoryInfo types

Puede usar un atributo de tipo y una notación de conversión para asegurarse de que una variable solo puede contener tipos de objetos o objetos específicos que se pueden convertir a ese tipo. Si intenta asignar un valor de otro tipo, PowerShell intenta convertir el valor en su tipo. Si no se puede convertir el tipo, se produce un error en la instrucción de asignación.

Para usar la notación de conversión, escriba un nombre de tipo, entre corchetes, antes del nombre de la variable (en el lado izquierdo de la instrucción de asignación). En el ejemplo siguiente se crea una $number variable que solo puede contener enteros, una $words variable que solo puede contener cadenas y una $dates variable que solo puede contener objetos DateTime .

[int]$number = 8
$number = "12345"  # The string is converted to an integer.
$number = "Hello"
Cannot convert value "Hello" to type "System.Int32". Error: "Input string
was not in a correct format."
At line:1 char:1
+ $number = "Hello"
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo          : MetadataError: (:) [],
    ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
[string]$words = "Hello"
$words = 2       # The integer is converted to a string.
$words += 10     # The plus (+) sign concatenates the strings.
$words
210
[datetime] $dates = "09/12/91"  # The string is converted to a DateTime object.
$dates
Thursday, September 12, 1991 00:00:00
$dates = 10    # The integer is converted to a DateTime object.
$dates
Monday, January 1, 0001 00:00:00

Uso de variables en comandos y expresiones

Para usar una variable en un comando o expresión, escriba el nombre de la variable, precedido por el signo dólar ($).

Si el nombre de la variable y el signo de dólar no están entre comillas, o si están entre comillas dobles ("), el valor de la variable se usa en el comando o expresión.

Si el nombre de la variable y el signo de dólar se incluyen entre comillas simples ('), el nombre de la variable se usa en la expresión.

Para obtener más información sobre el uso de comillas en PowerShell, consulte about_Quoting_Rules.

En este ejemplo se obtiene el valor de la $PROFILE variable , que es la ruta de acceso al archivo de perfil de usuario de PowerShell en la consola de PowerShell.

$PROFILE
C:\Users\User01\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

En este ejemplo, se muestran dos comandos que pueden abrir el perfil de PowerShell en notepad.exe. El ejemplo con comillas dobles (") usa el valor de la variable.

notepad $PROFILE

notepad "$PROFILE"

En los ejemplos siguientes se usan marcas de comillas simples (') que tratan la variable como texto literal.

'$PROFILE'
$PROFILE
'Use the $PROFILE variable.'
Use the $PROFILE variable.

Nombres de variable que incluyen caracteres especiales

Los nombres de variable comienzan con un signo de dólar ($) y pueden incluir caracteres alfanuméricos y caracteres especiales. La longitud del nombre de variable solo está limitada por la memoria disponible.

El procedimiento recomendado es que los nombres de variable incluyan solo caracteres alfanuméricos y el carácter de subrayado (_). Los nombres de variable que incluyen espacios y otros caracteres especiales, son difíciles de usar y deben evitarse.

Los nombres de variables alfanuméricas pueden contener estos caracteres:

  • Caracteres Unicode de estas categorías: Lu, Ll, Lt, Lm, Lo o Nd.
  • Carácter de subrayado (_).
  • Carácter de signo de interrogación (?).

La lista siguiente contiene las descripciones de categorías Unicode. Para obtener más información, vea UnicodeCategory.

  • Lu - UppercaseLetter
  • Ll - LowercaseLetter
  • Lt - TitlecaseLetter
  • Lm - ModifierLetter
  • Lo - OtherLetter
  • Nd - DecimalDigitNumber

Para crear o mostrar un nombre de variable que incluya espacios o caracteres especiales, incluya el nombre de la variable con los caracteres de llaves ({}). Las llaves dirigen PowerShell para interpretar los caracteres del nombre de variable como literales.

Los nombres de variables de caracteres especiales pueden contener estos caracteres:

  • Cualquier carácter Unicode, con las siguientes excepciones:
    • Carácter de llave de cierre (}) (U+007D).
    • Carácter de retroceso () (`U+0060). La barra inversa se usa para escapar caracteres Unicode para que se traten como literales.

PowerShell tiene variables reservadas como $$, $?, $^y $_ que contienen caracteres alfanuméricos y especiales. Para obtener más información, vea about_Automatic_Variables.

Por ejemplo, el comando siguiente crea la variable denominada save-items. Las llaves ({}) son necesarias porque el nombre de variable incluye un carácter especial de guion (-).

${save-items} = "a", "b", "c"
${save-items}
a
b
c

El comando siguiente obtiene los elementos secundarios del directorio representado por la ProgramFiles(x86) variable de entorno.

Get-ChildItem ${env:ProgramFiles(x86)}

Para hacer referencia a un nombre de variable que incluye llaves, incluya el nombre de la variable entre llaves y use el carácter de retroceso para escapar las llaves. Por ejemplo, para crear una variable denominada type this{value}is :

${this`{value`}is} = "This variable name uses braces and backticks."
${this`{value`}is}
This variable name uses braces and backticks.

Variables y ámbito

De forma predeterminada, las variables solo están disponibles en el ámbito en el que se crean.

Por ejemplo, una variable que se crea en una función solo está disponible dentro de la función . Una variable que cree en un script solo está disponible en el script. Si dot-source el script, la variable se agrega al ámbito actual. Para obtener más información, consulte about_Scopes.

Puede usar un modificador de ámbito para cambiar el ámbito predeterminado de la variable. La expresión siguiente crea una variable denominada Computers. La variable tiene un ámbito global, incluso cuando se crea en un script o una función.

$Global:Computers = "Server01"

Para cualquier script o comando que se ejecute fuera de la sesión, necesita el Using modificador de ámbito para insertar valores de variable desde el ámbito de la sesión de llamada, para que el código fuera de la sesión pueda acceder a ellos.

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

Guardar variables

Las variables que cree solo están disponibles en la sesión en la que se crean. Se pierden cuando cierra la sesión.

Para crear la variable en cada sesión de PowerShell que inicie, agregue la variable al perfil de PowerShell.

Por ejemplo, para cambiar el valor de la $VerbosePreference variable en cada sesión de PowerShell, agregue el siguiente comando al perfil de PowerShell.

$VerbosePreference = "Continue"

Puede agregar este comando al perfil de PowerShell abriendo el $PROFILE archivo en un editor de texto, como notepad.exe. Para obtener más información sobre los perfiles de PowerShell, consulte about_Profiles.

La unidad Variable:

El proveedor de variables de PowerShell crea una Variable: unidad que parece y actúa como una unidad del sistema de archivos, pero contiene las variables de la sesión y sus valores.

Para cambiar a la Variable: unidad, use el siguiente comando:

Set-Location Variable:

Para enumerar los elementos y variables de la Variable: unidad, use los Get-Item cmdlets o Get-ChildItem .

Get-ChildItem Variable:

Para obtener el valor de una variable determinada, use la notación del sistema de archivos para especificar el nombre de la unidad y el nombre de la variable. Por ejemplo, para obtener la $PSCulture variable automática, use el siguiente comando.

Get-Item Variable:\PSCulture
Name                           Value
----                           -----
PSCulture                      en-US

Para mostrar más información sobre la Variable: unidad y el proveedor de variables de PowerShell, escriba:

Get-Help Variable

Sintaxis variable con rutas de acceso del proveedor

Puede prefijar una ruta de acceso del proveedor con el signo dólar ($) y acceder al contenido de cualquier proveedor que implemente la interfaz IContentCmdletProvider .

Los siguientes proveedores integrados de PowerShell admiten esta notación:

Cmdlets de variable

PowerShell incluye un conjunto de cmdlets diseñados para administrar variables.

Para enumerar los cmdlets, escriba:

Get-Command -Noun Variable

Para obtener ayuda para un cmdlet específico, escriba:

Get-Help <cmdlet-name>
Nombre del cmdlet Descripción
Clear-Variable Elimina el valor de una variable.
Get-Variable Obtiene las variables de la consola actual.
New-Variable Crea una nueva variable.
Remove-Variable Elimina una variable y su valor.
Set-Variable Cambia el valor de una variable.

Consulte también