Exchange Server 2007 e Windows PowerShell

Por Anderson Patricio

Publicado em: 13 de agosto de 2006

O Exchange 2007 possui inúmeras funcionalidades novas, e com a parte administrativa não podia ser diferente, a mesma está com novas mudanças nesta versão, o antigo ESM (Exchange System Manager) se tornou Exchange Management Console e foi totalmente reescrito e agora utiliza o Windows PowerShell (também conhecido como Monad) para gerenciar o Exchange 2007.

Vamos ver aonde cada uma destas novas tecnologias e funcionalidades vem ajudar os administradores de mensageria a realizarem suas tarefas.

Microsoft .NET e .NET Framework

Antes de analisarmos o Exchange 2007 com o Monad é interessante termos o conhecimento sobre as tecnologias .Net Framework e Microsoft .NET.

O Microsoft .NET é a iniciativa da Microsoft de software para conectar informação, pessoas, sistemas e dispositivos. A tecnologia é composta de 4 pilares:

  • .Net Framework que é utilizado para produzir e rodar softwares, incluindo aplicações web, aplicações para dispositivos móveis, integração com protocolos abertas, tais como: XML (Extensible Markup Language), SOAP e HTTP

  • Ferramentas de desenvolvimento (Visual Studio .NET) para maximizar o desenvolvimento de aplicações com o .NET Framework

  • Conjunto de servidores, incluindo Microsoft Windows Server 2003, Microsoft SQL Server, Microsoft BizTalk Server para integração, execução, operação e gerenciamento de serviços web e aplicações web

  • Parte cliente, como Windows XP, Windows CE e Microsoft Office XP

Por sua vez o .Net Framework é um componente do Windows para desenvolvimento e execução da nova geração de aplicações e serviços web. Atualmente o .NET Framework possui:

  • Suporte a mais de 20 linguagens de desenvolvimento

  • Permite que os desenvolvedores gastem seu tempo desenvolvendo a lógica principal do seu software

  • Torna fácil o desenvolvimento de aplicações

Em suma o .Net Framework é um conjunto de bibliotecas prontas para os desenvolvedores, onde os mesmos só precisam instanciar classes e objetos para desenvolver suas aplicações, tornado o desenvolvimento mais fácil e ágil.

Administrando o Exchange 2007

O Exchange 2007 agora possui 2 formas de administração distintas:

  • GUI (Graphical User Interface): Como ocorre hoje, via interface gráfica. No Exchange 2007 o nome da GUI é Exchange Management Console, mas esta nova console é muito diferente da anterior e totalmente integrada com o Windows PowerShell.

  • CLI (Command-Line Interface): nesta nova versão podemos administrar o Exchange através de linha de comando, utilizando para isto interpretador de comandos Windows PowerShell. Esta nova forma é conhecida como Exchange Management Shell. Outra grande mudança foi que o setup do produto também pode ser feito via linha de comando, através de um utilitário que acompanha o produto.

Arquitetura do Windows PowerShell

A arquitetura do Windows PowerShell é simples, é composta do Windows PowerShell engine que possui sub-componentes (Script and Command Parser, Extended Type Sytem, Cmdlets, Session Sate e NameSpace Providers), o Windows PowerShell pode ser acesso diretamente via Command Shell, através de interface gráfica MMC Snap-in ou através de outros hosts, quando o acesso é feito via interface gráfica (WinForms) ele possui uma interface chamada Monad Data Provider que vem antes da engine.

O Windows PowerShell além de permitir o controle do Exchange Server 2007, nos permite utilizar outros Providers para termos acesso ao Registro, Sistema de arquivos, Certificados Digitais, Active Directory e etc.. sempre utilizando à mesma nomenclatura de comandos (cmdlets).
Cc716438.powershell-01(pt-br,TechNet.10).jpg
Arquitetura do Windows PowerShell

Windows PowerShell (Monad)

O Monad é um poderoso shell que permite a criação de scripts, o que diferencia ele do tradicional cmd.exe? O Monad é totalmente baseado em .Net Framework, com isto quando rodamos comandos a partir do mesmo não precisamos ter um executável para executarmos as tarefas porque ele faz uso das bibliotecas utilizando o .Net Framework, que é à base do sistema operacional do Microsoft Windows, para manipular as informações.

Como podemos perceber, todas as chamadas da interface gráfica serão feitas para a Engine do Monad, portanto, também poderemos administrar todo o Exchange 2007 a partir da linha de comando.

O Windows PowerShell possui uma nomenclatura para os comandos do Exchange, os comandos são chamados de cmdlets e é a união de um verbo (get, new, update, remove, etc..) mais um nome (Mailbox, TransportAgent, ServiceHealth, etc..) podendo ser seguido ou não de parâmetros. Atualmente temos em torno de 350 cmdlets com inúmeros parâmetros no Exchange 2007.

Vamos analisar o cmdlet Get-Mailbox que lista as mailbox de determinado servidor, servidor este definido pelo parâmetro -Server seguido do nome do servidor, em nosso exemplo Server1.
Cc716438.powershell-02(pt-br,TechNet.10).jpg

Abaixo temos alguns verbos e Nomes possíveis no Windows PowerShell:

Verbos

Nomes

Update

MailboxDatabase

New

StorageGroup

Get

SendConnector

Remove

TransportAgent

Set

MobileDevice

Add

SystemHealth

Enable

ServiceHealth

Mount

JournalRule

Dismount

MAPIConnectivity

Disable

ContentIndex

Test

DistributionGroup

Uma outra facilidade que o Windows PowerShell nos permite é a possibilidade de utilizar pipes, ou seja, a saída de um comando ser utilizado em outro cmdlet, com isto conseguimos uma flexibilidade através da linha de comando sem a necessidade criar scripts. Exemplo:

Cmdlet

Descrição

get-mailbox

Lista todas mailboxes independente do servidor que estejam

get-mailbox | group-object Database

A partir do primeiro get-mailbox que lista todas as mailboxes o segundo cmdlet group-object Database apresentará na tela todos os usuários aninhados pela database as quais pertencem

Novo Exchange Management Console

Como vimos na arquitetura do Windows PowerShell o Exchange Management Console faz acesso a engine do Windows PowerShell para mostrar as configurações e também para executar tarefas no Exchange Server.

O Exchange Management Console foi reescrito do zero e é baseado em WinForms, quando executamos uma tarefa qualquer o mesmo passa cmdlets para a engine do Windows PowerShell para serem executadas, com isto todas as ações efetuadas via interface gráfica podem ser reproduzidas por linha de comando.

E o novo Exchange Management Console agora conta com 4 painéis sensíveis ao contexto, no primeiro painel temos todas as configurações de organização, funções dos servidores e o Toolbox que é um conjunto de ferramentas para auxílio do administrador, este primeiro painel é chamado de Tree (1). No segundo painel, chamado Result Panel(2) é o resultado do que é clicado no painel Tree (1), ou seja, somente informações relevantes ao item selecionado. No terceiro painel, chamado Work Pane(3) é mostrado todos os itens relacionados ao Result Panel(2) e por último temos o Action Panel que é dinâmico e sensível ao contexto, por exemplo quando clicamos em um Storage Group ele mostra opções cabíveis para este item e ele ainda possui tarefas que podem ser executadas em nível do Result Panel(2), ou seja, ele possui configurações específicas para o Work Panel (3) e ações para o Result Panel (2). Bom para quem não conhece, abaixo segue os 4 painéis que falamos anteriormente, ele é baseado no mesmo utilizado atualmente pelo ISA Server 2004.
Cc716438.powershell-03(pt-br,TechNet.10).jpg
Nova interface do Exchange Management Console

Agora que já conhecemos a nova GUI (Graphical User Interface) do Exchange 2007, sabemos também que quando executamos qualquer uma das ações da interface gráfica é "enviado" um cmdlet do Windows PowerShell para execução da tarefa.

Como o Exchange 2007 pode ser gerenciado totalmente via Exchange Management Shell (linha de comando) toda ação feita via interface gráfica nos é mostrado o cmdlet que foi executado para tal ação. Como mostra a figura abaixo:
Cc716438.powershell-04(pt-br,TechNet.10).jpg
Exchange System Manager 2007: Os cmdlets utilizados na interface gráfica são visíveis e podem ser copiados através do Ctrl+C.

Conforme o exemplo, quando criamos um novo MailboxStore no Exchange 2007, após a criação é mostrado os dois cmdlets utilizados no processo: o primeiro de criação do mailboxstore (New-MailboxDatabase) e o segundo para montar a mailbox store recentemente criada (Mount-Database).

Fora a visualização ainda podemos dar um Ctrl+C e o conteúdo do Wizard ficará em memória para posteriormente ser utilizado pelo Administrador para documentação ou ainda para criação de um script para automatizar o processo.

Conclusão

Mostramos como será a integração do Exchange 2007 com o Windows PowerShell, com isto já podemos nos preparar para administrar e implementar o Exchange 2007 utilizando as facilidades que o Windows PowerShell pode nos proporcionar ou ainda continuar utilizando a nossa velha e renovada interface gráfica do Exchange 2007.

Anderson Patricio
http://www.andersonpatricio.org