Como usar o símbolo @ no PowerShell

  1. Use o Símbolo @ para Criar um Array no PowerShell
  2. Use o Símbolo @ para Criar uma Tabela Hash no PowerShell
  3. Use o Símbolo @ para Here-Strings no PowerShell
  4. Use o Símbolo @ para Realizar Splatting com Arrays no PowerShell
  5. Use o Símbolo @ para Realizar Splatting com Tabelas Hash no PowerShell
  6. Conclusão
Criamos um vídeo detalhado no YouTube para acompanhar este artigo, incorporado abaixo!
Como usar o símbolo @ no PowerShell

PowerShell, uma poderosa linguagem de script e shell de linha de comando, é conhecida por sua flexibilidade e conjunto de recursos extensivo. Uma das funcionalidades menos conhecidas, mas incrivelmente potentes, do PowerShell é o uso do símbolo @.

Este artigo investiga as aplicações multifacetadas do símbolo @ na programação PowerShell, revelando suas capacidades na criação de arrays, tabelas hash e strings aqui, particularmente na técnica avançada de splatting. Splatting, um método de passar parâmetros para funções e cmdlets, aprimora significativamente a legibilidade e a manutenibilidade dos scripts.

Ao explorar esses usos do símbolo @, o artigo serve como um guia abrangente tanto para iniciantes quanto para usuários experientes de PowerShell que buscam aproveitar todo o potencial desta linguagem de script.

Use o Símbolo @ para Criar um Array no PowerShell

No PowerShell, o símbolo @ é versátil, mas um de seus papéis fundamentais é na criação e manipulação de arrays. Arrays são essenciais em qualquer linguagem de programação, servindo como uma maneira de armazenar e manipular uma coleção de elementos.

O símbolo @ do PowerShell fornece um método claro e conciso para definir arrays, garantindo que até mesmo elementos únicos ou resultados de comandos sejam tratados como arrays.

Exemplo:

# 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
}

Neste script, primeiro definimos uma função Print que recebe um único parâmetro $message e usa Write-Host para exibi-lo. Esta função serve como um mecanismo básico de saída para a nossa demonstração.

Em seguida, criamos um array, $numbers, usando o símbolo @. Este array é inicializado com cinco números: 1, 2, 3, 4 e 5.

Note o uso de @() em torno dos números, garantindo que sejam tratados como um array.

Após a criação do array, usamos um loop foreach para iterar sobre cada elemento no array $numbers. Dentro do loop, chamamos nossa função Print, passando cada número por sua vez.

Saída:

use @ símbolo no powershell - saída 1

Use o Símbolo @ para Criar uma Tabela Hash no PowerShell

Uma tabela hash é uma estrutura de dados compacta que armazena uma ou mais chaves e valores emparelhados. Também é conhecida como dicionário ou array associativo.

A sintaxe para criar uma tabela hash no PowerShell começa com o símbolo @. As chaves e valores estão enclausurados entre colchetes {}.

Exemplo:

# 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"
}

Neste script, começamos definindo uma função Print, que é uma utilidade básica para output de mensagens no host.

Em seguida, criamos uma tabela hash $employee usando o símbolo @. Esta tabela hash contém três pares chave-valor representando o nome, o departamento e a posição de um empregado.

Após definir a tabela hash, usamos um loop foreach para iterar através de cada chave na tabela. Dentro do loop, recuperamos o valor correspondente a cada chave e então usamos nossa função Print para exibir tanto a chave quanto seu valor.

Saída:

use @ símbolo no powershell - saída 2

Use o Símbolo @ para Here-Strings no PowerShell

Outra importante utilização do símbolo @ é para definir here-strings no PowerShell. As aspas são interpretadas literalmente em uma here-string.

A principal finalidade das here-strings no PowerShell é simplificar o manuseio de strings longas, particularmente aquelas que requerem formatação específica, quebras de linha ou caracteres especiais. O manuseio regular de strings no PowerShell, usando aspas simples ' ou aspas duplas ", pode se tornar complicado com textos multilineares.

Exemplo:

# 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

Neste script, começamos definindo uma função Print para exibir a saída.

Em seguida, definimos uma variável $name configurada para John. Após isso, criamos uma here-string expansível $multiLineText.

Note como os delimitadores @" "@ são usados para iniciar e finalizar a string de múltiplas linhas. Dentro desta here-string, a variável $name é incluída, que será expandida para seu valor.

Finalmente, chamamos a função Print para exibir o conteúdo de nossa here-string.

Saída:

use @ symbol in powershell - saída 3

Uma here-string contém todos os textos entre @" "@.

Here-string com aspas 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

Em nosso script, começamos definindo uma função Print que exibe uma mensagem dada no host.

Em seguida, criamos uma here-string de aspas simples chamada $literalText. Os delimitadores @' '@ indicam o início e o fim da here-string.

Dentro desses delimitadores, incluímos texto que menciona caracteres especiais como $ e crase `, que normalmente teriam significados especiais no PowerShell.

Finalmente, chamamos a função Print para exibir o conteúdo de nossa here-string.

Saída:

usar o símbolo @ no powershell - saída 4

Em here-strings com aspas simples, as variáveis são interpretadas literalmente e impressas na saída, mas não em here-strings com aspas duplas.

Use o Símbolo @ para Realizar Splatting com Arrays no PowerShell

Splatting é principalmente usado para melhorar a legibilidade e a manutenibilidade dos scripts, especialmente ao lidar com comandos que requerem um grande número de parâmetros. Em vez de listar cada parâmetro e seu valor diretamente no comando, o splatting permite que você os defina em um array ou tabela hash e os passe de uma só vez usando o símbolo @.

Você pode usar o símbolo @ para splatting arrays no comando. O símbolo @ pode usar um array para splat valores para parâmetros de posição que não precisam dos nomes dos parâmetros.

Exemplo:

# 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

Neste exemplo, começamos definindo uma função Print-Message que recebe três parâmetros e os exibe em uma string formatada.

Em seguida, criamos um array $paramArray contendo três valores de string: Hello, PowerShell e Splatting. Esses valores correspondem aos parâmetros $part1, $part2 e $part3 de nossa função.

Ao chamar a função Print-Message, usamos splatting para passar o array de parâmetros. O símbolo @ antes de $paramArray indica que os elementos do array devem ser mapeados para os parâmetros da função em sua respectiva ordem.

Saída:

use @ symbol em powershell - saída 5

Use o Símbolo @ para Realizar Splatting com Tabelas Hash no PowerShell

De forma semelhante, você pode usar o símbolo @ para splatting com tabelas hash.

A principal finalidade do splatting com tabelas hash é simplificar o processo de passar parâmetros para funções e cmdlets no PowerShell. Isso se torna particularmente valioso na gestão de comandos complexos com numerosos parâmetros, melhorando a legibilidade e a manutenibilidade do código.

Splatting permite uma maneira mais estruturada e limpa de especificar parâmetros, o que é benéfico na depuração e edição de scripts.

Exemplo:

# 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

Em nosso script, primeiro definimos uma função Get-Greeting que aceita dois parâmetros: Name e TimeOfDay.

Em seguida, criamos uma tabela hash $greetingParams e a populamos com as chaves Name e TimeOfDay, atribuindo-lhes os valores 'Alice' e 'Morning', respectivamente. Essas chaves correspondem aos nomes dos parâmetros da função Get-Greeting.

Ao chamar Get-Greeting, usamos splatting prefixando a variável da tabela hash $greetingParams com o símbolo @. Esta ação mapeia as chaves da tabela hash para os parâmetros correspondentes da função.

Saída:

use @ symbol no powershell - saída 6

Conclusão

Ao longo deste artigo, exploramos as aplicações versáteis do símbolo @ no PowerShell, um aspecto que muitas vezes passa despercebido, mas que possui imenso potencial na programação. Desde a criação de arrays e tabelas hash até a definição de here-strings e a implementação de splatting, o símbolo @ é uma pequena, mas poderosa ferramenta no arsenal de um programador PowerShell.

Sua capacidade de simplificar a passagem complexa de parâmetros e aprimorar a legibilidade do código é particularmente notável no contexto de splatting com arrays e tabelas hash. Como vimos, o uso do símbolo @ no PowerShell não é apenas uma questão de sintaxe, mas um portal para práticas de script mais eficientes, legíveis e mantidas.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website