Variáveis definidas pelo usuário

 

Aplica-se a: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Tópico modificado em: 2006-09-21

Uma variável é um local no qual as informações são armazenadas. Ao contrário da maioria dos ambientes de programação, no Shell de Gerenciamento do Exchange, não é preciso declarar uma variável antes de usá-la.

Você designa uma variável precedendo uma cadeia de caracteres pelo sinal de cifrão ($). Será preciso colocar a cadeia de caracteres entre chaves ({ }) se ela contiver espaços ou outros caracteres especiais. Ao usar a notação de referência de matriz ([ ]), você pode endereçar os elementos de uma matriz ou variável de tabela hash.

Para obter mais informações sobre matrizes, consulte Matrizes.

Usando variáveis para armazenar valores

As variáveis são muito úteis se você deseja armazenar um valor. É possível atribuir valores às variáveis usando um operador de atribuição. Para obter mais informações sobre operadores, consulte Sintaxe.

Por exemplo, para atribuir um valor igual a 8 à variável $Example, use o seguinte comando:

$Example = 8

Esse comando atribui o número inteiro 8 à variável $Example. Você pode então chamar a variável $Example mais tarde em outro comando para chamar o valor novamente. Os valores especificados em uma variável são tratados exatamente como se o valor que ela contém tivesse sido digitado no local em que a variável foi especificada. Por exemplo, os dois comandos a seguir serão equivalentes se a $Example2 for atribuído o valor "Hello":

Write-Host $Example2
Write-Host "Hello"

Armazenando a saída de um comando em uma variável

Você pode também armazenar a saída de comandos em uma variável para uso posterior. Ao atribuir um comando a uma variável, o comando é avaliado no momento em que ele é executado. A saída desse comando é atribuída à variável. Por exemplo, se você executar $CurrentDate = Get-Date na linha de comando e chamar $CurrentDate repetidamente por vários segundos, o valor relatado será o mesmo sempre que a variável for chamada.

Ao atribuir a saída de um comando a uma variável, você também pode acessar as propriedades e os métodos do objeto subjacente. Por exemplo, para exibir as propriedades e os métodos disponíveis ao atribuir Get-Date a $CurrentDate, você pode usar o comando $CurrentDate | Get-Member. Ao usar o comando $CurrentDate | Get-Member, as propriedades a seguir são retornadas em uma lista:

Date                 Property       System.DateTime Date {get;}
Day                  Property       System.Int32 Day {get;}
DayOfWeek            Property       System.DayOfWeek DayOfWeek {get;}
DayOfYear            Property       System.Int32 DayOfYear {get;}
Hour                 Property       System.Int32 Hour {get;}
Kind                 Property       System.DateTimeKind Kind {get;}
Millisecond          Property       System.Int32 Millisecond {get;}
Minute               Property       System.Int32 Minute {get;}
Month                Property       System.Int32 Month {get;}
Second               Property       System.Int32 Second {get;}
Ticks                Property       System.Int64 Ticks {get;}
TimeOfDay            Property       System.TimeSpan TimeOfDay {get;}
Year                 Property       System.Int32 Year {get;}
DateTime             ScriptProperty System.Object DateTime {get=if ($this.Di...

Você pode então chamar uma dessas propriedades digitando a variável, um ponto (.) e a propriedade que deseja exibir. Por exemplo, para exibir o ano armazenado em uma variável, use o seguinte comando:

$CurrentDate.Year

Ao acessar as propriedades de uma variável, você pode facilmente manipular e usar cada parte de informação armazenada na variável sem o uso da análise do texto.

Armazenando a saída do comando Dir em uma variável

Você pode também armazenar a saída do comando Dir em uma variável. Já que o comando Dir retorna várias linhas ao ser executado, cada linha retornada é armazenada em uma variável como um novo elemento da matriz. Você pode então acessar cada objeto de arquivo armazenado na matriz recém-criada. Para obter mais informações sobre matrizes, consulte Matrizes.

O comando a seguir atribui a saída do comando Dir à variável $DirOutput:

$DirOutput = Dir

Você pode então selecionar um objeto de arquivo específico ao determinar o índice de matriz que deseja exibir, como a seguir:

$DirOutput[1].Name

Ou pode criar um loop simples que percorre toda a matriz e exibe o nome e o tamanho de cada arquivo armazenado nela, como a seguir:

0..$DirOutput.Length | ForEach { $DirOutput[$_].Name + " is " + $DirOutput[$_].Length + " bytes long." }

A lista a seguir examina esse exemplo:

  • O comando 0..$DirOutput.Length instrui o Shell de Gerenciamento do Exchange a enviar um número inteiro a partir de 0 ao comprimento máximo da matriz armazenada na variável $DirOutput.

  • A saída do comando 0..$DirOutput.Length é canalizada para o comando ForEach que percorre cada elemento da matriz até atingir o final da matriz. O comando ForEach executa os comandos que estão entre chaves " { } ".

  • A variável $_ armazena o objeto atual que está na pipeline. Nesse caso, o objeto na pipeline é um número inteiro produzido pelo comando 0..$DirOutput.Length, já que vai de 0 ao comprimento máximo da matriz. Essa variável é usada no comando $DirOutput[$_].Name e no comando $DirOutput[$_].Length para selecionar o elemento da matriz a ser acessado.

  • Para obter mais informações sobre a variável $_, consulte Variáveis de Shell.

  • Os sinais de mais " + " concatenam a saída do comando $DirOutput[$_].Name e do comando $DirOutput[$_].Length, juntamente com as cadeias de caracteres fornecidas, para criar uma saída semelhante à seguinte:

    abv_dg.dll is 416144 bytes long.
    addxa.dll is 285056 bytes long.
    ASDat.MSI is 5626880 bytes long.
    ASEntDat.MSI is 5626880 bytes long.
    ASEntIRS.MSI is 910336 bytes long.
    ASEntSig.MSI is 45056 bytes long.
    BPA.Common.dll is 211848 bytes long.
    BPA.ConfigCollector.dll is 101272 bytes long.
    BPA.NetworkCollector.dll is 52128 bytes long.
    

Esses exemplos mostram que você pode usar a propriedade Length mais de uma vez para exibir diferentes informações sobre a mesma variável. Você pode fazer isso já que mais de um tipo de dado está armazenado na variável $DirOutput. O primeiro tipo de dado é o próprio objeto de diretório e o segundo tipo de dado são os objetos de arquivos. Ao executar o comando $DirObject.Length, sem especificar um índice de matriz, você estará acessando os tipos de objeto pai de diretório armazenados na matriz. Ao especificar um índice de matriz, como $DirObject[5].Length, você estará acessando os objetos filho do arquivo armazenados no objeto do diretório.

Esse comportamento existe em muitos objetos. Você pode normalmente acessar vários níveis de dados de objeto contidos em uma única variável. A capacidade de acessar esses dados torna o Shell de Gerenciamento do Exchange muito flexível.