Como usar o símbolo @ no PowerShell
-
Use o Símbolo
@
para Criar um Array no PowerShell -
Use o Símbolo
@
para Criar uma Tabela Hash no PowerShell -
Use o Símbolo
@
para Here-Strings no PowerShell -
Use o Símbolo
@
para Realizar Splatting com Arrays no PowerShell -
Use o Símbolo
@
para Realizar Splatting com Tabelas Hash no PowerShell - Conclusão

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 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 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:
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:
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 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:
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.