Magic Quadrant™ para la gestión de acceso privilegiado 2025: Netwrix reconocida por cuarto año consecutivo. Descarga el informe.

Plataforma
Centro de recursosBlog
Cómo usar las variables de PowerShell

Cómo usar las variables de PowerShell

Oct 4, 2018

Las variables de PowerShell actúan como contenedores para datos que pueden ser creados, modificados y utilizados en scripts o sesiones. Soportan múltiples tipos, incluyendo cadenas de texto, enteros, arreglos y tablas de hash, y pueden tener un alcance local, global o basado en scripts. Los administradores pueden establecer descripciones, visibilidad y opciones, listar o limpiar variables, y exportar sus contenidos. El uso adecuado de variables simplifica la automatización y la eficiencia de los scripts.

Introducción

Una variable en PowerShell es un contenedor al que se le asigna un valor. Piense en ellas como cajas nombradas donde puede colocar información para usar más tarde. El valor de una variable se puede acceder simplemente haciendo referencia a la variable, y se puede cambiar en cualquier momento reasignando la variable con un nuevo valor. Las variables son muy útiles para realizar un seguimiento de los datos en scripts o durante una sesión de PowerShell.

Ejemplos de variables de PowerShell

Sumergámonos en algunas de las formas más útiles de utilizar variables en PowerShell.

Crear y establecer variables en PowerShell

Los nombres de variables en PowerShell comienzan con un signo de dólar ($), y no son sensibles a mayúsculas y minúsculas, así que, por ejemplo, $VAR y $var se refieren a la misma variable. Un nombre de variable puede contener letras, números y guiones bajos. Aunque pueden contener espacios y otros caracteres especiales, es mejor evitarlos.

Una vez que hayas elegido un nombre para una variable en PowerShell, puedes crearla y asignarle un valor en un solo comando. Por ejemplo, si quieres crear una variable llamada $Greeting y asignarle el valor de cadena Hello, World, utilizarías este comando:

      $Greeting = "Hello, World"
      

Después de este comando, cada vez que escriba $Greeting, PowerShell sustituirá el valor que asignó a esa variable, como se muestra a continuación.

Image

Las comillas dobles (“ ”) en el ejemplo anterior indican que el valor es una cadena. Aquí te mostramos cómo puedes crear una variable y asignarle un valor entero:

      $var1 = 75

$var2 = 25
      

Puede realizar operaciones aritméticas con variables numéricas, como se muestra aquí:

Image

También puedes combinar cadenas utilizando el signo más (+) como operador:

      $var10 = “Complete”

$var11 = “Visibility

$var12 = $var10 + $var11
      
Image

Si agregas un número a un texto, el número se convierte automáticamente en texto:

      $var1 = “Netwrix”

$var2 = 2023
      
Image

Establecer o verificar el tipo de una variable

Las variables en PowerShell pueden almacenar múltiples tipos de datos, incluyendo cadenas, enteros y objetos más complejos como arreglos. Cuando asignas un valor a una variable, PowerShell determina automáticamente el tipo de dato basado en el valor. Esto se conoce como tipado dinámico. Como se mencionó anteriormente, las cadenas requieren comillas.

Aquí hay algunos ejemplos:

      $var1 = "Hello"   # The type of $var1 is String

$var2 = 25        # The type of $var2 is Integer

$var3 = Get-Date # The type of $var3 is DateTime
      

Para averiguar de qué tipo es una variable, utilizamos el parámetro GetType:

      $var5 = “Netwrix”
$var5.GetType () .FullName
      
Image

Los tipos de variables más comunes incluyen los siguientes:

  • Cadena: Texto (puedes declarar una cadena encerrando el texto entre comillas)
  • Entero: Un número entero
  • Doble: Un número que incluye un punto decimal
  • Boolean: Un valor de verdad, ya sea $True o $False
  • DateTime: Una fecha y hora
  • Array: Una estructura de datos que contiene una colección de elementos del mismo tipo o de diferentes tipos. Los elementos se almacenan secuencialmente y se pueden acceder mediante un índice. Aquí hay un ejemplo de cómo declarar un array:
      $myArray = "apple", "orange", "cherry"
      
  • HashTable: Una estructura de datos que comprende una colección desordenada de pares clave-valor. Es como un diccionario donde usas una clave única para almacenar y recuperar cada valor. Esto hace que las tablas hash sean excelentes para búsquedas y escenarios donde necesitas buscar valores fácilmente. Para crear una tabla hash, usas @{}. Dentro de las llaves, especificas cada par como la clave seguida de un signo igual (=) y luego el valor, como se ilustra en este ejemplo:
      $myHashtable = @{

    "Fruit1" = "Apple"

    "Fruit2" = "Orange"

    "Fruit3" = "Cherry"

}
      

Definir el alcance de una variable

El alcance es la visibilidad y accesibilidad de una variable. PowerShell tiene varios alcances diferentes:

  • Local — El alcance actual
  • Global —El ámbito que está en efecto cuando PowerShell inicia o cuando creas una nueva sesión o espacio de ejecución
  • Script — El ámbito que se crea mientras se ejecuta un script

Las variables se especifican en PowerShell de la siguiente manera:

      $global:Var1 = "Global Variable"

$script:Var2 = "Script Variable"

$local:Var3 = "Local Variable"
      

Automatice tareas con Netwrix Directory Manager

Simplifique la gestión de grupos y automatice tareas sin scripts complejos de PowerShell

Variables públicas vs. privadas

La propiedad de Visibility de una variable está relacionada con el alcance; determina si puedes ver el elemento fuera del script en el que fue creado. La propiedad de Visibility puede tener un valor de Public o Private. Las variables Private solo se pueden ver y cambiar en el alcance en el que fueron creadas. Las variables Public son accesibles desde cualquier alcance.

Listar (Obtener) Variables en el Ámbito Actual

Puede listar todas las variables actuales en una sesión de PowerShell utilizando el cmdlet Get-Variable, que recupera todas las variables en el ámbito actual. El ejemplo a continuación enumera algunas de las variables utilizadas en ejemplos anteriores.

Image

Imprimir una Variable

Puede generar una variable en un archivo .txt, .csv o HTML.

Para escribir en un archivo .txt, utilice el comando Out-File :

      $var5 = “Hello World”

$var5 | Out-File c:scriptsHello_World.txt
      

Para exportar datos a un archivo .csv, utilice el comando Export-Csv :

      $var6 = Get-Process

$var6 | SELECT Name, Path | Export-Csv -Path c:scriptsprocesses.csv
      
Image

Y para escribir en un archivo HTML, utilice el comando ConvertTo-Html:

      $var6 = Get-Process

$var6 | ConvertTo-HTML -Property Name, Path>C:scriptprocesses.html
      

Para leer un archivo que exportaste, utiliza el cmdlet Get-Content:

      Get-Content c:\scripts\processes.csv
      
Image

Borrar una Variable

El cmdlet Clear-Variable se utiliza para eliminar el valor de una variable pero deja el objeto de la variable en sí. Cuando se limpia una variable, la variable sigue existiendo, pero su valor es $null. En el ejemplo a continuación, se crea una variable y luego se limpia, confirmando cada acción.

Image

Eliminar una variable

El cmdlet Remove-Variable se utiliza para eliminar una variable y su valor.

En el ejemplo a continuación, se crea una variable llamada Example y se le asigna la cadena “¡Hola Mundo!”. Luego, la variable se elimina con el cmdlet Remove-Variable. Después, el script verifica la variable y devuelve un error porque ya no existe.

Image

Tenga en cuenta que el cmdlet Remove-Variable solo elimina la variable en el ámbito actual. Si hay una variable con el mismo nombre en un ámbito superior, esa variable no se verá afectada. De manera similar, el cmdlet Remove-Variable no afecta a ningún ámbito secundario que pueda contener una variable con el mismo nombre.

La diferencia entre los comandos Clear-Variable y Remove-Variable es que limpiar la variable elimina solo el valor de la variable, mientras que eliminarla borra la variable en sí.

Parámetros

Los cmdlets discutidos anteriormente toman varios parámetros. Revisemos los parámetros más útiles y cómo funcionan.

Descripción

PowerShell variables have a Description property that you can set using the Set-Variable cmdlet with the Description parameter:

      Set-Variable -Name "myVariable" -Description "This is my sample variable"
      

Excluir

Para excluir ciertas variables cuando estás utilizando el cmdlet Get-Variable, usa el parámetro Exclude y especifica los nombres de las variables a excluir. En el ejemplo a continuación, creamos 4 variables. Luego utilizamos el comando Get-Variable -Exclude para excluir dos de ellas.

      $Var1 = "Test1"

$Var2 = "Test2"

$Var3 = "Test3"

$OtherVar = "Other"

Get-Variable -Exclude Var1, OtherVar
      

(Para incluir solo variables específicas, utilice el parámetro Name como se describe a continuación.)

Fuerza

Puede utilizar el parámetro Force con algunos comandos, como Set-Variable y Remove-Variable, para anular cualquier restricción que pueda impedir que el comando se complete.

Por ejemplo, normalmente cualquier intento de cambiar el valor de una variable de solo lectura resultará en un error, como se muestra a continuación:

Image

Sin embargo, puedes anular este comportamiento con el parámetro Force:

Image

Nombre

Puede usar el parámetro Name para referirse a una variable por su nombre sin el signo de dólar. En particular, puede usarlo para obtener solo las variables cuyos nombres coincidan con un patrón específico. Por ejemplo, utilizando el cmdlet a continuación, puede recuperar solo las variables cuyos nombres comiencen con “Net”:

      Get-Variable -Name "NET*"
      

El asterisco (*) es un carácter comodín que representa cualquier número de caracteres adicionales.

Opción

Puede especificar el parámetro Option con el cmdlet Set-Variable. Los valores disponibles para este parámetro incluyen:

  • Ninguno (predeterminado): La variable se comporta como una variable normal.
  • ReadOnly: La variable no se puede cambiar ni eliminar.
  • Constante: La variable no se puede cambiar ni eliminar, ni siquiera con el parámetro Force.
  • Privado: La variable solo está disponible en el ámbito actual.
  • AllScope: La variable se copia a cualquier nuevo ámbito que se cree.

Un ejemplo de la opción ReadOnly se muestra aquí:

Image

PassThru

Por defecto, la mayoría de los cmdlets que realizan una acción (como Set-Variable, New-Item y Remove-Item) no generan ninguna salida; simplemente completan la acción en silencio. Sin embargo, si utilizas el parámetro PassThru, el cmdlet generará un objeto que representa el elemento que manipulaste con el cmdlet.

Aquí hay un ejemplo de uso de PassThru con Set-Variable:

Image

WhatIf

Puede utilizar el parámetro WhatIf en cmdlets que realizan cambios, como Set-Variable, Remove-Variable o Clear-Variable, para ver qué sucedería si ejecutara el cmdlet, sin realizar ningún cambio real. Esto es útil si no está seguro de lo que haría un cmdlet. A continuación se muestra un ejemplo:

Image

Conclusión

Con un sólido entendimiento de cómo se pueden crear y manipular las variables de PowerShell, puedes crear scripts de PowerShell para asistirte en la automatización de tareas, administración de sistemas, desarrollo de software y más.

Cómo Netwrix puede ayudar

¿Necesita asegurar su Active Directory y el entorno de Entra ID (Azure AD) de manera más eficiente y efectiva? Considere Netwrix Directory Manager. Sus capacidades automatizadas de gestión de grupos y usuarios reducen el riesgo de violaciones de datos mientras eliminan las tareas administrativas manuales que consumen tiempo.

Netwrix Directory Manager le otorga el poder de:

  • Automatice la provisión y desprovisión de usuarios desde su sistema de información de recursos humanos (HRIS) hacia Active Directory, Entra ID y aplicaciones habilitadas para SCIM, permitiendo así que los nuevos empleados sean productivos rápidamente y reduciendo el riesgo de que adversarios tomen control de identidades obsoletas.
  • Actualice automáticamente los grupos de directorios basándose en cambios como la promoción de un empleado o su cambio a otro rol, según se registra en su HRIS. Esta automatización mantiene los derechos de acceso actualizados en tiempo casi real según lo requerido para la seguridad y el cumplimiento, al mismo tiempo que ahorra tiempo al equipo de TI.
  • Delegue la gestión de grupos y usuarios a las personas que saben quién debe tener acceso a qué. Flujos de trabajo sencillos permiten a los propietarios de líneas de negocio revisar sus grupos y aprobar o denegar solicitudes de acceso de usuarios, reduciendo el riesgo de tener grupos y usuarios con demasiados privilegios en su directorio.
  • Mantenga el directorio limpio y más fácil de gestionar con la creación, expiración y eliminación automáticas de usuarios.
  • Mantenga y demuestre el cumplimiento de las regulaciones y estándares con una visión profunda, automatización efectiva e informes claros sobre grupos y miembros.

Tutorial de Windows PowerShell Scripting para Principiantes

Aprende más

Compartir en

Aprende más

Acerca del autor

Asset Not Found

Jonathan Blackwell

Jefe de Desarrollo de Software

Desde 2012, Jonathan Blackwell, un ingeniero e innovador, ha proporcionado liderazgo en ingeniería que ha colocado a Netwrix GroupID a la vanguardia de la gestión de grupos y usuarios para entornos de Active Directory y Azure AD. Su experiencia en desarrollo, marketing y ventas permite a Jonathan comprender completamente el mercado de Identity Management y la forma de pensar de los compradores.