Compartilhar via


about_Assignment_Operators

Descrição breve

Descreve como usar operadores para atribuir valores a variáveis.

Descrição longa

Os operadores de atribuição atribuem um ou mais valores a uma variável. Eles podem executar operações numéricas nos valores antes da atribuição.

O PowerShell dá suporte aos operadores de atribuição a seguir.

Operador Descrição
= Define o valor de uma variável como o valor especificado.
+= Aumenta o valor de uma variável pelo valor especificado ou
acrescenta o valor especificado ao valor existente.
-= Diminui o valor de uma variável pelo valor especificado.
*= Multiplica o valor de uma variável pelo valor especificado ou
acrescenta o valor especificado ao valor existente.
/= Divide o valor de uma variável pelo valor especificado.
%= Divide o valor de uma variável pelo valor especificado e
em seguida, atribui o restante (módulo) à variável.
++ Aumenta o valor de uma variável, propriedade atribuível ou
elemento array por 1.
-- Diminui o valor de uma variável, propriedade atribuível ou
elemento array por 1.

Syntax

A sintaxe dos operadores de atribuição é a seguinte:

<assignable-expression> <assignment-operator> <value>

Expressões atribuíveis incluem variáveis e propriedades. O valor pode ser um único valor, uma matriz de valores ou um comando, expressão ou instrução.

Os operadores de incremento e decremento são operadores unários. Cada uma tem versões de prefixo e postfix.

<assignable-expression><operator> <operator><assignable-expression>

A expressão atribuível deve ser um número ou deve ser conversível em um número.

Atribuindo valores

Variáveis são denominadas espaços de memória que armazenam valores. Armazene os valores em variáveis usando o operador =de atribuição . O novo valor pode substituir o valor existente da variável ou você pode acrescentar um novo valor ao valor existente.

O operador de atribuição básica é o sinal =(ASCII 61)de igual . Por exemplo, a instrução a seguir atribui o valor PowerShell à $MyShell variável :

$MyShell = "PowerShell"

Quando você atribui um valor a uma variável no PowerShell, a variável é criada se ela ainda não existia. Por exemplo, a primeira das duas instruções de atribuição a seguir cria a $a variável e atribui um valor de 6 a $a. A segunda instrução de atribuição atribui um valor de 12 a $a. A primeira instrução cria uma nova variável. A segunda instrução altera apenas seu valor:

$a = 6
$a = 12

As variáveis no PowerShell não têm um tipo de dados específico, a menos que você as converta. Quando uma variável contém apenas um objeto, a variável usa o tipo de dados desse objeto. Quando uma variável contém uma coleção de objetos, a variável tem o tipo de dados System.Object. Portanto, você pode atribuir qualquer tipo de objeto à coleção. O exemplo a seguir mostra que você pode adicionar objetos de processo, objetos de serviço, cadeias de caracteres e inteiros a uma variável sem gerar um erro:

$a = Get-Process
$a += Get-Service
$a += "string"
$a += 12

Como o operador = de atribuição tem uma precedência menor do que o operador |de pipeline , parênteses não são necessários para atribuir o resultado de um pipeline de comando a uma variável. Por exemplo, o comando a seguir classifica os serviços no computador e atribui os serviços classificados à $a variável :

$a = Get-Service | Sort-Object -Property name

Você também pode atribuir o valor criado por uma instrução a uma variável, como no exemplo a seguir:

$a = if ($b -lt 0) { 0 } else { $b }

Este exemplo atribuirá zero à $a variável se o valor de $b for menor que zero. Ele atribuirá o valor de $b a $a se o valor de $b não for menor que zero.

O operador de atribuição

O operador = de atribuição atribui valores a variáveis. Se a variável já tiver um valor, o operador = de atribuição substituirá o valor sem aviso.

A instrução a seguir atribui o valor inteiro 6 à $a variável :

$a = 6

Para atribuir um valor de cadeia de caracteres a uma variável, coloque o valor da cadeia de caracteres entre aspas, da seguinte maneira:

$a = "baseball"

Para atribuir uma matriz (vários valores) a uma variável, separe os valores com vírgulas, da seguinte maneira:

$a = "apple", "orange", "lemon", "grape"

Para atribuir uma tabela de hash a uma variável, use a notação de tabela de hash padrão no PowerShell. Digite um sinal @ seguido por pares chave/valor separados por ponto e vírgula ; e entre chaves { }. Por exemplo, para atribuir uma tabela de hash à $a variável, digite:

$a = @{one=1; two=2; three=3}

Para atribuir valores hexadecimal a uma variável, preceda o valor com 0x. O PowerShell converte o valor hexadecimal (0x10) em um valor decimal (nesse caso, 16) e atribui esse valor à $a variável. Por exemplo, para atribuir um valor de 0x10 à $a variável , digite:

$a = 0x10

Para atribuir um valor exponencial a uma variável, digite o número raiz, a letra ee um número que representa um múltiplo de 10. Por exemplo, para atribuir um valor de 3,1415 à potência de 1.000 para a $a variável, digite:

$a = 3.1415e3

O PowerShell também pode converter quilobytes KB, megabytes MBe gigabytes GB em bytes. Por exemplo, para atribuir um valor de 10 quilobytes à $a variável, digite:

$a = 10kb

O operador de atribuição por adição

O operador += assignment by addition incrementa o valor de uma variável ou acrescenta o valor especificado ao valor existente. A ação depende se a variável tem um tipo numérico ou de cadeia de caracteres e se a variável contém um único valor (um escalar) ou vários valores (uma coleção).

O += operador combina duas operações. Primeiro, ele adiciona e, em seguida, atribui. Portanto, as seguintes instruções são equivalentes:

$a += 2
$a = ($a + 2)

Quando a variável contém um único valor numérico, o += operador incrementa o valor existente pela quantidade à direita do operador. Em seguida, o operador atribui o valor resultante à variável . O exemplo a seguir mostra como usar o += operador para aumentar o valor de uma variável:

$a = 4
$a += 2
$a
6

Quando o valor da variável é uma cadeia de caracteres, o valor no lado direito do operador é acrescentado à cadeia de caracteres, da seguinte maneira:

$a = "Windows"
$a += " PowerShell"
$a
Windows PowerShell

Quando o valor da variável é uma matriz, o += operador acrescenta os valores no lado direito do operador à matriz. A menos que a matriz seja explicitamente digitada pela conversão, você pode acrescentar qualquer tipo de valor à matriz, da seguinte maneira:

$a = 1,2,3
$a += 2
$a
1
2
3
2

e

$a += "String"
$a
1
2
3
2
String

Quando o valor de uma variável é uma tabela de hash, o += operador acrescenta o valor no lado direito do operador à tabela de hash. No entanto, como o único tipo que você pode adicionar a uma tabela de hash é outra tabela de hash, todas as outras atribuições falham.

Por exemplo, o comando a seguir atribui uma tabela de hash à $a variável . Em seguida, ele usa o += operador para acrescentar outra tabela de hash à tabela de hash existente, adicionando efetivamente um novo par chave/valor à tabela de hash existente. Esse comando é bem-sucedido, conforme mostrado na saída:

$a = @{a = 1; b = 2; c = 3}
$a += @{mode = "write"}
$a
Name                           Value
----                           -----
a                              1
b                              2
mode                           write
c                              3

O comando a seguir tenta acrescentar um inteiro "1" à tabela de hash na $a variável . Esse comando falha:

$a = @{a = 1; b = 2; c = 3}
$a += 1
You can add another hash table only to a hash table.
At line:1 char:6
+ $a += <<<<  1

O operador de atribuição por subtração

O operador -= assignment by subtraction diminui o valor de uma variável pelo valor especificado no lado direito do operador. Esse operador não pode ser usado com variáveis de cadeia de caracteres e não pode ser usado para remover um elemento de uma coleção.

O -= operador combina duas operações. Primeiro, ele subtrai e, em seguida, atribui. Portanto, as seguintes instruções são equivalentes:

$a -= 2
$a = ($a - 2)

O exemplo a seguir mostra como usar o -= operador para diminuir o valor de uma variável:

$a = 8
$a -= 2
$a
6

Você também pode usar o -= operador de atribuição para diminuir o valor de um membro de uma matriz numérica. Para fazer isso, especifique o índice do elemento de matriz que você deseja alterar. No exemplo a seguir, o valor do terceiro elemento de uma matriz (elemento 2) é reduzido em 1:

$a = 1,2,3
$a[2] -= 1
$a
1
2
2

Não é possível usar o -= operador para excluir os valores de uma variável. Para excluir todos os valores atribuídos a uma variável, use os cmdlets Clear-Item ou Clear-Variable para atribuir um valor de $null ou "" à variável.

$a = $null

Para excluir um valor específico de uma matriz, use a notação de matriz para atribuir um valor de $null ao item específico. Por exemplo, a instrução a seguir exclui o segundo valor (posição de índice 1) de uma matriz:

$a = 1,2,3
$a
1
2
3
$a[1] = $null
$a
1
3

Para excluir uma variável, use o cmdlet Remove-Variable . Esse método é útil quando a variável é explicitamente convertida em um tipo de dados específico e você deseja uma variável não tipada. O comando a seguir exclui a $a variável :

Remove-Variable -Name a

O operador de atribuição por multiplicação

O operador *= assignment by multiplication multiplica multiplica um valor numérico ou acrescenta o número especificado de cópias do valor de cadeia de caracteres de uma variável.

Quando uma variável contém um único valor numérico, esse valor é multiplicado pelo valor à direita do operador. Por exemplo, o exemplo a seguir mostra como usar o *= operador para multiplicar o valor de uma variável:

$a = 3
$a *= 4
$a
12

Nesse caso, o *= operador combina duas operações. Primeiro, ele multiplica e, em seguida, atribui. Portanto, as seguintes instruções são equivalentes:

$a *= 2
$a = ($a * 2)

Quando uma variável contém um valor de cadeia de caracteres, o PowerShell acrescenta o número especificado de cadeias de caracteres ao valor, da seguinte maneira:

$a = "file"
$a *= 4
$a
filefilefilefile

Para multiplicar um elemento de uma matriz, use um índice para identificar o elemento que você deseja multiplicar. Por exemplo, o comando a seguir multiplica o primeiro elemento na matriz (posição de índice 0) por 2:

$a[0] *= 2

O operador de atribuição por divisão

O operador /= assignment by division divide um valor numérico pelo valor especificado no lado direito do operador. O operador não pode ser usado com variáveis de cadeia de caracteres.

O /= operador combina duas operações. Primeiro, ele divide e, em seguida, atribui. Portanto, as duas instruções a seguir são equivalentes:

$a /= 2
$a = ($a / 2)

Por exemplo, o comando a seguir usa o /= operador para dividir o valor de uma variável:

$a = 8
$a /=2
$a
4

Para dividir um elemento de uma matriz, use um índice para identificar o elemento que você deseja alterar. Por exemplo, o comando a seguir divide o segundo elemento na matriz (posição de índice 1) por 2:

$a[1] /= 2

O operador assignment by modulus

O operador %= assignment by modulus divide o valor de uma variável pelo valor no lado direito do operador. Em seguida, o %= operador atribui o restante (conhecido como módulo) à variável . Você só pode usar esse operador quando uma variável contiver um único valor numérico. Você não pode usar esse operador quando uma variável contém uma variável de cadeia de caracteres ou uma matriz.

O %= operador combina duas operações. Primeiro, ele divide e determina o restante e, em seguida, atribui o restante à variável. Portanto, as seguintes instruções são equivalentes:

$a %= 2
$a = ($a % 2)

O exemplo a seguir mostra como usar o %= operador para salvar o módulo de um quociente:

$a = 7
$a %= 4
$a
3

Os operadores de incremento e decremento

O operador ++ de incremento aumenta o valor de uma variável em 1. Quando você usa o operador de incremento em uma instrução simples, nenhum valor é retornado. Para exibir o resultado, exiba o valor da variável, da seguinte maneira:

$a = 7
++$a
$a
8

Para forçar um valor a ser retornado, coloque a variável e o operador entre parênteses, da seguinte maneira:

$a = 7
(++$a)
8

O operador de incremento pode ser colocado antes (prefixo) ou depois (postfix) de uma variável. A versão de prefixo do operador incrementa uma variável antes que seu valor seja usado na instrução , da seguinte maneira:

$a = 7
$c = ++$a
$a
8
$c
8

A versão de postfixo do operador incrementa uma variável depois que seu valor é usado na instrução . No exemplo a seguir, as $c variáveis e $a têm valores diferentes porque o valor é atribuído a $c antes $a das alterações:

$a = 7
$c = $a++
$a
8
$c
7

O operador -- de decremento diminui o valor de uma variável em 1. Assim como acontece com o operador de incremento, nenhum valor é retornado quando você usa o operador em uma instrução simples. Use parênteses para retornar um valor, da seguinte maneira:

$a = 7
--$a
$a
6
(--$a)
5

A versão de prefixo do operador diminui uma variável antes que seu valor seja usado na instrução , da seguinte maneira:

$a = 7
$c = --$a
$a
6
$c
6

A versão de postfixo do operador decrementa uma variável depois que seu valor é usado na instrução . No exemplo a seguir, as $d variáveis e $a têm valores diferentes porque o valor é atribuído a $d antes $a das alterações:

$a = 7
$d = $a--
$a
6
$d
7

Tipos do Microsoft .NET

Por padrão, quando uma variável tem apenas um valor, o valor atribuído à variável determina o tipo de dados da variável. Por exemplo, o comando a seguir cria uma variável que tem o tipo "Integer" (System.Int32):

$a = 6

Para localizar o tipo .NET de uma variável, use o método GetType e sua propriedade FullName , da seguinte maneira. Certifique-se de incluir os parênteses após o nome do método GetType , mesmo que a chamada de método não tenha argumentos:

$a = 6
$a.GetType().FullName
System.Int32

Para criar uma variável que contém uma cadeia de caracteres, atribua um valor de cadeia de caracteres à variável. Para indicar que o valor é uma cadeia de caracteres, coloque-o entre aspas, da seguinte maneira:

$a = "6"
$a.GetType().FullName
System.String

Se o primeiro valor atribuído à variável for uma cadeia de caracteres, o PowerShell tratará todas as operações como operações de cadeia de caracteres e converterá novos valores em cadeias de caracteres. Isso ocorre no exemplo a seguir:

$a = "file"
$a += 3
$a
file3

Se o primeiro valor for um inteiro, o PowerShell tratará todas as operações como operações de inteiro e converterá novos valores em inteiros. Isso ocorre no exemplo a seguir:

$a = 6
$a += "3"
$a
9

Você pode converter uma nova variável escalar como qualquer tipo .NET colocando o nome do tipo entre colchetes que precedem o nome da variável ou o primeiro valor de atribuição. Ao converter uma variável, você pode determinar os tipos de dados que podem ser armazenados na variável . Além disso, você pode determinar como a variável se comporta ao manipulá-la.

Por exemplo, o comando a seguir converte a variável como um tipo de cadeia de caracteres:

[string]$a = 27
$a += 3
$a
273

O exemplo a seguir converte o primeiro valor, em vez de converter a variável:

$a = [string]27

Quando você converte uma variável em um tipo específico, a convenção comum é converter a variável, não o valor. No entanto, você não poderá reformular o tipo de dados de uma variável existente se seu valor não puder ser convertido no novo tipo de dados. Para alterar o tipo de dados, você deve substituir seu valor, da seguinte maneira:

$a = "string"
[int]$a
Cannot convert value "string" to type "System.Int32". Error: "Input string was
not in a correct format." At line:1 char:8 + [int]$a <<<<
[int]$a = 3

Além disso, quando você precede um nome de variável com um tipo de dados, o tipo dessa variável é bloqueado, a menos que você substitua explicitamente o tipo especificando outro tipo de dados. Se você tentar atribuir um valor incompatível com o tipo existente e não substituir explicitamente o tipo, o PowerShell exibirá um erro, conforme mostrado no exemplo a seguir:

$a = 3
$a = "string"
[int]$a = 3
$a = "string"
Cannot convert value "string" to type "System.Int32". Error: "Input
string was not in a correct format."
At line:1 char:3
+ $a <<<<  = "string"
[string]$a = "string"

No PowerShell, os tipos de dados de variáveis que contêm vários itens em uma matriz são tratados de forma diferente dos tipos de dados de variáveis que contêm um único item. A menos que um tipo de dados seja atribuído especificamente a uma variável de matriz, o tipo de dados é sempre System.Object []. Esse tipo de dados é específico para matrizes.

Às vezes, você pode substituir o tipo padrão especificando outro tipo. Por exemplo, o comando a seguir converte a variável como um tipo de string [] matriz:

[string []] $a = "one", "two", "three"

As variáveis do PowerShell podem ser qualquer tipo de dados .NET. Além disso, você pode atribuir qualquer tipo de dados .NET totalmente qualificado que esteja disponível no processo atual. Por exemplo, o comando a seguir especifica um System.DateTime tipo de dados:

[System.DateTime]$a = "5/31/2005"

A variável receberá um valor que está em conformidade com o System.DateTime tipo de dados. O valor da $a variável seria o seguinte:

Tuesday, May 31, 2005 12:00:00 AM

Atribuindo várias variáveis

No PowerShell, você pode atribuir valores a várias variáveis usando um único comando. O primeiro elemento do valor de atribuição é atribuído à primeira variável, o segundo elemento é atribuído à segunda variável, o terceiro elemento à terceira variável e assim por diante. Isso é conhecido como atribuição múltipla.

Por exemplo, o comando a seguir atribui o valor 1 à $a variável, o valor 2 à $b variável e o valor 3 à $c variável:

$a, $b, $c = 1, 2, 3

Se o valor da atribuição contiver mais elementos do que variáveis, todos os valores restantes serão atribuídos à última variável. Por exemplo, o comando a seguir contém três variáveis e cinco valores:

$a, $b, $c = 1, 2, 3, 4, 5

Portanto, o PowerShell atribui o valor 1 à $a variável e o valor 2 à $b variável. Ele atribui os valores 3, 4 e 5 à $c variável. Para atribuir os valores na $c variável a três outras variáveis, use o seguinte formato:

$d, $e, $f = $c

Esse comando atribui o valor 3 à $d variável, o valor 4 à $e variável e o valor 5 à $f variável.

Se o valor da atribuição contiver menos elementos do que variáveis, as variáveis restantes receberão o valor $null. Por exemplo, o comando a seguir contém três variáveis e dois valores:

$a, $b, $c = 1, 2

Portanto, o PowerShell atribui o valor 1 à $a variável e o valor 2 à $b variável. A $c variável é $null.

Você também pode atribuir um único valor a várias variáveis encadeando as variáveis. Por exemplo, o comando a seguir atribui um valor de "três" a todas as quatro variáveis:

$a = $b = $c = $d = "three"

Além de usar uma operação de atribuição para definir um valor de variável, você também pode usar o cmdlet Set-Variable . Por exemplo, o comando a seguir usa Set-Variable para atribuir uma matriz de 1, 2, 3 à $a variável .

Set-Variable -Name a -Value 1, 2, 3

Confira também