Sobre variáveis

Descrição breve

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 dos 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 que você cria 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, script ou local.

  • Variáveis automáticas: 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 $PSHOME variável 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: 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 $MaximumHistoryCount variável determina o número máximo de entradas no histórico da sessão.

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

Trabalhar 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 $MyVariable variável, 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 Clear-Variable cmdlet 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 digitadas de forma flexível, 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 ou objetos específicos que podem 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 $number variável que pode conter apenas inteiros, uma $words variável que pode conter apenas cadeias de caracteres e uma $dates variável 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 $PROFILE variável, que é o caminho para o arquivo de perfil de usuário do PowerShell no console do PowerShell.

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

Neste exemplo, dois comandos são mostrados que podem abrir o perfil do PowerShell em notepad.exe. O exemplo com marcas de 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

Nomes de 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 sublinhado (_). Nomes de variáveis que incluem espaços e outros caracteres especiais são difíceis de usar e devem ser evitados.

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

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

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

  • Lu - UppercaseLetter
  • Ll - LowercaseLetter
  • Lt - TitlecaseLetter
  • Lm – ModifierLetter
  • Lo - OtherLetter
  • Nd – DecimalDigitNumber

Para criar ou exibir um nome de variável que inclui 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 caracteres Unicode para que 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 ProgramFiles(x86) ambiente.

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 um tipo de nome this{value}is variável:

${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 somente dentro da função. Uma variável que você cria em um script está disponível somente 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"

Para qualquer script ou comando executado fora da sessão, você precisa do Using modificador de escopo para inserir valores variáveis do escopo da sessão de chamada, para que o código fora da sessão possa acessá-los.

Para obter mais informações, consulte about_Remote_Variables.

Salvando variáveis

As variáveis criadas estão disponíveis somente na sessão na qual você as cria. Eles são 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 $VerbosePreference variável em cada sessão do PowerShell, adicione o comando a seguir ao seu perfil do PowerShell.

$VerbosePreference = "Continue"

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

A Variável: unidade

O provedor de Variável do PowerShell cria uma Variable: unidade 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 Variable: unidade, use o seguinte comando:

Set-Location Variable:

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

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 $PSCulture variável automática, use o comando a seguir.

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

Para exibir mais informações sobre a Variable: unidade 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 variáveis

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

Confira também

about_Automatic_Variables

about_Environment_Variables

about_Preference_Variables

about_Profiles

about_Quoting_Rules

about_Scopes

about_Remote_Variables