Búsqueda de sitios web

Una guía rápida para configurar variables en PowerShell


Las variables son el pan y la mantequilla de cualquier lenguaje de programación. Y PowerShell no es una excepción. Las variables le permiten almacenar datos, hacer referencia a ellos más adelante e incluso pasarlos entre scripts y funciones. En pocas palabras, potencian su código PowerShell. Saber cuándo y cómo declarar e inicializar variables es clave para escribir scripts de PowerShell limpios y modulares. PowerShell proporciona una forma sencilla pero potente de crear y administrar variables mediante el cmdlet Set-Variable. Comprender cómo usar Set-Variable es clave para cualquiera que quiera comenzar con las secuencias de comandos de PowerShell y la automatización de la línea de comandos.

En esta publicación, cubriré todo lo que necesita saber sobre la configuración de variables en PowerShell. Aprenderás:

  • La sintaxis básica para inicializar variables.
  • Diferentes formas de asignar valores y objetos.
  • Cuándo utilizar asignaciones simples frente a Set-Variable
  • Cómo configurar variables con alcances específicos
  • Errores comunes que se deben evitar
  • Mejores prácticas para utilizar variables de forma eficaz

Ya sea que sea nuevo en PowerShell o tenga algo de experiencia, esta guía lo ayudará a llevar sus habilidades variables al siguiente nivel. ¡Continúe leyendo para aprender cómo declarar, configurar y usar variables como un profesional!

Introducción a las variables de PowerShell

Las variables son un componente crítico de los scripts de PowerShell, ya que le permiten almacenar datos para utilizarlos en todo el script. El uso de variables en PowerShell le permite almacenar y manipular datos de manera eficiente, lo que hace que sus secuencias de comandos de PowerShell sean más dinámicas y flexibles. Al asignar valores a las variables, puede reutilizarlos en todo el código, ahorrando tiempo y recursos. Las variables de PowerShell vienen en tres tipos: escalares, de matriz y de tabla hash. Las variables escalares almacenan un valor único, mientras que las variables de matriz almacenan múltiples valores y las variables de tabla hash almacenan pares clave-valor.

PowerShell permite diferentes tipos de variables, incluidas cadenas, números enteros, matrices y muchas más. Además, existen variables automáticas creadas por PowerShell, variables de preferencia para las preferencias del usuario y variables de entorno para información a nivel del sistema.

Descripción del cmdlet Set-Variable

El cmdlet Set-Variable es un comando integrado de PowerShell que le permite crear nuevas variables o cambiar el valor de las existentes y controlar el alcance y la visibilidad de las variables. Este cmdlet es especialmente útil cuando necesita asignar un valor específico a una variable o cambiar el valor existente de una variable en PowerShell. La sintaxis del cmdlet Set-Variable es:


Set-Variable 
[-Name] <String> 
[[-Value] <Object>] 
[-Scope <String>] 
[-Option {None | ReadOnly | Constant | Private | AllScope}]
[-Force]
[-PassThru]
[-Visibility {Public | Private}] 
[-Include <String[]>]
[-Exclude <String[]>] 
[-Description <String>] 
[-WhatIf] [-Confirm] [<CommonParameters>]

A continuación se muestra una lista de algunos de los parámetros importantes para el cmdlet Set-Variable en PowerShell:

-Name

Especifica el nombre de la variable. Requerido para el cmdlet.

-Value

Especifica el valor asignado a la variable.

-Scope

Define el alcance de la variable (por ejemplo, Global, Local, Script).

-Option

Establece atributos adicionales para la variable (por ejemplo, ReadOnly, Private).

-Force

Fuerza el comando a sobrescribir una variable de solo lectura existente.

-Description

Agrega una descripción para la variable.

-Visibility

Establece la visibilidad de la variable (Pública o Privada).

Asignación usando Set-Variable en PowerShell

El cmdlet Set-Variable tiene la siguiente sintaxis para establecer variables en PowerShell. Le permite asignar un valor a una variable utilizando una sintaxis más explícita.


Set-Variable -Name <variable-Name> -Value <variable-value>

Para cambiar el valor de una variable existente, pase el nombre de la variable a los parámetros -Name y el valor a los parámetros -value. Por ejemplo, para cambiar el valor de $myVar a 20, usaría el siguiente comando:


Set-Variable -Name myVar -Value 20

Esto sobrescribirá el valor actual almacenado en $myVar con "20". También puede pasar una variable al parámetro -Value para establecer el valor de otra variable:


$var1 = "First Value" 
Set-Variable -Name var2 -Value $var1

Ahora $var2 contiene el valor de $var1.

¿Qué pasa si la variable no existe?

Si intenta cambiar el valor de una variable inexistente, PowerShell la creará automáticamente. Por ejemplo, esto crea una nueva variable $myNewVar y establece el valor en "Nuevo valor de variable" aunque $myNewVar no existía antes:


Set-Variable -Name myNewVar -Value "New variable value"

Esto es útil para escenarios en los que desea cambiar un valor pero no está seguro de si la variable ya existe.

Configuración de variables en PowerShell mediante el operador de asignación

La forma más sencilla de configurar una variable en PowerShell es utilizar el operador de asignación: en PowerShell, las variables se crean y se les asignan valores utilizando el símbolo “$” seguido del nombre de la variable y luego el operador de asignación (=). Por ejemplo, para asignar el valor "123" a una variable llamada "myVar", usaría el siguiente comando:


$myVar = 123

Para configurar varias variables en una línea, sepárelas con punto y coma:


$ComputerName = "Server01"; $UserName = "jdoe"

Una vez asignado, puede acceder al valor de la variable simplemente haciendo referencia a su nombre. Para mostrar el valor de una variable, puede utilizar el cmdlet Write-Output:


Write-Output $myVar

También puede utilizar el cmdlet Write-Host para mostrar el valor de una variable:


Write-Host "The value of myVar is: $myVar"

¿Debo utilizar Set-Variable o $myVar=“valor”?

En PowerShell, a menudo verá variables creadas y valores asignados simplemente haciendo lo siguiente:


$myVar = "Hello"

Entonces, ¿cuándo debería utilizar Set-Variable frente a este enfoque básico? La diferencia clave es que Set-Variable le permite configurar opciones adicionales al crear la variable, como el alcance. También le permite cambiar el valor de una variable existente. Para casos simples en los que solo desea crear una variable y asignar un valor, usar $myVar="value" funciona bien. En general, Set-Variable proporciona más control.

Si bien el operador=es el método más común para asignar un valor a una variable, también puede usar los operadores += y -= para incrementar o disminuir variables, entre otras cosas.

Ejemplos de configuración de variables en PowerShell

La configuración de variables en PowerShell se puede realizar de varias maneras. Aquí están algunos ejemplos:

Ejemplo 1: asignar un valor de cadena a una variable


$myString = "Hello, PowerShell!"

Ejemplo 2: Asignar un valor numérico a una variable


$myNumber = 42

Ejemplo 3: Asignar la salida de un comando a una variable


$myOutput = Get-Process

Ejemplo 4: creación de variables de matriz

El cmdlet Set-Variable también le permite crear estructuras de datos de matrices y tablas hash. Puede definir una variable de matriz:


Set-Variable -Name myArray -Value 1,2,3,4

Ahora $myArray contiene una matriz. Esto proporciona una manera rápida de crear objetos según sea necesario en PowerShell.

Ejemplo 5: Asignación de variable de tabla hash


$Settings = @{
  ComputerName = "Server01"
  UserName = "jdoe"
  ErrorActionPreference = "Stop"
}

#Another way
New-Variable -Name myHashTable -Value @{Key1="Value1";Key2="Value2"}

Establecer el tipo de datos de una variable

De forma predeterminada, las variables de PowerShell no tienen tipo y pueden contener cualquier tipo de datos. Sin embargo, al configurar el tipo de datos, exige que la variable solo pueda contener valores de ese tipo específico. La sintaxis para establecer el tipo de datos de una variable en PowerShell es la siguiente:


[data_type]$VariableName = value

A continuación se muestran algunos ejemplos que demuestran cómo configurar el tipo de datos para varias variables.


[int]$myInt = 5
[string]$myString = "Hello, World!"
[bool]$myBool = $true
[datetime]$myDate = Get-Date

Esto es útil cuando necesita un int frente a una cadena frente a otros tipos de datos específicos. Para obtener el tipo de datos de una variable, utilice: $Variable.GetType().Name

Listado de variables en PowerShell

Para enumerar todas las variables en PowerShell, puede utilizar el cmdlet "Get-Variable". Por ejemplo:


Get-Variable

Esto mostrará una lista de todas las variables definidas actualmente en la sesión de PowerShell. También puede utilizar la unidad PowerShell incorporada “Variable:” para obtener todas las variables.


Set-Location Variable:

Dir

Para recuperar el valor de una variable específica, puede utilizar el nombre de la variable precedido por el símbolo "$". Por ejemplo:


$myVariable

Esto mostrará el valor almacenado en la variable "myVariable".

Establecer el alcance de una variable en PowerShell

El alcance de una variable se refiere al contexto en el que la variable es visible y puede usarse. Las variables en PowerShell se pueden clasificar como locales, globales o específicas de script. De forma predeterminada, una variable creada tiene un alcance local, lo que significa que solo está disponible en el alcance actual de la sesión de PowerShell.

El alcance determina la visibilidad y la vida útil de una variable. A continuación se muestran algunos ejemplos del uso de Set-Variable para configurar explícitamente el alcance de una variable.

Los alcances disponibles son:

  • Global: disponible en todas partes
  • Local: solo disponible en el alcance o función actual
  • Script: disponible solo en el script actual
  • Privado: solo disponible en el ámbito actual y en los ámbitos anidados dentro de él.

De forma predeterminada, Set-Variable crea una variable con alcance local. Eso significa que solo estará disponible en el alcance actual. Puede utilizar el parámetro -Scope para cambiar esto:

Crear una variable privada

El ámbito privado evita que una variable se sobrescriba o cambie fuera del ámbito de definición. Esto protege la integridad del valor de la variable en ese ámbito particular. Las variables privadas se usan comúnmente dentro de funciones para almacenar temporalmente datos que no desea que persistan después de que sale la función.


Set-Variable -Name myPrivate -Value 1 -Scope Private

Comprender el alcance es importante, especialmente cuando se escriben scripts de PowerShell que llaman a funciones o contienen lógica avanzada.

Establecer la visibilidad de la variable:

Por defecto, las variables son públicas. Solo los scripts con los permisos requeridos pueden acceder a la variable privada, pero no serán visibles para el usuario.


Set-Variable -Name "myHiddenVar" -Visibility Private

Solo se puede acceder y cambiar la variable con visibilidad "Privada" desde dentro del alcance donde está definida. Incluso si se encuentra dentro de un ámbito secundario, no podrá acceder a una variable privada desde un ámbito principal. Esto difiere del parámetro -Scope, que determina dónde existe una variable; el parámetro -Visibilidad controla cómo se puede interactuar con él una vez creado.

Comprender las variables públicas y privadas

Variables públicas: las variables que se declaran sin ningún modificador de alcance son públicas de forma predeterminada. Las variables públicas son accesibles en todas partes en el ámbito actual y en los ámbitos secundarios. Por ejemplo:


$myVar = "Hello"

Variables privadas: Las variables declaradas con el modificador de alcance privado son privadas. Solo se puede acceder a las variables privadas en el ámbito actual, no en ningún ámbito secundario. Por ejemplo:


$private:myPrivateVar = "Private"

O utilizar implícitamente:


function MyFunction {
    $MyPrivateVariable = "I am private within MyFunction."
}

Entonces, en resumen:

  • Público: Accesible en ámbitos actual e secundario.
  • Privado: solo accesible en el ámbito actual
  • Utilice Get-Variable para acceder a variables privadas desde ámbitos secundarios

Variables globales en PowerShell

De forma predeterminada, las variables en PowerShell son locales en el ámbito en el que están definidas. Sin embargo, puede crear variables globales a las que se pueda acceder desde cualquier ámbito dentro de su secuencia de comandos. Para crear una variable global, utilice el cmdlet New-Variable con el parámetro -Scope establecido en Global:


New-Variable -Name myGlobalVar -Value "Hello, world!" -Scope Global

También puede declarar una variable global utilizando el identificador de alcance “$global:VariableName”.


$global:username = "Admin"

Para acceder a una variable global desde cualquier ámbito dentro de su script, puede usar el prefijo $Global::


Write-Host $Global:myGlobalVar

¿Cómo hacer que una variable sea de solo lectura?

A veces, es posible que desee crear variables de solo lectura que no se puedan cambiar una vez configuradas. Esto puede resultar útil cuando desee proteger la integridad de los datos almacenados en la variable. Para crear una variable de solo lectura, puede usar el parámetro -Option de Set-Variable con el valor "ReadOnly". He aquí un ejemplo:


Set-Variable -Name 'Variable' -Value 123 -Option ReadOnly

El comando anterior crea una variable de solo lectura llamada "Variable" con el valor "123". Una vez establecido, el valor de la variable no se puede cambiar a menos que se utilice el parámetro -Force.

Constante: Las variables con la opción constante no se pueden modificar ni eliminar. Para configurar las opciones de una variable, puede utilizar el parámetro -Option seguido de la opción “constante” deseada. Por ejemplo:


Set-Variable -Name 'Variable' -Value 123 -Option Constant

El comando anterior establece las opciones para la variable "Variable" en Constante.

Borrar variables en PowerShell

Para borrar el valor de una variable en PowerShell, puede utilizar el cmdlet "Clear-Variable" seguido del nombre de la variable. Puede borrar una variable usando Remove-Variable o simplemente configurarla en $null. Por ejemplo:


Clear-Variable -Name myVariable

Esto eliminará el valor almacenado en la variable "myVariable". De manera similar, puede borrar múltiples variables usando comodines como:


Clear-Variable -Name myVar*

Para borrar todas las variables en PowerShell, simplemente puede cerrar y volver a abrir la consola de PowerShell o PowerShell ISE. También puede asignar $null al valor de la variable para borrar su valor.

Eliminar variables en PowerShell

Además de borrar variables, también puede eliminar variables en PowerShell utilizando el cmdlet "Remove-Variable". Este cmdlet elimina permanentemente la variable de la memoria. Por ejemplo:


Remove-Variable -Name age

Esto eliminará la variable "edad" de su sesión.

Establecer descripciones de variables

Es una buena práctica proporcionar descripciones de las variables para documentar su propósito y uso. Las descripciones pueden ayudar a otros creadores de scripts a comprender la intención de la variable y utilizarla correctamente.

Para agregar una descripción a una variable, puede utilizar el parámetro -Description de Set-Variable. He aquí un ejemplo:


Set-Variable -Name 'Variable' -Value 123 -Description 'This variable has a description'

El comando anterior establece el valor de la variable denominada "Variable" en "123" y le agrega una descripción.

Para ver la descripción de una variable, puede utilizar el cmdlet Get-Variable. Por ejemplo:


Get-Variable -Name 'Variable'

Esto mostrará el nombre, el valor y la descripción de la variable.

Configuración de variables de entorno a través de PowerShell

Las variables de entorno proporcionan una forma de configurar dinámicamente los ajustes de PowerShell y otros programas. Para configurar una variable de entorno en PowerShell, use el cmdlet Set-Item en la unidad Env: así. Por ejemplo, supongamos que tiene una carpeta llamada Scripts donde almacena todos los scripts de utilidades y desea agregar esta carpeta a la RUTA de su sistema para poder ejecutar estos scripts desde cualquier lugar.


[Environment]::SetEnvironmentVariable("PATH", "$($env:PATH);C:\Scripts", [EnvironmentVariableTarget]::User)

Más información aquí: ¿Cómo configurar variables de entorno usando PowerShell?

Errores que se deben evitar en las variables de PowerShell

Al trabajar con variables en PowerShell, también existen varios errores que se deben evitar:

  1. Sobrescribir variables: tenga cuidado de no sobrescribir accidentalmente el valor de una variable. Esto puede generar resultados inesperados en su secuencia de comandos.
  2. Uso excesivo de variables globales: como se mencionó anteriormente, las variables globales pueden hacer que su código sea más difícil de mantener y depurar. Úsalos con moderación.
  3. No inicializar variables: no inicializar una variable puede provocar errores en el script.

Mejores prácticas para configurar y administrar variables en PowerShell

Al trabajar con variables en PowerShell, existen varias prácticas recomendadas que se deben tener en cuenta:

  1. Utilice nombres de variables descriptivos: elija nombres de variables que sean significativos y descriptivos. Esto hace que sea más fácil comprender el propósito de la variable al leer el script.
  2. Utilice convenciones de nomenclatura coherentes: utilice una convención de nomenclatura coherente para sus variables para que su código sea más fácil de leer y mantener. Evite el uso de caracteres especiales y comience con una letra. Además, PowerShell no distingue entre mayúsculas y minúsculas, pero es una buena práctica ceñirse a un caso específico para facilitar la lectura.
  3. Inicializar variables: inicialice siempre las variables con un valor predeterminado, incluso si planea cambiarlo más adelante en su secuencia de comandos.
  4. Utilice el tipo correcto: utilice el tipo de variable adecuado para sus datos para garantizar que su secuencia de comandos se ejecute de manera eficiente y evite errores.
  5. Evite las variables globales: las variables globales pueden hacer que su código sea más difícil de depurar y mantener. Siempre que sea posible, utilice variables locales.
  6. Para gestionar eficazmente las variables en PowerShell, es importante seguir algunas de las mejores prácticas:
  7. Borrar variables cuando ya no sean necesarias: borrar variables cuando ya no sean necesarias libera memoria y evita posibles confusiones o errores.
  8. Evite las variables globales: las variables globales pueden causar efectos secundarios inesperados y hacer que su código sea más difícil de depurar. Siempre que sea posible, limite el alcance de sus variables a las funciones o scripts específicos donde sean necesarios.
  9. Utilice el alcance de las variables adecuado: PowerShell admite diferentes alcances de variables, como global, script, local y privado. Comprender y utilizar el alcance apropiado para sus variables puede ayudar a prevenir conflictos de nombres y mejorar la legibilidad del código.

Resumen

  • Las variables en PowerShell pueden almacenar y manipular datos para hacer que sus scripts sean más flexibles.
  • Utilice el cmdlet Set-Variable para crear o cambiar el valor de una variable.
  • Comprenda el alcance de sus variables: local, global o específica de script.
  • Asigne valores predeterminados y establezca variables como de solo lectura o privadas según sea necesario.
  • Aproveche el entorno y las variables automáticas para secuencias de comandos más dinámicas.

Esta guía pretendía ser un recurso integral para dominar las variables en PowerShell. El uso adecuado de las variables no sólo hará que sus scripts sean más eficientes sino también más fáciles de leer y administrar.

Terminando

Las variables son un concepto fundamental en PowerShell, que le permite almacenar y manipular datos dentro de sus scripts. En esta guía completa, hemos explorado los conceptos básicos del trabajo con variables en PowerShell. Aprendimos cómo declarar, configurar, asignar, enumerar, borrar y eliminar variables en PowerShell. Además, analizamos varios aspectos de la configuración de variables en PowerShell, incluida la asignación básica, el uso del cmdlet Set-Variable, el alcance de la variable, las variables de solo lectura, las descripciones de las variables, las opciones y las mejores prácticas.

Recuerde utilizar nombres de variables descriptivos, inicializar sus variables y elegir el tipo de variable apropiado para sus datos. Al dominar estas técnicas, podrá aprovechar el poder de las variables de PowerShell para mejorar sus tareas de automatización y secuencias de comandos. ¡Felices secuencias de comandos de PowerShell!

Artículos relacionados