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 de comandos e armazene os 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
, $process
ou $my_var
.
Nomes de variáveis não diferenciam maiúsculas de minúsculas e podem incluir espaços e caracteres especiais. Porém, os 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 que você cria 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 sua 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 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.
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 de variáveis são exibidos sem o sinal de dólar ( $
) precedente 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 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, altera o valor da variável e, em seguida, exibe 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 os objetos que representam processos, serviços, logs de eventos e computadores.
As variáveis do PowerShell são tipificadas de forma flexível, o que significa que elas não sã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 só possa conter tipos de objeto ou objetos específicos 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 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 somente 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 dentro das marcas de aspas duplas "
, o valor da variável será usado no comando ou na 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\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Neste exemplo, são mostrados dois comandos que podem abrir o perfil do PowerShell no 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 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 destas 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 -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.
Os nomes de variável de caracteres especiais podem conter estes caracteres:
- Qualquer caractere Unicode, com as seguintes exceções:
- O caractere de fechamento de chave (
}
) (U + 007D). - O caractere de acento grave (
`
) (U + 0060). A marca de fim é usada para escapar caracteres Unicode para que sejam tratados como literais.
- O caractere de fechamento de chave (
O PowerShell tem variáveis reservadas, como,, $$
$?
$^
e $_
que contêm caracteres alfanuméricos e especiais. Para obter mais informações, consulte 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 que é 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 um tipo nomeado de variável this{value}is
:
${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ê criar um ponto-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 ela é criada em um script ou uma função.
$Global:Computers = "Server01"
Salvando variáveis
As variáveis que você cria estão disponíveis somente na sessão em que você as cria. Eles são perdidos quando você fecha sua sessão.
Para criar a variável em cada sessão do PowerShell que você iniciar, 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 seguinte comando 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 unidade Variable:
O provedor de variáveis 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 Get-Item
Get-ChildItem
cmdlets ou.
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áveis do PowerShell, digite:
Get-Help Variable
Sintaxe de 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 esta notação:
Os cmdlets variáveis
O PowerShell inclui um conjunto de cmdlets que são 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 | Description |
---|---|
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. |