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.
