about_Assignment_Operators

Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0

Insira a introdução aqui.

TÓPICO

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 Windows PowerShell® dá suporte aos seguintes operadores de atribuição.

    Operator  Description  
    -------   -----------
    =         Sets the value of a variable to the specified value.

    +=        Increases the value of a variable by the specified value, or 
              appends the specified value to the existing value.

    -=        Decreases the value of a variable by the specified value.
 
    *=        Multiplies the value of a variable by the specified value, or
              appends the specified value to the existing value.
 
    /=        Divides the value of a variable by the specified value.
 
    %=        Divides the value of a variable by the specified value and 
              then assigns the remainder (modulus) to the variable.

    ++        Increases the value of a variable, assignable property, or 
              array element by 1.

    --        Decreases the value of a variable, assignable property, or 
              array element by 1.

SINTAXE

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 valor único, uma matriz de valores, um comando, uma expressão ou uma instrução.

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

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

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

COMO ATRIBUIR VALORES

As variáveis são espaços de memória nomeados que armazenam valores. Você pode armazenar os valores nas 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ásico é o sinal de igual (=)(ASCII 61). Por exemplo, a instrução a seguir atribui o valor Windows PowerShell à variável $MyShell:

        $MyShell = "Windows PowerShell" 

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

        $a = 6
        $a = 12

As variáveis do Windows PowerShell não têm um tipo de dados específico, a menos que você faça a conversão delas. Quando uma variável contém apenas um objeto, ela assume 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 números inteiros a uma variável sem gerar um erro:

        $a = get-process
        $a += get-service
        $a += "string"
        $a += 12

Já que o operador de atribuição (=) tem uma menor precedência que o operador de pipeline (|), os 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 do computador e, em seguida, atribui os serviços classificados à variável $a:

        $a = get-service | sort 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 atribui 0 à variável $ se o valor de $b for menor que 0. Ele atribui 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 às variáveis. Se a variável já tiver um valor, o operador de atribuição (=) fará sua substituição sem aviso.

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

        $a = 6 

Para atribuir um valor de cadeia de caracteres a uma variável, coloque o valor de 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 padrão de tabela de hash do Windows PowerShell. Digite um sinal de arroba (@) seguido por pares de chave/valor que sejam separados por ponto e vírgula (;) e colocados entre chaves ({ }). Por exemplo, para atribuir uma tabela de hash à variável $a, digite:

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

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

        $a = 0x10 

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

        $a = 3.1415e3 

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

        $a = 10kb

O OPERADOR DE ATRIBUIÇÃO POR ADIÇÃO (+=)

O operador de atribuição por adição (+=) incrementa o valor de uma variável ou anexa 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 valor único (um escalar) ou vários valores (uma coleção).

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

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

Quando a variável contém um só valor numérico, o operador += incrementa o valor existente pelo valor à 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:

        C:\PS> $a = 4
        C:\PS> $a += 2
        C:\PS> $a
        6

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

        C:\PS> $a = "Windows"
        C:\PS> $a += " PowerShell"
        C:\PS> $a
        Windows PowerShell 

Quando o valor da variável for uma matriz, o operador += acrescenta os valores à direita do operador à matriz. A menos que a matriz seja explicitamente tipada por conversão, você pode anexar qualquer tipo de valor à matriz, da seguinte maneira:

        C:\PS> $a = 1,2,3
        C:\PS> $a += 2
        C:\PS> $a
        1
        2
        3
        2
        C:\PS> $a += "String"
        C:\PS> $a
        1
        2
        3
        2
        String

Quando o valor de uma variável for uma tabela de hash, o operador += acrescenta o valor à direita do operador à tabela de hash. No entanto, já que o único tipo que você pode adicionar a uma tabela de hash é outra tabela de hash, todas as outras atribuições falharão.

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

        C:\PS> $a = @{a = 1; b = 2; c = 3}
        C:\PS> $a += @{mode = "write"}
        C:\PS> $a
        Name                           Value
        ----                           -----
        a                              1
        b                              2
        mode                           write
        c                              3

O comando a seguir tenta anexar um número inteiro (1) à tabela de hash da variável $a. Este comando falhará:

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

OPERADOR DE ATRIBUIÇÃO POR SUBTRAÇÃO (-=)

O operador de atribuição por subtração (-=) diminui o valor de uma variável pelo valor especificado ao lado direito do operador. Esse operador não pode ser usado com variáveis de cadeia de caracteres, nem para remover um elemento de uma coleção.

O operador -= combina duas operações. Primeiro, ele subtrai e, em seguida, atribui. Portanto, as instruções a seguir 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:

        C:\PS> $a = 8
        C:\PS> $a -= 2
        C:\PS> $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 da matriz que deseja alterar. No exemplo a seguir, o valor do terceiro elemento de uma matriz (elemento 2) diminui em 1:

        C:\PS> $a = 1,2,3
        C:\PS> $a[2] -= 1.
        C:\PS> $a
        1
        2
        2

Você não pode 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 determinado valor de uma matriz, use a notação de matriz para atribuir o valor $null ao item em particular. Por exemplo, a instrução a seguir exclui o segundo valor (índice de posição 1) de uma matriz:

        C:\PS> $a = 1,2,3
        C:\PS> $a
        1
        2
        3

        C:\PS> $a[1] = $null
        C:\PS> $a
        1
        3

Para excluir uma variável, use o cmdlet Remove-Variable. Esse método é útil quando a variável é convertida explicitamente em um determinado tipo de dados, e você quer uma variável sem tipo. O comando a seguir exclui a variável $a:

        remove-variable a

O OPERADOR DE ATRIBUIÇÃO POR MULTIPLICAÇÃO (*=)

O operador de atribuição por multiplicação (*=) 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 só valor numérico, ele é 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:

        C:\PS> $a = 3
        C:\PS> $a *= 4
        C:\PS> $a
        12

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

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

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

        C:\PS> $a = "file"
        C:\PS> $a *= 4 
        C:\PS> $a
        filefilefilefile

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

        $a[0] *= 2

O OPERADOR DE ATRIBUIÇÃO POR DIVISÃO (/=)

O operador de atribuição por divisão (/=) divide um valor numérico pelo valor especificado ao lado direito do operador. O operador não pode ser usado com variáveis de cadeias 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:

        C:\PS> $a = 8
        C:\PS> $a /=2
        C:\PS> $a
        4

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

        $a[1] /= 2

O OPERADOR DE ATRIBUIÇÃO POR MÓDULO (%=)

O operador de atribuição por módulo (%=) divide o valor de uma variável pelo valor à direita do operador. Em seguida, o operador %= atribui o restante (conhecido como módulo) à variável. Você somente pode usar esse operador quando uma variável contiver um só valor numérico. Você não pode usar esse operador quando uma variável contiver 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 instruções a seguir 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:

        C:\PS> $a = 7
        C:\PS> $a %= 4
        C:\PS> $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 será retornado. Para exibir o resultado, exiba o valor da variável da seguinte maneira:

        C:\PS> $a = 7
        C:\PS> ++$a
        C:\PS> $a
        8

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

        C:\PS> $a = 7
        C:\PS> (++$a)
        8

O operador de incremento pode ser colocado antes (prefixo) ou depois (sufixo) de uma variável. A versão de prefixo do operador aumenta uma variável antes de seu valor ser usado na instrução, como segue:

        C:\PS> $a = 7
        C:\PS> $c = ++$a
        C:\PS> $a
        8
        C:\PS> $c
        8

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

        C:\PS> $a = 7
        C:\PS> $c = $a++
        C:\PS> $a
        8
        C:\PS> $c
        7

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

        C:\PS> $a = 7
        C:\PS> --$a
        C:\PS> $a
        6
        C:\PS> (--$a)
        5

A versão de prefixo do operador diminui uma variável antes de seu valor ser usado na instrução, como segue:

        C:\PS> $a = 7
        C:\PS> $c = --$a
        C:\PS> $a
        6
        C:\PS> $c
        6

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

        C:\PS> $a = 7
        C:\PS> $d = $a--
        C:\PS> $a
        6
        C:\PS> $d
        7

TIPOS DO MICROSOFT .NET FRAMEWORK

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

        $a = 6 

Para localizar o tipo .NET Framework 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 nenhum argumento:

        C:\PS> $a = 6 
        C:\PS> $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:

        C:\PS> $a = "6"
        C:\PS> $a.gettype().fullname
        System.String

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

        C:\PS> $a = "file"
        C:\PS> $a += 3
        C:\PS> $a
        file3

Se o primeiro valor for um número inteiro, o Windows PowerShell trata todas as operações como operações de números inteiros e converte os novos valores em números inteiros. Isso ocorre no exemplo a seguir:

        C:\PS> $a = 6
        C:\PS> $a += "3"
        C:\PS> $a
        9

Você pode converter uma nova variável escalar em qualquer tipo .NET Framework, colocando o nome do tipo entre colchetes para preceder o nome da variável ou o primeiro valor de atribuição. Quando você converter uma variável, poderá determinar os tipos de dados que podem ser armazenados nela. Além disso, é possível determinar como a variável se comporta quando você a manipula.

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

        C:\PS> [string]$a = 27
        C:\PS> $a += 3
        C:\PS> $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 pode reconverter o tipo de dados de uma variável existente se seu valor não pode ser convertido ao novo tipo de dados. Para alterar o tipo de dados, você deve substituir seu valor da seguinte maneira:

        C:\PS> $a = "string"
        C:\PS> [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 <<<<

        C:\PS> [int]$a =3

Além disso, quando você preceder o nome de uma variável com um tipo de dados, o tipo da variável será bloqueado, a menos que você substitua o tipo explicitamente 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 Windows PowerShell exibirá um erro, como exibido no exemplo a seguir:

        C:\PS> $a = 3
        C:\PS> $a = "string"

        C:\PS> [int]$a = 3
        C:\PS> $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"

        C:\PS> [string]$a = "string"

No Windows PowerShell, os tipos de dados das variáveis que contêm vários itens em uma matriz são tratados de maneira diferente dos tipos de dados das variáveis que contêm um só item. A menos que um tipo de dados seja especificamente atribuído a uma variável de matriz, o tipo de dados será 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 em um tipo de matriz cadeia de caracteres []:

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

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

        [system.datetime]$a = "5/31/2005"

A variável será atribuída a um valor que esteja de acordo com o tipo de dados System.DateTime. O valor da variável $a seria o seguinte:

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

COMO ATRIBUIR DIVERSAS VARIÁVEIS

No Windows PowerShell, você pode atribuir valores a diversas variáveis usando um só 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. Por exemplo, o comando a seguir atribui o valor 1 à variável $a, o valor 2 à variável $b e o valor 3 à variável $c:

        C:\PS> $a, $b, $c = 1, 2, 3

Se o valor de atribuição contiver mais elementos 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 Windows PowerShell atribui o valor 1 à variável $a e o valor 2 à variável $b. Em seguida, ele atribui os valores 3, 4 e 5 à variável $c. Para atribuir os valores da variável $c a três outras variáveis, use o seguinte formato:

        $d, $e, $f = $c

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

Você também pode atribuir um só valor a diversas variáveis, relacionando as variáveis. Por exemplo, o comando a seguir atribui um valor de "três" para todas as quatro variáveis:

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

CMDLETS RELACIONADOS ÀS VARIÁVEIS

Além de usar uma operação de atribuição para configurar o valor de uma 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 e 3 à variável $a.

        Set-Variable -name a -value 1, 2, 3 

CONSULTE TAMBÉM

about_Arrays

about_Hash_Tables

about_Variables

Clear-Variable

Remove-Variable

Set-Variable