about_Variables

Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0

TEMA

about_Variables

DESCRIPCIÓN BREVE

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

DESCRIPCIÓN LARGA

Puede almacenar todos los tipos de valores en variables Windows PowerShell. Normalmente se utilizan para almacenar los resultados de los comandos y los elementos que se usan en los comandos y expresiones, como nombres, rutas de acceso, configuraciones y valores.

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

Los nombres de variables no distinguen entre mayúsculas y minúsculas. Los nombres de variables pueden incluir espacios y caracteres especiales, pero son difíciles de usar y deben evitarse.

Hay varios tipos distintos de variables en Windows PowerShell.

Variables creadas por el usuario:

El usuario crea y mantiene las variables creadas por el usuario. De forma predeterminada, las variables que crea en la línea de comandos de Windows PowerShell solo existen mientras se mantiene abierta la ventana de Windows PowerShell y se pierden al cerrarla. Para guardar una variable, agréguela a su perfil de Windows 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 Windows PowerShell. Windows PowerShell crea estas variables y Windows 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 variable $PSHome almacena la ruta de acceso al directorio de instalación Windows PowerShell.

Para ver 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 Windows PowerShell. Windows PowerShell crea estas variables y se rellenan con valores predeterminados. Los usuarios pueden cambiar los valores de estas variables. Por ejemplo, la variable $MaximumHistoryCount determina el número máximo de entradas del historial de la sesión.

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

TRABAJAR CON VARIABLES

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

Por ejemplo:

        PS> $MyVariable = 1, 2, 3
        PS> $path = "C:\Windows\System32"

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

Por ejemplo:

          
        PS> $processes = Get-Process         
     
        PS> $Today = (Get-Date).date

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

Por ejemplo:

        PS> $MyVariable
        1
        2
        3
        PS> $Today
        Thursday, September 03, 2009 12:00:00 AM

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

En los ejemplos siguientes se muestra el valor de la variable $MyVariable, se cambia su valor y, después, se muestra el nuevo valor.

        PS> $MyVariable
        1
        2
        3
        PS> $MyVariable = "The green cat."
        PS> $MyVariable
        The green cat.

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

        PS> Clear-Variable -name MyVariable  

        -or-

        PS> $MyVariable = $null

Para eliminar la variable, use los cmdlets Remove-Variable o Remove-Item. (Estos cmdlets se explican más adelante en este tema).

       PS> remove-variable -name MyVariable

       PS> remove-item -path variable:\myvariable

Para obtener una lista de todas las variables en la sesión Windows PowerShell, escriba:

       get-variable

TIPOS DE VARIABLES

Puede almacenar cualquier tipo de objeto en una variable, incluidos números enteros, cadenas, matrices, tablas hash, y objetos que representan procesos, servicios, registros de eventos y equipos.

Las variables Windows PowerShell no están fuertemente tipadas, lo que significa que no se limitan a un tipo de objeto determinado. Una sola variable puede incluso contener una colección (una "matriz") de diferentes tipos de objetos al mismo tiempo.

El tipo de datos de una variable, que es un tipo de .NET Framework, lo determinan los tipos de .NET de los valores de la variable.

Por ejemplo:

        PS> $a = 12     (System.Int32)
        
        PS> $a = "Word" (System.String)

        PS> $a = 12, "Word" (System.Int32, System.String)

        PS> $a = dir C:\Windows\System32  (Files and folders)

Puede utilizar un atributo de tipo y convertir notación para asegurarse de que una variable pueda contener solo objetos del tipo especificado u objetos que se puedan convertir a ese tipo. Si intenta asignar un valor de otro tipo, Windows PowerShell intenta convertir el valor a su tipo. Si no puede, 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, delante del nombre de variable (en el lado izquierdo de la instrucción de asignación). En el ejemplo siguiente se crea una variable $number que puede solo contener números enteros, una variable de $words que solo puede contener cadenas y una variable $dates que puede solo contener objetos DateTime.

        PS> [int]$number = 8
        PS> $a = "12345" (The string is converted to an integer.)
        PS> $a = "Hello"
        Cannot convert value "Hello" to type "System.Int32". Error: "Input string was not in a correct format."
        At line:1 char:3
        + $a <<<<  = "Hello"
            + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
            + FullyQualifiedErrorId : RuntimeException
        PS> [string]$words = "Hello"

        PS> $words = 2   (The integer is converted to a string.)

        PS> $words + 10  (The strings are concatenated.)
        210              
        PS> [datetime] $dates = "09/12/91" (The string is converted to a DateTime object.)

        PS> $dates
        Thursday, September 12, 1991 12:00:00 AM

        PS> $dates = 10  (The integer is converted to a DateTime object.)
        PS> $dates
        Monday, January 01, 0001 12:00:00 AM
                

USO DE VARIABLES EN COMANDOS Y EXPRESIONES

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

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

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

Por ejemplo, el primer comando obtiene el valor de la variable $profile, que es la ruta de acceso al archivo de perfil de usuario de Windows PowerShell en la consola de Windows PowerShell. El segundo comando abre el archivo en el Bloc de notas y los comandos tercero y cuarto utilizan el nombre de la variable en una expresión.

        PS> $profile
        C:\Documents and Settings\User01\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
        PS> notepad $profile 
        - or -
        PS> notepad "$profile"
        C:\Documents and Settings\User01\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
        PS> '$profile'
        $profile
        PS> 'Use the $profile variable.'
        Use the $profile variable.

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

NOMBRES DE VARIABLES QUE INCLUYEN CARACTERES ESPECIALES

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

Siempre que sea posible, los nombres de variables deben incluir solo caracteres alfanuméricos y el carácter de subrayado (_). Los nombres de variables que incluyen espacios y otros caracteres especiales son difíciles de usar y deben evitarse.

Para crear o mostrar un nombre de variable que incluya espacios o caracteres especiales, incluya el nombre de variable entre llaves. Esto indica a Windows PowerShell que debe interpretar literalmente los caracteres en el nombre de variable.

Por ejemplo, el comando siguiente crea y después muestra una variable denominada "save-items".

          C:\PS> ${save-items} = "a", "b", "c"
          C:\PS> ${save-items}
          a
          b
          c

El comando siguiente obtiene los elementos secundarios del directorio que representa la variable de entorno "ProgramFiles(x86)".

          C:\PS> Get-childitem ${env:ProgramFiles(x86)}

Para hacer referencia a un nombre de variable que incluya llaves, encierre el nombre de variable entre llaves y use el carácter de acento grave (carácter de escape) para escapar las llaves. Por ejemplo, para crear una variable denominada "this{value}is" con un valor de 1, escriba:

          C:\PS> ${this`{value`}is} = 1
          C:\PS> ${this`{value`}is}
          1

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 se crea en un script solo está disponible dentro de él (a menos que se anteponga el operador punto al script, lo que lo agrega al ámbito actual).

Puede utilizar 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 obtener más información, consulte about_Scopes.

ALMACENAMIENTO DE VARIABLES

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

Para crearlas en todas las sesiones de Windows PowerShell que inicie, agregue la variable a su perfil de Windows PowerShell.

Por ejemplo, para cambiar el valor de la variable $VerbosePreference en todas las sesiones de Windows PowerShell, agregue el comando siguiente a su perfil de Windows PowerShell.

  $VerbosePreference = "Continue"

Puede agregar este comando a su perfil si abre el archivo de perfil en un editor de texto, como el Bloc de notas. Para más información sobre los perfiles de Windows PowerShell, consulte about_profiles.

LA UNIDAD VARIABLE:

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

Para cambiar la unidad variable:, escriba:

        set-location variable:
        
         (or "cd variable:")

Para mostrar los elementos (variables) en la unidad Variable:, use los cmdlets Get-Item o Get-ChildItem. Por ejemplo:

         get-childitem variable:
         (or "dir" or "ls")

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

         get-item variable:\PSCulture      

         Name                           Value
         ----                           -----
         PSCulture                      en-US        

Para más información sobre la unidad Variable: y el proveedor Variable de Windows PowerShell, escriba "get-help variable".

LOS CMDLETS DE VARIABLE

Windows PowerShell incluye un conjunto de cmdlets que están diseñados para administrar variables.

         Cmdlet Name           Description
         -----------           -----------

         Clear-Variable        Deletes the value of a variable.
         Get-Variable          Gets the variables in the current console.
         New-Variable          Creates a new variable.
         Remove-Variable       Deletes a variable and its value.
         Set-Variable          Changes the value of a variable.

Para obtener ayuda sobre estos cmdlets, escriba: "Get-Help <nombre-de-cmdlet>".

VEA TAMBIÉN

about_Automatic_Variables

about_Environment_Variables

about_Preference_Variables

about_Profiles

about_Quoting_Rules

about_Scopes