Compartilhar via


Sobre variáveis

Descrição curta

Descreve como as variáveis armazenam valores que podem ser usados no PowerShell.

Descrição longa

Você pode armazenar todos os tipos de valores em variáveis do PowerShell. Por exemplo, armazene os resultados de comandos e armazene elementos usados em comandos e expressões, como nomes, caminhos, configurações e valores.

Uma variável é uma unidade de memória na qual os valores são armazenados. No PowerShell, as variáveis são representadas por cadeias de caracteres de texto que começam com um sinal de dólar ($), como $a, $processou $my_var.

Nomes de variáveis não diferenciam maiúsculas de minúsculas e podem incluir espaços e caracteres especiais. Porém, nomes de variáveis que incluem caracteres especiais e espaços são difíceis de usar e devem ser evitados. Para obter mais informações, consulte Nomes de variáveis que incluem caracteres especiais.

Há vários tipos diferentes de variáveis no PowerShell.

  • Variáveis criadas pelo usuário: variáveis criadas pelo usuário são criadas e mantidas pelo usuário. Por padrão, as variáveis criadas na linha de comando do PowerShell só existem enquanto a janela do PowerShell está aberta. Quando as janelas do PowerShell são fechadas, as variáveis são excluídas. Para salvar uma variável, adicione-a ao seu perfil do PowerShell. Você também pode criar variáveis em scripts com escopo global, de script ou local.

  • Variáveis automáticas: as variáveis automáticas armazenam o estado do PowerShell. Essas variáveis são criadas pelo PowerShell e o PowerShell altera seus valores conforme necessário para manter a precisão. Os usuários não podem alterar o valor dessas variáveis. Por exemplo, a variável $PSHOME armazena o caminho para o diretório de instalação do PowerShell.

    Para obter mais informações, uma lista e uma descrição das variáveis automáticas, consulte about_Automatic_Variables.

  • Variáveis de preferência: as variáveis de preferência armazenam preferências do usuário para o PowerShell. Essas variáveis são criadas pelo PowerShell e são preenchidas com valores padrão. Os usuários podem alterar os valores dessas variáveis. Por exemplo, a variável $MaximumHistoryCount determina o número máximo de entradas no histórico de sessão.

    Para obter mais informações, uma lista e uma descrição das variáveis de preferência, consulte about_Preference_Variables.

Trabalhando com variáveis

Para criar uma nova variável, use uma instrução de atribuição para atribuir um valor à variável. Você não precisa declarar a variável antes de usá-la. O valor padrão de todas as variáveis é $null.

Para obter uma lista de todas as variáveis em sua sessão do PowerShell, digite Get-Variable. Os nomes das variáveis são exibidos sem o sinal de dólar ($) anterior que é usado para referenciar variáveis.

Por exemplo:

$MyVariable = 1, 2, 3

$Path = "C:\Windows\System32"

As variáveis são úteis para armazenar os resultados dos comandos.

Por exemplo:

$Processes = Get-Process

$Today = (Get-Date).DateTime

Para exibir o valor de uma variável, digite o nome da variável, precedido por um sinal de dólar ($).

Por exemplo:

$MyVariable
1
2
3
$Today
Tuesday, September 3, 2019 09:46:46

Para alterar o valor de uma variável, atribua um novo valor à variável.

Os exemplos a seguir exibem o valor da variável $MyVariable, alteram o valor da variável e exibem o novo valor.

$MyVariable = 1, 2, 3
$MyVariable
1
2
3
$MyVariable = "The green cat."
$MyVariable
The green cat.

Para excluir o valor de uma variável, use o cmdlet Clear-Variable ou altere o valor para $null.

Clear-Variable -Name MyVariable
$MyVariable = $null

Para excluir a variável, use Remove-Variable ou Remove-Item.

Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable

Tipos de variáveis

Você pode armazenar qualquer tipo de objeto em uma variável, incluindo inteiros, cadeias de caracteres, matrizes e tabelas de hash. E objetos que representam processos, serviços, logs de eventos e computadores.

As variáveis do PowerShell são tipadas livremente, o que significa que elas não estão limitadas a um tipo específico de objeto. Uma única variável pode até mesmo conter uma coleção, ou matriz, de diferentes tipos de objetos ao mesmo tempo.

O tipo de dados de uma variável é determinado pelos tipos .NET dos valores da variável. Para exibir o tipo de objeto de uma variável, use get-member.

Por exemplo:

$a = 12                         # System.Int32
$a = "Word"                     # System.String
$a = 12, "Word"                 # array of System.Int32, System.String
$a = Get-ChildItem C:\Windows   # FileInfo and DirectoryInfo types

Você pode usar um atributo de tipo e uma notação de conversão para garantir que uma variável possa conter apenas tipos de objeto específicos ou objetos que possam ser convertidos nesse tipo. Se você tentar atribuir um valor de outro tipo, o PowerShell tentará converter o valor em seu tipo. Se o tipo não puder ser convertido, a instrução de atribuição falhará.

Para usar a notação de conversão, insira um nome de tipo, entre colchetes, antes do nome da variável (no lado esquerdo da instrução de atribuição). O exemplo a seguir cria uma variável $number que pode conter apenas inteiros, uma variável $words que pode conter apenas cadeias de caracteres e uma variável $dates que pode conter apenas objetos datetime.

[int]$number = 8
$number = "12345"  # The string is converted to an integer.
$number = "Hello"
Cannot convert value "Hello" to type "System.Int32". Error: "Input string was
 not in a correct format."
At line:1 char:1
+ $number = "Hello"
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo          : MetadataError: (:) [],
    ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
[string]$words = "Hello"
$words = 2       # The integer is converted to a string.
$words += 10     # The plus (+) sign concatenates the strings.
$words
210
[datetime] $dates = "09/12/91"  # The string is converted to a DateTime object.
$dates
Thursday, September 12, 1991 00:00:00
$dates = 10    # The integer is converted to a DateTime object.
$dates
Monday, January 1, 0001 00:00:00

Usando variáveis em comandos e expressões

Para usar uma variável em um comando ou expressão, digite o nome da variável, precedido pelo sinal de dólar ($).

Se o nome da variável e o sinal de dólar não estiverem entre aspas ou se estiverem entre aspas duplas ("), o valor da variável será usado no comando ou expressão.

Se o nome da variável e o sinal de dólar estiverem entre aspas simples ('), o nome da variável será usado na expressão.

Para obter mais informações sobre como usar aspas no PowerShell, consulte about_Quoting_Rules.

Este exemplo obtém o valor da variável $PROFILE, que é o caminho para o arquivo de perfil de usuário do PowerShell no console do PowerShell.

$PROFILE
C:\Users\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Neste exemplo, dois comandos são mostrados que podem abrir o perfil do PowerShell em notepad.exe. O exemplo com aspas duplas (") usa o valor da variável.

notepad $PROFILE

notepad "$PROFILE"

Os exemplos a seguir usam marcas de aspa única (') que tratam a variável como texto literal.

'$PROFILE'
$PROFILE
'Use the $PROFILE variable.'
Use the $PROFILE variable.

Nomes de variáveis que incluem caracteres especiais

Os nomes das variáveis começam com um sinal de dólar ($) e podem incluir caracteres alfanuméricos e caracteres especiais. O comprimento do nome da variável é limitado apenas pela memória disponível.

A melhor prática é que os nomes de variáveis incluem apenas caracteres alfanuméricos e o caractere de sublinhado (_). Nomes de variáveis que incluem espaços e outros caracteres especiais são difíceis de usar e devem ser evitados.

Os nomes de variáveis alfanuméricas podem conter estes caracteres:

  • Caracteres Unicode dessas categorias: Lu, Ll, Lt, Lm, Loou Nd.
  • Caractere de sublinhado (_).
  • Caractere de ponto de interrogação (?).

A lista a seguir contém as descrições de categoria Unicode. Para obter mais informações, consulte UnicodeCategory.

  • Lu - Letra maiúscula
  • Ll - Letra Minúscula
  • Tenente - TitlecaseLetter
  • Lm - Letra Modificadora
  • Lo - OtherLetter
  • Nd - NúmeroDeDígitos Decimais

Para criar ou exibir um nome de variável que inclua espaços ou caracteres especiais, coloque o nome da variável com os caracteres de chaves ({}). As chaves direcionam o PowerShell para interpretar os caracteres do nome da variável como literais.

Nomes de variáveis de caracteres especiais podem conter estes caracteres:

  • Qualquer caractere Unicode, com as seguintes exceções:
    • O caractere de chave de fechamento (}) (U+007D).
    • O caractere backtick (`) (U+0060). O backtick é usado para escapar de caracteres Unicode para que eles sejam tratados como literais.

O PowerShell tem variáveis reservadas, como $$, $?, $^e $_ que contêm caracteres alfanuméricos e especiais. Para obter mais informações, confira about_Automatic_Variables.

Por exemplo, o comando a seguir cria a variável chamada save-items. As chaves ({}) são necessárias porque o nome da variável inclui um caractere especial hífen (-).

${save-items} = "a", "b", "c"
${save-items}
a
b
c

O comando a seguir obtém os itens filho no diretório representado pela variável de ambiente ProgramFiles(x86).

Get-ChildItem ${env:ProgramFiles(x86)}

Para fazer referência a um nome de variável que inclui chaves, coloque o nome da variável entre chaves e use o caractere backtick para escapar das chaves. Por exemplo, para criar uma variável chamada this{value}is tipo:

${this`{value`}is} = "This variable name uses braces and backticks."
${this`{value`}is}
This variable name uses braces and backticks.

Variáveis e escopo

Por padrão, as variáveis só estão disponíveis no escopo no qual são criadas.

Por exemplo, uma variável que você cria em uma função está disponível apenas dentro da função. Uma variável que você cria em um script só está disponível dentro do script. Se você fizer o código-fonte do script, a variável será adicionada ao escopo atual. Para obter mais informações, consulte about_Scopes.

Você pode usar um modificador de escopo para alterar o escopo padrão da variável. A expressão a seguir cria uma variável chamada Computers. A variável tem um escopo global, mesmo quando é criada em um script ou função.

$Global:Computers = "Server01"

Salvando variáveis

As variáveis criadas estão disponíveis apenas na sessão na qual você as cria. Eles ficam perdidos quando você fecha sua sessão.

Para criar a variável em cada sessão do PowerShell iniciada, adicione a variável ao seu perfil do PowerShell.

Por exemplo, para alterar o valor da variável $VerbosePreference em cada sessão do PowerShell, adicione o seguinte comando ao seu perfil do PowerShell.

$VerbosePreference = "Continue"

Você pode adicionar esse comando ao seu perfil do PowerShell abrindo o arquivo $PROFILE em um editor de texto, como notepad.exe. Para obter mais informações sobre perfis do PowerShell, confira about_Profiles.

A Variável: unidade

O provedor de Variável do PowerShell cria uma unidade Variable: que parece e age como uma unidade do sistema de arquivos, mas contém as variáveis em sua sessão e seus valores.

Para alterar para a unidade Variable:, use o seguinte comando:

Set-Location Variable:

Para listar os itens e variáveis na unidade Variable:, use os cmdlets Get-Item ou Get-ChildItem.

Get-ChildItem Variable:

Para obter o valor de uma variável específica, use a notação do sistema de arquivos para especificar o nome da unidade e o nome da variável. Por exemplo, para obter a variável automática $PSCulture, use o comando a seguir.

Get-Item Variable:\PSCulture
Name                           Value
----                           -----
PSCulture                      en-US

Para exibir mais informações sobre a unidade Variable: e o provedor de Variável do PowerShell, digite:

Get-Help Variable

Sintaxe variável com caminhos de provedor

Você pode prefixar um caminho de provedor com o sinal de dólar ($) e acessar o conteúdo de qualquer provedor que implemente a interface IContentCmdletProvider.

Os seguintes provedores internos do PowerShell dão suporte a essa notação:

Os cmdlets de variável

O PowerShell inclui um conjunto de cmdlets projetados para gerenciar variáveis.

Para listar os cmdlets, digite:

Get-Command -Noun Variable

Para obter ajuda para um cmdlet específico, digite:

Get-Help <cmdlet-name>
Nome do cmdlet Descrição
Clear-Variable Exclui o valor de uma variável.
Get-Variable Obtém as variáveis no console atual.
New-Variable Cria uma nova variável.
Remove-Variable Exclui uma variável e seu valor.
Set-Variable Altera o valor de uma variável.

Consulte também

about_Automatic_Variables

about_Environment_Variables

about_Preference_Variables

about_Profiles

about_Quoting_Rules

about_Scopes