Como usar variáveis do PowerShell
Oct 4, 2018
As variáveis do PowerShell atuam como contêineres para dados que podem ser criados, modificados e utilizados em scripts ou sessões. Elas suportam múltiplos tipos, incluindo strings, inteiros, arrays e hashtables, e podem ter escopo local, global ou baseado em script. Os administradores podem definir descrições, visibilidade e opções, listar ou limpar variáveis e exportar seus conteúdos. O uso adequado de variáveis simplifica a automação e a eficiência de scripts.
Introdução
Uma variável no PowerShell é um contêiner ao qual é atribuído um valor. Pense nelas como caixas nomeadas onde você pode colocar informações para usar mais tarde. O valor de uma variável pode ser acessado simplesmente referenciando a variável, e pode ser alterado a qualquer momento ao reatribuir a variável com um novo valor. Variáveis são muito úteis para acompanhar dados em scripts ou durante uma sessão do PowerShell.
Exemplos de variáveis PowerShell
Vamos mergulhar em algumas das maneiras mais úteis de usar variáveis no PowerShell.
Criar e definir variáveis no PowerShell
Os nomes de variáveis no PowerShell começam com um sinal de dólar ($), e não são sensíveis a maiúsculas e minúsculas, então, por exemplo, $VAR e $var referem-se à mesma variável. Um nome de variável pode conter letras, números e sublinhados. Embora possam conter espaços e outros caracteres especiais, é melhor evitar esses.
Uma vez que você tenha escolhido um nome para uma variável no PowerShell, você pode criá-la e atribuir-lhe um valor em um único comando. Por exemplo, se você quiser criar uma variável chamada $Greeting e atribuir a ela o valor de string Hello, World, você usaria este comando:
$Greeting = "Hello, World"
Após este comando, sempre que você digitar $Greeting, o PowerShell substituirá o valor que você atribuiu a essa variável, conforme mostrado abaixo.
As aspas duplas (“ ”) no exemplo anterior indicam que o valor é uma string. Aqui está como você pode criar uma variável e atribuir a ela um valor inteiro:
$var1 = 75
$var2 = 25
Você pode realizar operações aritméticas com variáveis numéricas, conforme mostrado aqui:
Você também pode combinar strings usando o operador de sinal de mais (+):
$var10 = “Complete”
$var11 = “Visibility
$var12 = $var10 + $var11
Se você adicionar um número a uma string, o número automaticamente se torna uma string:
$var1 = “Netwrix”
$var2 = 2023
Defina ou Verifique o Tipo de uma Variável
Variáveis no PowerShell podem armazenar múltiplos tipos de dados, incluindo strings, inteiros e objetos mais complexos como arrays. Quando você atribui um valor a uma variável, o PowerShell determina automaticamente o tipo de dado baseado no valor. Isso é conhecido como tipagem dinâmica. Como mencionado acima, strings requerem aspas.
Aqui estão alguns exemplos:
$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 descobrir qual o tipo de uma variável, usamos o parâmetro GetType:
$var5 = “Netwrix”
$var5.GetType () .FullName
Os tipos de variáveis mais comuns incluem os seguintes:
- String: Texto (você pode declarar uma string colocando o texto entre aspas)
- Integer: Um número inteiro
- Double: Um número que inclui um ponto decimal
- Boolean: Um valor de verdade, ou $True ou $False
- DateTime: Uma data e hora
- Array: Uma estrutura de dados que contém uma coleção de itens do mesmo tipo ou de tipos diferentes. Os itens são armazenados sequencialmente e podem ser acessados por um índice. Aqui está um exemplo de como declarar um array:
$myArray = "apple", "orange", "cherry"
- HashTable: Uma estrutura de dados que compreende uma coleção não ordenada de pares chave-valor. É como um dicionário onde você usa uma chave única para armazenar e recuperar cada valor. Isso torna as hashtables excelentes para buscas e cenários onde você precisa procurar valores facilmente. Para criar uma hashtable, você usa @{}. Dentro das chaves, você especifica cada par como a chave seguida por um sinal de igual (=) e depois o valor, conforme ilustrado neste exemplo:
$myHashtable = @{
"Fruit1" = "Apple"
"Fruit2" = "Orange"
"Fruit3" = "Cherry"
}
Definir o Escopo de uma Variável
O escopo é a visibilidade e acessibilidade de uma variável. O PowerShell possui vários escopos diferentes:
- Local — O escopo atual
- Global —O escopo que está em vigor quando o PowerShell é iniciado ou quando você cria uma nova sessão ou espaço de execução
- Script — O escopo que é criado enquanto um script é executado
As variáveis são especificadas no PowerShell da seguinte forma:
$global:Var1 = "Global Variable"
$script:Var2 = "Script Variable"
$local:Var3 = "Local Variable"
Automatize tarefas com Netwrix Directory Manager
Simplifique a gestão de grupos e automatize tarefas sem scripts complexos do PowerShell
Variáveis Públicas vs. Privadas
A propriedade Visibility de uma variável está relacionada ao escopo; ela determina se você pode ver o item fora do script no qual foi criado. A propriedade Visibility pode ter um valor de Public ou Private. Variáveis privadas podem ser visualizadas e alteradas apenas no escopo no qual foram criadas. Variáveis públicas são acessíveis de qualquer escopo.
Listar (Obter) Variáveis no Escopo Atual
Você pode listar todas as variáveis atuais em uma sessão do PowerShell usando o cmdlet Get-Variable, que recupera todas as variáveis no escopo atual. O exemplo abaixo lista algumas das variáveis usadas em exemplos anteriores.
Imprimir uma Variável
Você pode gerar uma variável em um arquivo .txt, .csv ou HTML.
Para escrever em um arquivo .txt, use o comando Out-File :
$var5 = “Hello World”
$var5 | Out-File c:scriptsHello_World.txt
Para exportar dados para um arquivo .csv, utilize o comando Export-Csv :
$var6 = Get-Process
$var6 | SELECT Name, Path | Export-Csv -Path c:scriptsprocesses.csv
E para escrever em um arquivo HTML, use o comando ConvertTo-Html:
$var6 = Get-Process
$var6 | ConvertTo-HTML -Property Name, Path>C:scriptprocesses.html
Para ler um arquivo que você exportou, use o cmdlet Get-Content:
Get-Content c:\scripts\processes.csv
Limpar uma variável
O cmdlet Clear-Variable é usado para remover o valor de uma variável, mas mantém o próprio objeto da variável. Quando uma variável é limpa, ela ainda existe, mas seu valor é $null. No exemplo abaixo, uma variável é criada e depois limpa, com cada ação confirmada.
Remover uma Variável
O cmdlet Remove-Variable é utilizado para excluir uma variável e seu valor.
No exemplo abaixo, uma variável chamada Example é criada e atribuída a string “Hello World!”. A variável é então deletada pelo cmdlet Remove-Variable. Depois, o script verifica a variável e retorna um erro porque ela não existe mais.
Observe que o cmdlet Remove-Variable remove apenas a variável no escopo atual. Se houver uma variável com o mesmo nome em um escopo pai, essa variável não será afetada. Da mesma forma, o cmdlet Remove-Variable não afeta quaisquer escopos filhos que possam conter uma variável com o mesmo nome.
A diferença entre os comandos Clear-Variable e Remove-Variable é que limpar a variável deleta apenas o valor da variável, enquanto removê-la deleta a própria variável.
Parâmetros
Os cmdlets discutidos acima aceitam vários parâmetros. Vamos revisar os parâmetros mais úteis e como eles funcionam.
Descrição
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 certas variáveis quando estiver usando o cmdlet Get-Variable, utilize o parâmetro Exclude e especifique os nomes das variáveis a serem excluídas. No exemplo abaixo, criamos 4 variáveis. Em seguida, usamos o comando Get-Variable -Exclude para excluir duas delas.
$Var1 = "Test1"
$Var2 = "Test2"
$Var3 = "Test3"
$OtherVar = "Other"
Get-Variable -Exclude Var1, OtherVar
(Para incluir apenas variáveis específicas, use o parâmetro Name conforme descrito abaixo.)
Força
Você pode usar o parâmetro Force com alguns comandos, como Set-Variable e Remove-Variable, para ignorar quaisquer restrições que possam impedir a conclusão do comando.
Por exemplo, normalmente qualquer tentativa de alterar o valor de uma variável somente leitura resultará em um erro, conforme mostrado abaixo:
No entanto, você pode substituir esse comportamento com o parâmetro Force:
Nome
Você pode usar o parâmetro Name para se referir a uma variável pelo nome sem o sinal de dólar. Em particular, você pode usá-lo para obter apenas variáveis cujos nomes correspondam a um determinado padrão. Por exemplo, utilizando o cmdlet abaixo, você pode recuperar apenas variáveis cujos nomes começam com “Net”:
Get-Variable -Name "NET*"
O asterisco (*) é um caractere curinga que representa qualquer número de caracteres adicionais.
Opção
Você pode especificar o parâmetro Option com o cmdlet Set-Variable. Os valores disponíveis para este parâmetro incluem:
- Nenhum (padrão): A variável se comporta como uma variável normal.
- ReadOnly: A variável não pode ser alterada ou excluída.
- Constant: A variável não pode ser alterada ou excluída, mesmo com o parâmetro Force.
- Privado: A variável está disponível apenas no escopo atual.
- AllScope: A variável é copiada para todos os novos escopos que são criados.
Um exemplo da opção ReadOnly é mostrado aqui:
PassThru
Por padrão, a maioria dos cmdlets que realizam uma ação (como Set-Variable, New-Item e Remove-Item) não produzem saída alguma; eles simplesmente completam a ação silenciosamente. No entanto, se você usar o parâmetro PassThru, o cmdlet gerará um objeto que representa o item que você manipulou com o cmdlet.
Aqui está um exemplo de uso de PassThru com Set-Variable:
WhatIf
Você pode usar o parâmetro WhatIf em cmdlets que fazem alterações, como Set-Variable, Remove-Variable ou Clear-Variable, para ver o que aconteceria se você executasse o cmdlet, sem fazer nenhuma alteração real. Isso é útil se você não tem certeza sobre o que um cmdlet faria. Um exemplo é mostrado abaixo:
Conclusão
Com um sólido entendimento de como as variáveis do PowerShell podem ser criadas e manipuladas, você pode criar scripts do PowerShell para auxiliar na automação de tarefas, administração de sistemas, desenvolvimento de software e muito mais.
Como a Netwrix pode ajudar
Precisa proteger seu Active Directory e o ambiente Entra ID (Azure AD) de forma mais eficiente e eficaz? Considere Netwrix Directory Manager. Suas capacidades automatizadas de gerenciamento de grupos e usuários reduzem o risco de data breaches enquanto eliminam tarefas administrativas manuais que consomem tempo.
Netwrix Directory Manager oferece a você a capacidade de:
- Automatize o provisionamento e o desprovisionamento de usuários do seu sistema de informações de recursos humanos (HRIS) para o Active Directory, Entra ID e aplicações habilitadas para SCIM, permitindo assim que novos funcionários sejam produtivos rapidamente e reduzindo o risco de adversários assumirem identidades obsoletas.
- Atualize automaticamente os grupos de diretórios com base em mudanças como a promoção de um funcionário ou a transição para outro cargo, conforme registrado no seu HRIS. Essa automação mantém os direitos de acesso atualizados em tempo quase real, conforme necessário para segurança e conformidade, ao mesmo tempo que economiza tempo da sua equipe de TI.
- Delegue a gestão de grupos e usuários para as pessoas que sabem quem deve ter acesso a quê. Fluxos de trabalho simples permitem que os proprietários das linhas de negócio revisem seus grupos e aprovem ou neguem solicitações de acesso de usuários, reduzindo o risco de ter grupos e usuários com privilégios excessivos no seu diretório.
- Mantenha o diretório limpo e mais fácil de gerir com a criação, expiração e exclusão automáticas de usuários.
- Mantenha e comprove a conformidade com regulamentos e padrões com insights profundos, automação eficaz e relatórios claros sobre grupos e membros.
Tutorial de Scripting do Windows PowerShell para Iniciantes
Saiba maisCompartilhar em
Saiba Mais
Sobre o autor
Jonathan Blackwell
Chefe de Desenvolvimento de Software
Desde 2012, Jonathan Blackwell, um engenheiro e inovador, tem fornecido liderança em engenharia que colocou o Netwrix GroupID na vanguarda da gestão de grupos e usuários para ambientes Active Directory e Azure AD. Sua experiência em desenvolvimento, marketing e vendas permite que Jonathan compreenda totalmente o mercado de Identity Management e como os compradores pensam.