Você está na página 1de 13

TPICO

about_assignment_operators
DESCRIO RESUMIDA
Descreve como usar operadores para atribuir valores a variveis.

DESCRIO LONGA
Os operadores de atribuio atribuem um ou mais valores a uma
varivel. Eles podem executar operaes numricas nos valores antes da
atribuio.
O Windows PowerShell oferece suporte aos seguintes operadores de
atribuio.
Operador Descrio
------- ----------=
Define o valor de uma varivel para o valor especificado.
+=

Aumenta o valor de uma varivel segundo o valor especificado


ou acrescenta o valor especificado ao valor existente.

-=

Diminui do valor de uma varivel o valor especificado.

*=

Multiplica o valor de uma varivel pelo valor especificado


ou acrescenta o valor especificado ao valor existente.

/=

Divide o valor de uma varivel pelo valor especificado.

%=

Divide o valor de uma varivel pelo valor especificado


e atribui o resto (mdulo) varivel.

++

Aumenta em 1 o valor de uma varivel, propriedade que


pode ser atribuda ou elemento da matriz.

--

Diminui em 1 o valor de uma varivel, propriedade que


pode ser atribuda ou elemento da matriz.

SINTAXE
A sintaxe dos operadores de atribuio a seguinte:
<expresso-atribuvel> <operador-atribuio> <valor>
Expresses que podem ser atribudas incluem variveis e
propriedades. O valor pode ser nico, uma matriz de valores e
tambm um comando, uma expresso ou uma instruo.
Os operadores de incremento e decremento so operadores unrios.
Cada um deles tem verses prefixada e ps-fixada.
<expresso-atribuvel><operador>
<operador><expresso-atribuvel>

A expresso atribuvel deve ser um nmero ou deve poder ser


convertida em um nmero.
ATRIBUINDO VALORES
Variveis so espaos de memria nomeados que armazenam valores. Voc
armazena os valores em variveis usando o operador de atribuio (=).
O novo valor pode substituir o valor existente da varivel ou voc
pode acrescentar um novo valor ao valor existente.
O operador de atribuio bsico o sinal de igual (=)(ASCII 61).
Por exemplo, a instruo a seguir atribui o valor Windows PowerShell
varivel $MyShell:
$MyShell = "Windows PowerShell"
Quando voc atribui um valor a uma varivel no Windows PowerShell,
a varivel criada caso ainda no exista. Por exemplo, a primeira das
duas instrues de atribuio a seguir cria a varivel $a e atribui o
valor 6 a $a. A segunda instruo de atribuio atribui o valor 12 a $a.
A primeira instruo cria uma nova varivel. A segunda instruo altera
apenas seu valor:
$a = 6
$a = 12
Variveis no Windows PowerShell no tm um tipo de dados
especfico a menos que voc as converta. Quando uma varivel
contiver apenas um objeto, ela assumir o tipo de dados desse
objeto. Quando uma varivel contiver um conjunto de objetos, ela
ter o tipo de dados System.Object. Portanto, voc pode atribuir
qualquer tipo de objeto ao conjunto. O exemplo a seguir mostra
que voc pode adicionar objetos de processos, objetos de servio,
cadeias de caracteres e inteiros a uma varivel sem gerar um erro:
$a
$a
$a
$a

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

Como o operador de atribuio (=) tem uma precedncia inferior


do operador de pipeline (|), os parnteses no so necessrios
para atribuir o resultado de um pipeline de comando a uma varivel.
Por exemplo, o comando a seguir classifica os servios no
computador e atribui os servios classificados varivel $a:
$a = get-service | sort name
Voc tambm pode atribuir o valor criado por uma instruo a uma

varivel, conforme mostrado no exemplo a seguir:


$a = if ($b -lt 0) { 0 } else { $b }
Este exemplo atribui 0 varivel $a se o valor de $b for menor
que 0. Ele atribui o valor de $b a $a se o valor de $b no for
menor que zero.

O OPERADOR DE ATRIBUIO (=)


O operador de atribuio (=)atribui valores a variveis. Se a
varivel j tiver um valor, o operador de atribuio (=)
substituir o valor sem aviso.
A instruo a seguir atribui o valor inteiro 6 varivel $a:
$a = 6
Para atribuir um valor de cadeia de caracteres a uma varivel,
coloque o valor entre aspas, conforme mostrado a seguir:
$a = "beisebol"
Para atribuir uma matriz (vrios valores) a uma varivel, separe
os valores com vrgulas, conforme mostrado a seguir:
$a = "ma", "laranja", "limo", "uva"
Para atribuir uma tabela de hash a uma varivel, use a notao
padro de tabela de hash no Windows PowerShell. Digite um sinal
de arroba (@) seguido de pares de chave/valor separados por
ponto-e-vrgulas (;) e colocados entre chaves ({ }). Por exemplo,
para atribuir uma tabela de hash varivel $a, digite:
$a = @{um=1; dois=2; trs=3}
Para atribuir valores hexadecimais a uma varivel, coloque "0x"
antes do valor. O Windows PowerShell converte o valor hexadecimal
(0x10) em um valor decimal (neste caso, 16) e atribui esse valor
varivel $a. Por exemplo, para atribuir o valor 0x10 varivel
$a, digite:
$a = 0x10
Para atribuir um valor exponencial a uma varivel, digite o
nmero da raiz, a letra "e" e um nmero que represente um
mltiplo de 10. Por exemplo, para atribuir o valor 3,1415 elevado
potncia 1.000 varivel $a, digite:

$a = 3.1415e3
O Windows PowerShell tambm pode converter kilobytes (KB),
megabytes (MB) e gigabytes (GB) em bytes. Por exemplo, para
atribuir o valor 10 kilobytes varivel $a, digite:
$a = 10kb
O OPERADOR DE ATRIBUIO POR ADIO (+=)
O operador de atribuio por adio (+=) incrementa o valor de
uma varivel ou acrescenta o valor especificado ao valor existente.
A ao depende de a varivel ter um tipo numrico ou de cadeia
de caracteres e tambm de conter um nico valor (escalar) ou
vrios valores (um conjunto).
O operador += combina duas operaes. Primeiro, ele adiciona e depois
atribui. Portanto, as seguintes instrues so equivalentes:
$a += 2
$a = ($a + 2)
Quando a varivel contm um nico valor numrico, o operador +=
incrementa ao valor existente a quantidade especificada do lado
direito do operador. Em seguida, o operador atribui o valor
resultante varivel.
O exemplo a seguir mostra como usar o operador += para aumentar o
valor de uma varivel:
C:\PS> $a = 4
C:\PS> $a += 2
C:\PS> $a
6
Quando o valor da varivel uma cadeia de caracteres, o valor no lado
direito do operador acrescentado cadeia, da seguinte forma:
C:\PS> $a = "Windows"
C:\PS> $a +- " PowerShell"
C:\PS> $a
Windows PowerShell
Quando o valor da varivel est em uma matriz, o operador +=
acrescenta os valores no lado direito do operador matriz. A
menos que a matriz seja explicitamente digitada por transmisso,
voc pode acrescentar qualquer tipo de valor matriz, da
seguinte forma:

C:\PS>
C:\PS>
C:\PS>
1
2
3
2
C:\PS>
C:\PS>
1
2
3
2
String

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

$a += "String"
$a

Quando o valor de uma varivel uma tabela de hash, o operador +=


acrescenta o valor no lado direito do operador tabela de hash.
Porm, como o nico tipo que voc pode adicionar a uma tabela de hash
outra tabela de hash, todas as outras atribuies falharo.
Por exemplo, o comando a seguir atribui uma tabela de hash
varivel $a.
Em seguida, ele usa o operador += para acrescentar outra tabela
de hash tabela de hash existente, adicionando de modo eficaz um
novo par chave/valor tabela de hash existente. Esse comando
bem-sucedido, conforme mostrado na sada:
C:\PS> $a = @{a = 1; b = 2; c = 3}
C:\PS> $a += @{mode = "write"}
C:\PS> $a
Nome
Valor
-------a
1
b
2
mode
write
c
3
O seguinte comando tenta acrescentar um inteiro (1) tabela de
hash na varivel $a. Este comando falha:
C:\PS> $a = @{a = 1; b = 2; c = 3}
C:\PS> $a += 1
Voc pode adicionar outra tabela de hash somente a uma tabela
de hash.
At line:1 char:6
+ $a += <<<< 1
O OPERADOR DE ATRIBUIO POR SUBTRAO (-=)
O operador de atribuio por subtrao -= decrementa do valor de uma
varivel o valor especificado no lado direito do operador.
Esse operador no pode ser usado com variveis de cadeia de
caracteres e no pode ser usado para remover um elemento de um
conjunto.

O operador -= combina duas operaes. Primeiro, ele subtrai.


Depois, atribui. Portanto, as seguintes instrues so equivalentes:
$a -= 2
$a = ($a - 2)
O exemplo a seguir mostra como usar o operador -= para diminuir o
valor de uma varivel:
C:\PS> $a = 8
C:\PS> $a -= 2
C:\PS> $a
6
Voc tambm pode usar o operador de atribuio -= para diminuir o
valor de um membro de uma matriz numrica. Para 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)
diminudo em 1:
C:\PS> $a = 1,2,3
C:\PS> $a[2] -= 1.
C:\PS> $a
1
2
2
Voc no pode usar o operador -= para excluir os valores de uma
varivel. Para excluir todos os valores que so atribudos a uma
varivel, use os cmdlets Clear-Item ou Clear-Variable para
atribuir o valor $null ou "" varivel.
$a = $null
Para excluir um valor especfico de uma matriz, use notao de
matriz para atribuir o valor $null ao item especfico. Por exemplo, a
seguinte instruo exclui o segundo valor (posio de ndice 1) da 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 varivel, use o cmdlet Remove-Variable. Esse


mtodo til quando a varivel convertida explicitamente em um
tipo de dados especfico e voc deseja uma varivel sem tipo.
O comando a seguir exclui a varivel $a:
remove-variable a
O OPERADOR DE A ATRIBUIO POR MULTIPLICAO (*=)
O operador de atribuio por multiplicao (*=) multiplica um valor
numrico ou acrescenta o nmero especificado de cpias do valor da
cadeia de caracteres de uma varivel.
Quando uma varivel contm um nico valor numrico, esse valor
multiplicado pelo valor no lado direito do operador. O exemplo a
seguir mostra como usar o operador *= para multiplicar o valor
de uma varivel:
C:\PS> $a = 3
C:\PS> $a *= 4
C:\PS> $a
12
Neste caso, o operador *= combina duas operaes. Primeiro, ele
multiplica. Depois, atribui. Portanto, as seguintes instrues so
equivalentes:
$a *= 2
$a = ($a * 2)
Quando uma varivel contm um valor de cadeia de caracteres, o Windows
PowerShell acrescenta o nmero especificado de cadeias ao valor, conforme
mostrado a seguir:
C:\PS> $a = "arquivo"
C:\PS> $a *= 4
C:\PS> $a
arquivoarquivoarquivoarquivo
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
(posio de ndice 0) por 2:
$a[0] *= 2
O OPERADOR DE ATRIBUIO POR DIVISO (/=)
O operador de atribuio por diviso (/=) divide um valor
numrico pelo valor especificado no lado direito do operador.

O operador no pode ser usado com variveis de cadeias de caracteres.


O operador /= combina duas operaes. Primeiro, ele divide.
Depois, atribui. Portanto, as duas seguintes instrues so
equivalentes:
$a /= 2
$a = ($a / 2)
Por exemplo, o comando a seguir usa o operador /= para dividir o
valor de uma varivel:
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 na matriz (posio de ndice 1)
por 2:
$a[1] /= 2
O OPERADOR DE ATRIBUIO POR MDULO (%=)
O operador de atribuio por mdulo (%=) divide o valor de uma
varivel pelo valor no lado direito do operador. Em seguida, o
operador %= atribui o resto (conhecido como mdulo) varivel.
Voc s pode usar esse operador quando uma varivel contm um
nico valor numrico. No possvel us-lo quando uma varivel
contm uma varivel de cadeia de caracteres ou uma matriz.
O operador %= combina duas operaes. Primeiro, ele divide e
determina o resto e, em seguida, atribui o resto varivel.
Portanto, as seguintes instrues so equivalentes:
$a %= 2
$a = ($a % 2)
O exemplo a seguir mostra como usar o operador %= para salvar o
resto 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 varivel em 1.


Quando voc usa o operador de incremento em uma instruo simples,
nenhum valor retornado.
Para ver o resultado, exiba o valor da varivel, da seguinte forma:
C:\PS> $a = 7
C:\PS> ++$a
C:\PS> $a
8
Para forar um valor a ser retornado, coloque a varivel e o
operador entre parnteses, da seguinte forma:
C:\PS> $a = 7
C:\PS> (++$a)
8
O operador de incremento pode ser colocado antes de (prefixado)
ou depois de (ps-fixado) uma varivel. A verso prefixada do operador
incrementa uma varivel antes de seu valor ser usado na instruo, da
seguinte forma:
C:\PS>
C:\PS>
C:\PS>
8
C:\PS>
8

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

A verso ps-fixada do operador incrementa uma varivel depois de


seu valor ser usado na instruo. No exemplo a seguir, as
variveis $c e $a tm valores diferentes porque o valor
atribudo a $c antes de $a ser alterada:
C:\PS>
C:\PS>
C:\PS>
8
C:\PS>
7

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

O operador de decremento (--) reduz o valor de uma varivel em 1. Como


ocorre com o operador de incremento, nenhum valor retornado quando
se usa o operador em uma instruo simples. Use parnteses para
retornar um valor, da seguinte forma:
C:\PS> $a = 7
C:\PS> --$a
C:\PS> $a
6

C:\PS> (--$a)
5
A verso prefixada do operador decrementa uma varivel antes de
seu valor ser usado na instruo, da seguinte forma:
C:\PS>
C:\PS>
C:\PS>
6
C:\PS>
6

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

A verso ps-fixada do operador decrementa uma varivel depois de


seu valor ser usado na instruo. No exemplo a seguir, as
variveis $d e $a tm valores diferentes porque o valor
atribudo a $d antes de $a ser alterada:
C:\PS>
C:\PS>
C:\PS>
6
C:\PS>
7

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

TIPOS DO MICROSOFT .NET FRAMEWORK


Por padro, quando uma varivel tem apenas um valor, o valor atribudo
a ela determina o tipo de dados da varivel. Por exemplo, o comando
a seguir cria uma varivel que tem o tipo Inteiro (System.Int32):
$a = 6
Para localizar o tipo do .NET Framework de uma varivel, use o mtodo
GetType e sua propriedade FullName, conforme mostrado a seguir. Inclua os
parnteses depois do nome de mtodo GetType, mesmo que a chamada de
mtodo no tenha argumentos:
C:\PS> $a = 6
C:\PS> $a.gettype().fullname
System.Int32
Para criar uma varivel que contenha uma cadeia de caracteres,
atribua um valor da cadeia de caracteres varivel. Para indicar
que o valor uma cadeia de caracteres, coloque-o entre aspas,
conforme mostrado a seguir:
C:\PS> $a = "6"
C:\PS> $a.gettype().fullname
System.String

Se o primeiro valor atribudo varivel for uma cadeia de


caracteres, o Windows PowerShell tratar todas as operaes como
de cadeias de caracteres e converter novos valores em cadeias.
Isso ocorre no seguinte exemplo:
C:\PS> $a = "arquivo"
C:\PS> $a += 3
C:\PS> $a
arquivo3
Se o primeiro valor for um nmero inteiro, o Windows PowerShell
tratar todas as operaes como sendo com inteiros e converter
novos valores em inteiros. Isso ocorre no seguinte exemplo:
C:\PS> $a = 6
C:\PS> $a += "3"
C:\PS> $a
9
Voc pode converter uma nova varivel escalar em qualquer tipo do .NET
Framework, colocando o nome do tipo entre colchetes, que precedam o
nome da varivel ou o primeiro valor de atribuio. Ao converter uma
varivel, voc pode determinar os tipos de dados que podem ser
armazenados na varivel. Pode determinar tambm como a varivel se
comporta quando voc a manipula.
Por exemplo, o comando a seguir converte a varivel como 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 varivel:
$a = [string]27
Ao converter uma varivel para um tipo especfico, a conveno comum
converter a varivel, mas no o valor. Porm, voc no poder
reconverter o tipo de dados de uma varivel existente se o seu valor
no puder ser convertido no novo tipo de dados. Para alterar o tipo
de dados, voc deve substituir seu valor, da seguinte forma:
C:\PS> $a = "string"
C:\PS> [int]$a
No possvel converter o valor "string" para o tipo
"System.Int32". Erro: "A cadeia de caracteres de entrada no

est em um formato correto".


At line:1 char:8
+ [int]$a <<<<
C:\PS> [int]$a =3
Alm disso, ao colocar um tipo de dados antes do nome de uma
varivel, o tipo dessa varivel bloqueado at que voc substitua
explicitamente o tipo, especificando outro tipos de dados. Se voc
tentar atribuir um valor incompatvel com o tipo existente e no substituir
explicitamente o tipo, o Windows PowerShell exibir um erro, conforme
mostrado no exemplo a seguir:
C:\PS> $a = 3
C:\PS> $a = "string"
C:\PS> [int]$a = 3
C:\PS> $a = "string"
No possvel converter o valor "string" para o tipo
"System.Int32". Erro: "A cadeia de caracteres de entrada no
est em um formato correto".
At line:1 char:3
+ $a <<<< = "string"
C:\PS> [string]$a = "string"
No Windows PowerShell, os tipos de dados de variveis que contm
vrios itens em uma matriz so tratados de modo diferente dos
tipos de dados de variveis que contm um nico item. A menos que
um tipo de dados seja especificamente atribudo a uma varivel de
matriz, ele sempre ser System.Object []. Esse tipo de dados
especfico de matrizes.
Em alguns casos, voc pode substituir o tipo padro especificando
outro tipo. Por exemplo, o comando a seguir converte a varivel
em um tipo de matriz string []:

[string []] $a = "um", "dois", "trs"


As variveis do Windows PowerShell podem ser de qualquer tipo de dados
do .NET Framework. Alm disso, voc pode atribuir qualquer tipo de dados
totalmente qualificado do .NET Framework disponvel no processo atual. Por
exemplo, o seguinte comando especifica um tipo de dados System.DateTime:
[system.datetime]$a = "31/5/2005"
Ser atribudo um valor varivel em conformidade com o tipo de dados
System.DateTime. O valor da varivel $a seria o seguinte:
Tera-feira, 31 de maio de 2005 00:00:00

ATRIBUINDO VRIAS VARIVEIS


No Windows PowerShell, voc pode atribuir valores a muitas
variveis com um nico comando. O primeiro elemento do valor de
atribuio atribudo primeira varivel, o segundo atribudo
segunda, o terceiro terceira e assim por diante. Por exemplo,
o comando a seguir atribui o valor 1 varivel $a, o valor 2
varivel $b e o valor 3 varivel $c.
C:\PS> $a, $b, $c = 1, 2, 3
Se o valor de atribuio contiver mais elementos do que variveis,
todos os valores restantes sero atribudos ltima varivel.
Por exemplo, o comando a seguir contm trs variveis e cinco
valores:
$a, $b, $c = 1, 2, 3, 4, 5
Portanto, o Windows PowerShell atribui o valor 1 varivel $a e
o valor 2 varivel $b. Ele atribui os valores 3, 4 e 5
varivel $c. Para atribuir os valores na varivel $c a trs
outras variveis, use o seguinte formato:
$d, $e, $f = $c
Esse comando atribui o valor 3 varivel $d, o valor 4
varivel $e e o valor 5 varivel $f.
Voc tambm pode atribuir um nico valor a vrias variveis
encadeando as variveis. Por exemplo, o comando a seguir atribui
um valor de "trs" a todas as quatro variveis:
$a = $b = $c = $d = "trs"
CMDLETS RELACIONADOS A VARIVEIS
Alm de usar uma operao de atribuio para definir um valor de
varivel, voc tambm pode usar o cmdlet Set-Variable. Por exemplo,
o comando a seguir usa Set-Variable para atribuir uma matriz de
1, 2, 3 varivel $a.
Set-Variable -name a -value 1, 2, 3
CONSULTE TAMBM
about_Arrays
about_Hash_Tables
about_Variables
Clear-Variable
Remove-Variable
Set-Variable