about_Variables

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 de comandos e armazene elementos que são 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 cifrão ($), como $a, $processou $my_var.

Os 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: as 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 existem somente 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 $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: as variáveis de preferência armazenam as 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 de 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 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 cifrão ($).

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

Também é possível atribuir valores a várias variáveis com uma instrução . Os exemplos a seguir atribuem o mesmo valor a várias variáveis:

$a = $b = $c = 0

O próximo exemplo atribui vários valores a várias variáveis.

$i,$j,$k = 10, "red", $true    # $i is 10, $j is "red", $k is True
$i,$j = 10, "red", $true       # $i is 10, $j is [object[]], Length 2

Para obter informações mais detalhadas, consulte a seção Atribuindo várias variáveis de about_Assignment_Operators.

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 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 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 cifrão 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 cifrão 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 no notepad.exe. O exemplo com aspas duplas (") usa o valor da variável.

notepad $PROFILE

notepad "$PROFILE"

Os exemplos a seguir usam marcas de aspas simples (') 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 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 prática recomendada é que os nomes de variáveis incluam 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.

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

  • Caracteres Unicode dessas categorias: Lu, Ll, Lt, Lm, Lo ou Nd.
  • Caractere sublinhado (_).
  • 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 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 de acento grave (`) (U+0060). O acento grave é usado para escapar 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 de 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 ProgramFiles(x86) variável de 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 de acento grave para escapar das chaves. Por exemplo, para criar uma variável chamada this{value}is type:

${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 em que 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ê dot-source o 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 de 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 em que você as cria. Eles ficam perdidos quando você fecha a 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 atua 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 Get-Item cmdlets 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 $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 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 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