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 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 texto que começam com um cifrão ($
), como $a
, $process
ou $my_var
.
Os nomes de variáveis não diferenciam maiúsculas de minúsculas e podem incluir espaços e caracteres especiais. Mas, 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, 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 variável armazena
$PSHOME
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 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 fazer referência a 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 $MyVariable
valor da 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 única 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 do 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 vagamente tipadas, o que significa que elas não estão limitadas a um tipo específico de objeto. Uma única variável pode até 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 type 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 transmissã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 cifrão$
.
Se o nome e o cifrão da variável 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 $PROFILE
valor da 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, são mostrados dois comandos 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 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 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 prática recomendada é que os nomes das variáveis incluam 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 destas categorias: Lu, Ll, Lt, Lm, Lo ou 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
- 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á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 caractere de chave de fechamento (
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 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 inclua chaves, coloque o nome da variável em chaves e use o caractere backtick 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 que o Using
modificador de escopo incorpore 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 são criadas. 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 $VerbosePreference
valor da 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 arquivo em um editor de texto, como notepad.exe$PROFILE
. Para obter mais informações sobre perfis do PowerShell, consulte about_Profiles.
A variável: unidade
O provedor de variáveis do PowerShell cria uma Variable:
unidade que se 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
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 seguinte comando.
Get-Item Variable:\PSCulture
Name Value
---- -----
PSCulture en-US
Para exibir mais informações sobre a unidade e o Variable:
provedor de variáveis 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 oferecem suporte a essa notação:
Os cmdlets de 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. |