Uma introdução ao Shell de Gerenciamento do Exchange

 

Tópico modificado em: 2007-01-31

Por David Strome

Uma novidade no Microsoft Exchange Server 2007 é o Shell de Gerenciamento do Exchange, uma interface de gerenciamento poderosa construída com a tecnologia Microsoft Windows PowerShell. Você pode usar o Shell de Gerenciamento do Exchange para realizar todas as tarefas disponíveis no Console de Gerenciamento do Exchange e tarefas adicionais que não podem ser realizadas no Console de Gerenciamento do Exchange. Além disso, quando você executa uma tarefa no Console de Gerenciamento do Exchange, o mesmo comando fica disponível para o Shell de Gerenciamento do Exchange e é chamado para processar a solicitação.

A Figura 1 mostra o Shell de Gerenciamento do Exchange em ação.

Figura 1   O Shell de Gerenciamento do Exchange

Shell de Gerenciamento do Exchange exibindo movimentação de caixa de correio

À primeira vista, o shell pode parecer desafiador para quem não tem familiaridade com a linha de comando. Mas vamos dar uma olhada nas coisas legais que você pode fazer e em como é fácil começar:

  • Script seguro e fácil   O Console de Gerenciamento do Exchange não usa simplesmente o Shell de Gerenciamento do Exchange para executar as operações. Os assistentes mostram os comandos do Shell de Gerenciamento do Exchange que estão executando. Você pode copiar os comandos que os assistentes criam e colá-los diretamente na linha de comando ou em um script. Após modificar os parâmetros como desejar, teste os scripts ou comandos usando o parâmetro WhatIf, que permite que você veja os resultados antes de fazer alterações em seu ambiente.

    Modificar parâmetros? WhatIf? Parece complicado? Não se preocupe! Dê uma olhada na seção Usando o Shell de Gerenciamento do Exchange", na documentação do Microsoft Exchange Server 2007. Você vai entender tudo rapidinho.

  • Claro e simples   Usamos pares consistentes de verbos e substantivos para identificar claramente o recurso ou componente que está sendo gerenciado, e a ação que está sendo executada. Você não precisa mais adivinhar o que um cmdlet faz. Ao ver o cmdlet Move-Mailbox, você sabe exatamente para que ele é usado. (Sim, isso mesmo. Você o usa para mover caixas de correio!)

  • Maximize seus recursos e seu tempo, não sua frustração   O Shell de Gerenciamento do Exchange fornece a você uma plataforma de scripts flexível e robusta para integração com suas soluções de script atuais, e permite que você se comunique no modo nativo com fontes de dados como COM e WMI (Instrumentação de Gerenciamento do Windows). Use seus recursos e seu tempo de forma sensata para criar soluções úteis em vez de criar a estrutura para oferecer suporte a elas.

  • Repita comigo: Chega de análise de texto!   Com base no Microsoft .NET, os cmdlets do Shell de Gerenciamento do Exchange aceitam e retornam os dados estruturados em vez do texto sem formatação. Dessa forma, você pode transmitir os dados de um lado para o outro com facilidade sem a complicada análise de texto. Você pode até transformar arquivos CSV e XML em objetos que possam ser manipulados e consumidos em uma única linha.

Alguns conceitos básicos

Antes de começar a usar o Shell de Gerenciamento do Exchange, é útil entender alguns conceitos básicos.

  • A tecnologia subjacente do Windows PowerShell   O Windows PowerShell é uma interface de linha de comando nova, poderosa e extremamente flexível, baseada no .NET Framework. Ele combina o melhor de diversos shells, além de alguns ótimos recursos novos. O PowerShell foi projetado para hospedar outros aplicativos, assim como o MMC (Console de Gerenciamento Microsoft) age como hospedeiro para os diversos snap-ins fornecidos com aplicativos instalados no computador. O Shell de Gerenciamento do Exchange é o primeiro snap-in do Microsoft PowerShell a ser lançado.

  • Cmdlets   Um cmdlet, pronunciado "command-let", é a menor unidade de funcionalidade do Shell de Gerenciamento do Exchange. Os cmdlets parecem comandos incluídos em outros shells, por exemplo, o comando Dir encontrado em cmd.exe. Da mesma forma que esses comandos familiares, os cmdlets podem ser chamados diretamente da linha de comando do Shell de Gerenciamento do Exchange e executados no contexto do shell, e não como um processo separado. Diferentemente de outros shells, no Shell de Gerenciamento do Exchange os cmdlets possuem nomes com verbo e substantivo descritivos. O verbo descreve a ação que o cmdlet executa, e o substantivo descreve o componente ou recurso sobre o qual ele age. Por exemplo, você usa o cmdlet New-SystemMessage para criar novas mensagens de notificação de status de entrega (DSN) ou de cota em computadores em que a função de servidor de Transporte de Hub esteja instalada.

    Para obter mais informações sobre cmdlets específicos, consulte a seção Shell de Gerenciamento do Exchange", no nó Referência Técnica da Ajuda do Exchange 2007.

  • Parâmetros de identidade e posicionais   Parâmetros são elementos que fornecem informações ao cmdlet, quer identificando um objeto e seus atributos sobre os quais ele deve agir, quer controlando o modo como o cmdlet executa sua tarefa. Você pode usar o parâmetro Identity com a maioria dos cmdlets do Exchange. O parâmetro Identity dá acesso aos identificadores únicos que se referem a um determinado objeto do Exchange 2007. Isso permite que você execute ações em um objeto específico do Exchange usando o valor único que faz mais sentido para você.

    O parâmetro Identity é uma coleção de valores de outros parâmetros. Esses valores são exclusivos naquele conjunto de objetos. É possível especificar os valores desses outros parâmetros, como Name e DistinguishedName, e eles também podem ser gerados pelo sistema, como uma GUID. Os parâmetros adicionais usados e como eles são preenchidos dependem do objeto a que se referem.

    O parâmetro Identity também é considerado um parâmetro de posição. Um parâmetro posicional permite especificar o valor do parâmetro sem especificar o nome do parâmetro. Um parâmetro é posicional se o atributo Parameter Position for um inteiro. Esse inteiro indica a posição na linha de comando em que o cmdlet encontrará o valor do parâmetro. Como Identity é um parâmetro posicional que reside na posição 1, que é a primeira posição, qualquer valor inserido nessa posição sem um nome de parâmetro é considerado um valor de parâmetro Identity.

    E o que isso significa? Bem, isso reduz o número de pressionamentos de teclas ao digitar comandos. Por exemplo, Get-Mailbox "Kim Akers" executa a mesma ação que Get-Mailbox -Identity "Kim Akers".

  • Pipelining   No Shell de Gerenciamento do Exchange, pipelining se refere ao ato de um cmdlet usar a saída de outro cmdlet ao executar uma operação. Você pode usar pipelining para unir dois ou mais cmdlets. Isso significa que você pode pegar componentes menores e transformá-los em algo mais poderoso. Por exemplo, você pode usar um cmdlet para coletar dados, passar esses dados para um segundo cmdlet para filtrá-los para um subconjunto e, em seguida, passá-los para um terceiro cmdlet para atuar apenas no subconjunto, como no exemplo a seguir, que move todas as caixas de correio do banco de dados de Vendas para o banco de dados de Pesquisa no mesmo servidor:

    Get-MailboxDatabase Sales | Get-Mailbox | Move-Mailbox -TargetDatabase Research
    

    Vê como o símbolo "|" de pipe é usado? Em primeiro lugar, o banco de dados de caixa de correio de Vendas é recuperado com o cmdlet Get-MailboxDatabase e o objeto resultante é canalizado para o cmdlet Get-Mailbox. Em seguida, todas as caixas de correio do banco de dados de Vendas são recuperadas pelo cmdlet Get-Mailbox. O conjunto resultante de caixas de correio é então canalizado para o cmdlet Move-Mailbox, que move as caixas de correio para o banco de dados de caixa de correio de Pesquisa. Esse comando foi exibido na Figura 1 deste artigo.

    Todos os verbos no mesmo conjunto substantivo-cmdlet podem usar informações canalizadas de outro comando. Alguns conjuntos de substantivo-cmdlet permitem que você transmita dados através do pipeline para outro conjunto de substantivo-cmdlet. "Conjunto de substantivo-cmdlet"? O que é isto? Todos os cmdlets do Shell de Gerenciamento do Exchange que gerenciam um recurso específico compartilham o mesmo substantivo, como Mailbox ou AddressList. Para obter uma lista de todos os cmdlets organizados por substantivo, consulte a Lista de cmdlets.

Iniciando o Shell de Gerenciamento do Exchange

Os snap-ins do Windows PowerShell são coleções de cmdlets usados para administrar um aplicativo ou componente maior. Se você não carregar o snap-in do aplicativo específico, não poderá usar seus cmdlets associados.

O que isso significa para você? Se você iniciar o PowerShell sem carregar o snap-in do Shell de Gerenciamento do Exchange e tentar emitir um cmdlet do Shell de Gerenciamento do Exchange, como Get-Mailbox, receberá um erro. Por quê? Porque o cmdlet Get-Mailbox não existe no conjunto principal de cmdlets do PowerShell.

Então, comecemos pelo princípio: Vamos abrir o Shell de Gerenciamento do Exchange. Simplesmente clique em Iniciar, Programas e, em seguida, clique em Microsoft Exchange Server 2007 e em Shell de Gerenciamento do Exchange.

Para obter mais informações para começar, consulte Nova funcionalidade de administração no Shell de Gerenciamento do Exchange.

Obtendo ajuda onde e quando você precisar

Para o Exchange 2007, a equipe de Treinamento de Usuários do Microsoft Exchange desenvolveu um conjunto robusto de documentação, disponível no Shell de Gerenciamento do Exchange e no arquivo de Ajuda do Exchange Server 2007, que está disponível no Console de Gerenciamento do Exchange e online.

No shell, você descobrirá que o cmdlet Get-Help é um recurso de valor incomensurável durante seu aprendizado de navegação pelo Shell de Gerenciamento do Exchange. E certifique-se de consultar a seção de Operações no arquivo de Ajuda do Exchange Server 2007. Ela inclui dezenas de tópicos de procedimentos que ajudarão você a executar a maioria das tarefas administrativas usando o Shell de Gerenciamento do Exchange e o Console de Gerenciamento do Exchange. Você pode acessar o arquivo de Ajuda do Exchange Server 2007 a partir do menu Iniciar do Exchange 2007 e online em Microsoft Exchange Server 2007.

Ajuda no Shell

No próprio shell, use o cmdlet Get-Help para acessar a ajuda específica para cmdlets em diversos formatos. Simplesmente digitar Get-Help exibe informações gerais de ajuda. E o cmdlet Get-Help é ainda mais poderoso quando você começa a fornecer parâmetros.

Para obter ajuda sobre para um cmdlet específico, digite Get-Help seguido pelo cmdlet sobre o qual você deseja obter informações, como Get-Help Get-SystemMessage. Por padrão, o shell exibe uma descrição do cmdlet e sua sintaxe. Ele elimina outras seções que não podem ser usadas por todos os administradores.

Você pode controlar as informações apresentadas para você usando os parâmetros Detailed, Full e Example. Basta adicioná-los ao final do comando. Por exemplo, Get-Help -Full retorna todas as seções de ajuda disponíveis para o cmdlet. Experimente você mesmo os comandos para ver quais informações são exibidas para seus cmdlets favoritos.

Se desejar recuperar informações sobre um parâmetro ou parâmetros específicos em um cmdlet, você pode usar o parâmetro Parameters com o cmdlet Get-Help. Por exemplo, se desejar exibir todos os parâmetros e suas descrições no cmdlet Set-Mailbox que contém a palavra “quota”, digite Get-Help Set-Mailbox –Parameter *quota*.

Ou talvez você deseje exibir uma lista de cmdlets que gerenciam uma função de servidor ou um recurso de componente específicos ou que afetam objetos com determinado escopo de funcionalidade. Você pode fazer isso usando o cmdlet Get-Help e três parâmetros: Função, Componente e Funcionalidade. Quando usar o cmdlet Get-Help com esses parâmetros, lembre-se de colocar os valores que especificar para esses parâmetros entre caracteres curinga (*). Seguem-se exemplos de como chamar Get-Help com cada parâmetro:

  • Get-Help -Role *Mailbox*

  • Get-Help -Component *Recipient*

  • Get-Help -Functionality *Server*

O tópico “Obtendo Ajuda”, no arquivo de Ajuda do Exchange Server 2007, lista todos os valores de função, componentes e funcionalidade que podem ser usados.

Formatando a saída do comando

Por padrão, quando a saída do comando é exibida na tela, o Shell de Gerenciamento do Exchange exibe apenas um subconjunto das propriedades disponíveis para cada objeto. Por quê? Porque cada objeto pode conter dezenas de propriedades, e você irá querer otimizar a saída do comando para suas necessidades. Você pode acessar e exibir facilmente todas essas propriedades, canalizando a saída de um comando para os três cmdlets de formatação a seguir: Format-List, Format-Table e Format-Wide.

Format-List e Format-Table são usados com mais freqüência, então vamos estudá-los com mais atenção.

O cmdlet Format-List recebe a entrada da pipeline e produz uma lista em colunas verticais de todas as propriedades especificadas de cada objeto. Você pode especificar quais propriedades deseja exibir usando o parâmetro Property, que é um parâmetro posicional. Se você chamar o cmdlet Format-List sem nenhum parâmetro especificado, todas as propriedades serão produzidas na saída. O cmdlet Format-List quebra as linhas em vez de truncá-las. Uma das melhores utilizações para o cmdlet Format-List é substituir a saída padrão de um cmdlet, para que você possa recuperar as informações mais destacadas ou adicionais, como neste exemplo, Get-DistributionGroup | Format-List Name, *OnlyFrom, PrimarySmtpAddress, *Size*. A Figura 2 mostra a saída desse comando.

Figura 2   Exemplo de saída de Format-List

Exemplo de saída para o cmdlet Format-Table

O cmdlet Format-Table permite exibir itens em um formato de tabela com cabeçalhos de rótulo e colunas de dados de propriedade. Por padrão, muitos cmdlets, como Get-Mailbox e Get-JournalRule, usam o formato de tabela para saída. Entre os parâmetros para o cmdlet Format-Table estão Properties e GroupBy. Eles funcionam exatamente como no cmdlet Format-List. Para exibir linhas longas de informações de propriedades completamente, em vez de truncar o final de uma linha, use o parâmetro Wrap com o cmdlet Format-Table, como no exemplo a seguir: Get-Mailbox -Database Research | Format-Table Name, ProhibitSendQuota, Database -Wrap. A Figura 3 mostra a saída desse comando.

Figura 3   Exemplo de saída de Format-Table

Exemplo de saída para o cmdlet Format-Table

Você também pode especificar um caractere curinga "*" com um nome de propriedade parcial com os cmdlets Format-List e Format-Table, como exibido na Figura 2. Se você incluir um caractere curinga, poderá corresponder várias propriedades sem precisar digitar o nome de cada propriedade individualmente. Por exemplo, Get-Mailbox | Format-List -Property Email* retorna todas as propriedades que começam com Email. Menos digitação é mais tempo para brincar com o Exchange 2007!

Para obter mais informações

Para saber mais sobre o Exchange 2007 e o Shell de Gerenciamento do Exchange, consulte os tópicos a seguir:

e20b37a2-3200-4bd5-af71-09c580f78091 David Strome - Escritor Técnico, Microsoft Exchange Server

-