Cómo usar el símbolo @ en PowerShell
-
Usa el símbolo
@
para crear un arreglo en PowerShell -
Usa el símbolo
@
para crear una tabla hash en PowerShell -
Usa el símbolo
@
para aquí-cadenas en PowerShell -
Usa el símbolo
@
para realizar splatting con arreglos en PowerShell -
Usa el símbolo
@
para realizar splatting con tablas hash en PowerShell - Conclusión

PowerShell, un poderoso lenguaje de scripting y shell de línea de comandos, es conocido por su flexibilidad y amplia gama de características. Una de las características menos conocidas pero increíblemente potentes de PowerShell es el uso del símbolo @
.
Este artículo profundiza en las multifacéticas aplicaciones del símbolo @
en scripting de PowerShell, revelando sus capacidades en la creación de arreglos, tablas hash y aquí-cadenas, particularmente en la técnica avanzada de splatting. Splatting, un método para pasar parámetros a funciones y cmdlets, mejora significativamente la legibilidad y mantenibilidad del script.
Al explorar estos usos del símbolo @
, el artículo sirve como una guía completa tanto para principiantes como para usuarios experimentados de PowerShell que buscan aprovechar todo el potencial de este lenguaje de scripting.
Usa el símbolo @
para crear un arreglo en PowerShell
En PowerShell, el símbolo @
es versátil, pero uno de sus roles fundamentales es en la creación y manipulación de arreglos. Los arreglos son esenciales en cualquier lenguaje de programación, sirviendo como una forma de almacenar y manipular una colección de elementos.
El símbolo @
de PowerShell proporciona un método claro y conciso para definir arreglos, asegurando que incluso los elementos individuales o los resultados de los comandos se traten como arreglos.
Ejemplo:
# Define a simple Print function
function Print($message) {
Write-Host $message
}
# Create an array of numbers
$numbers = @(1, 2, 3, 4, 5)
# Iterate over the array and print each number
foreach ($number in $numbers) {
Print $number
}
En este script, primero definimos una función Print
que toma un solo parámetro $message
y usa Write-Host
para mostrarlo. Esta función sirve como un mecanismo básico de salida para nuestra demostración.
A continuación, creamos un arreglo, $numbers
, usando el símbolo @
. Este arreglo se inicializa con cinco números: 1
, 2
, 3
, 4
y 5
.
Nota el uso de @()
alrededor de los números, asegurando que se traten como un arreglo.
Tras la creación del arreglo, utilizamos un bucle foreach
para iterar sobre cada elemento en el arreglo $numbers
. Dentro del bucle, llamamos a nuestra función Print
, pasando cada número en orden.
Salida:
Usa el símbolo @
para crear una tabla hash en PowerShell
Una tabla hash es una estructura de datos compacta que almacena una o más parejas de claves y valores. También se conoce como diccionario o arreglo asociativo.
La sintaxis para crear una tabla hash en PowerShell comienza con el símbolo @
. Las claves y los valores están encerrados en los corchetes {}
.
Ejemplo:
# Define a simple Print function
function Print($message) {
Write-Host $message
}
# Create a hashtable of employee details
$employee = @{
Name = 'John Doe'
Department = 'IT'
Position = 'Analyst'
}
# Iterate over the hashtable and print each detail
foreach ($key in $employee.Keys) {
$value = $employee[$key]
Print "Key: $key, Value: $value"
}
En este script, comenzamos definiendo una función Print
, que es una utilidad básica para mostrar mensajes en el host.
A continuación, creamos una tabla hash $employee
usando el símbolo @
. Esta tabla hash contiene tres parejas clave-valor representando el nombre de un empleado, departamento y posición.
Después de definir la tabla hash, utilizamos un bucle foreach
para iterar a través de cada clave en la tabla hash. Dentro del bucle, recuperamos el valor correspondiente a cada clave y luego usamos nuestra función Print
para mostrar tanto la clave como su valor.
Salida:
Usa el símbolo @
para aquí-cadenas en PowerShell
Otro uso importante del símbolo @
es definir aquí-cadenas en PowerShell. Las comillas se interpretan literalmente en una aquí-cadena.
El propósito principal de las aquí-cadenas en PowerShell es simplificar el manejo de cadenas largas, particularmente aquellas que requieren un formato específico, saltos de línea o caracteres especiales. El manejo regular de cadenas en PowerShell, usando comillas simples '
o comillas dobles "
, puede volverse engorroso con textos multilineales.
Ejemplo:
# Define a simple Print function
function Print($message) {
Write-Host $message
}
# Define a variable
$name = "John"
# Create an expandable here-string
$multiLineText = @"
Hello, $name!
Welcome to PowerShell scripting.
This is an example of a multi-line here-string.
"@
# Print the here-string
Print $multiLineText
En este script, comenzamos definiendo una función Print
para mostrar la salida.
Luego definimos una variable $name
establecida en John
. Después de esto, creamos una aquí-cadena expandible $multiLineText
.
Nota cómo se utilizan los delimitadores @" "@
para iniciar y finalizar la cadena multilineal. Dentro de esta aquí-cadena, se incluye la variable $name
, que será expandida a su valor.
Finalmente, llamamos a la función Print
para mostrar el contenido de nuestra aquí-cadena.
Salida:
Una aquí-cadena contiene todos los textos entre @" "@
.
Aquí-cadena con comillas simples:
# Define a simple Print function
function Print($message) {
Write-Host $message
}
# Create a single-quoted here-string
$literalText = @'
This is an example of a single-quoted here-string.
Special characters like $ or ` won't be processed.
Everything here is treated as literal text.
'@
# Print the here-string
Print $literalText
En nuestro script, comenzamos definiendo una función Print
que muestra un mensaje dado en el host.
A continuación, creamos una aquí-cadena de comillas simples llamada $literalText
. Los delimitadores @' '@
indican el inicio y el final de la aquí-cadena.
Dentro de estos delimitadores, incluimos texto que menciona caracteres especiales como $
y backtick ```, que normalmente tendrían significados especiales en PowerShell.
Finalmente, llamamos a la función Print
para mostrar el contenido de nuestra aquí-cadena.
Salida:
En las aquí-cadenas de comillas simples, las variables se interpretan literalmente y se imprimen en la salida, pero no en las aquí-cadenas de comillas dobles.
Usa el símbolo @
para realizar splatting con arreglos en PowerShell
El splatting se usa principalmente para mejorar la legibilidad y mantenibilidad del script, especialmente al tratar con comandos que requieren un gran número de parámetros. En lugar de listar cada parámetro y su valor directamente en el comando, el splatting permite definirlos en un arreglo o tabla hash y pasarlos todos a la vez usando el símbolo @
.
Puedes usar el símbolo @
para splatting arreglos en el comando. El símbolo @
puede usar un arreglo para splat valores para parámetros de posición que no necesitan los nombres de los parámetros.
Ejemplo:
# Define a simple Print function
function Print-Message($part1, $part2, $part3) {
Write-Host "$part1 - $part2 - $part3"
}
# Define an array of parameters
$paramArray = @('Hello', 'PowerShell', 'Splatting')
# Call the function using splatting
Print-Message @paramArray
En este ejemplo, comenzamos definiendo una función Print-Message
que toma tres parámetros y los imprime en una cadena formateada.
Luego creamos un arreglo $paramArray
que contiene tres valores de cadena: Hello
, PowerShell
y Splatting
. Estos valores corresponden a los parámetros $part1
, $part2
y $part3
de nuestra función.
Al llamar a la función Print-Message
, usamos splatting para pasar el arreglo de parámetros. El símbolo @
antes de $paramArray
indica que los elementos del arreglo deben ser mapeados a los parámetros de la función en su respectivo orden.
Salida:
Usa el símbolo @
para realizar splatting con tablas hash en PowerShell
De manera similar, puedes usar el símbolo @
para splatting de tablas hash.
El propósito principal del splatting con tablas hash es simplificar el proceso de pasar parámetros a funciones y cmdlets en PowerShell. Se vuelve particularmente valioso al gestionar comandos complejos con numerosos parámetros, mejorando la legibilidad y mantenibilidad del código.
El splatting permite una forma más estructurada y clara de especificar parámetros, lo cual es beneficioso en la depuración y edición de scripts.
Ejemplo:
# Define a simple function
function Get-Greeting {
param (
[string]$Name,
[string]$TimeOfDay
)
"Good $TimeOfDay, $Name!"
}
# Define a hash table of parameters
$greetingParams = @{
Name = 'Alice'
TimeOfDay = 'Morning'
}
# Call the function using splatting
$greeting = Get-Greeting @greetingParams
Write-Host $greeting
En nuestro script, primero definimos una función Get-Greeting
que acepta dos parámetros: Name
y TimeOfDay
.
A continuación, creamos una tabla hash $greetingParams
y la poblamos con las claves Name
y TimeOfDay
, asignándoles los valores 'Alice'
y 'Morning'
, respectivamente. Estas claves corresponden a los nombres de los parámetros de la función Get-Greeting
.
Al llamar a Get-Greeting
, usamos splatting prefijando la variable de la tabla hash $greetingParams
con el símbolo @
. Esta acción mapea las claves de la tabla hash a los parámetros correspondientes de la función.
Salida:
Conclusión
A lo largo de este artículo, hemos explorado las versátiles aplicaciones del símbolo @
en PowerShell, un aspecto que a menudo pasa desapercibido pero que tiene un inmenso potencial en scripting. Desde la creación de arreglos y tablas hash hasta la definición de aquí-cadenas y la implementación de splatting, el símbolo @
es una herramienta pequeña pero poderosa en el arsenal de un programador de PowerShell.
Su capacidad para simplificar el paso de parámetros complejos y mejorar la legibilidad del código es particularmente notable en el contexto de splatting con arreglos y tablas hash. Como hemos visto, el uso del símbolo @
en PowerShell no es solo una cuestión de sintaxis, sino una puerta de entrada a prácticas de scripting más eficientes, legibles y mantenibles.