 TechNet Magazine November 2007

TechNet Magazine November 2007

Administração do Windows: Mudanças em Arquivos Offline no Windows Vista

Trata-se de um problema comum – como deixar os usuários trabalhando com arquivos armazenados na rede quando a conectividade não é confiável, ou mesmo não haja nenhuma, e ainda evitar problemas no controle de versão? Essa continuidade é essencial para que haja uma experiência contínua. Saiba como os aperfeiçoamentos no Windows Vista proporcionam uma abordagem melhor para o trabalho com arquivos offline.

Jeremy Moskowitz Implantação de desktop: Implantação simples e escalonável com o BDD 2007

Você não tem o SMS 2003? Não se preocupe, existe outra solução para a criação de implantações simples de desktop. Este é um guia detalhado sobre como usar o BDD 2007 e o SQL Server na criação de implantações escalonáveis que exigem nenhuma ou poucas entradas manuais.

Adam Shepherd Comunicações: Os servidores de Transporte de Borda do Exchange na Microsoft: parte 2

Os servidores de Transporte de Borda podem ajudar você a criar um ambiente do sistema de mensagens mais seguro e confiável. Na Parte 1, mostramos a você como configurar esses servidores, e agora o apresentaremos a alguns exemplos detalhados de como os principais recursos ajudam a melhorar o ambiente do sistema de mensagens.

Kay Unkroth Rede: Configuração de acesso remoto VPN com o ISA Server 2006

Uma rede virtual privada pode oferecer uma conectividade aprimorada e maior produtividade – além disso, ela não precisa ser difícil de implementar e gerenciar. Saiba como é possível usar o ISA Server 2006 para abordar dois cenários VPN muito comuns.

Alan Maddison SQL Server: Como otimizar o desempenho da consulta do SQL Server

Quando você otimiza o desempenho do banco de dados, ajustar consultas individuais é tão importante quanto ajustar as configurações de hardware e de software. Até mesmo uma consulta de fuga pode colocar um banco de dados de joelhos. Aqui está um guia para gerar, analisar e ajustar planos de execução a fim de otimizar o desempenho das consultas do SQL Server.

Maciej Pilecki Do editor: Mais eficiência para você

Joshua Hoffman Caixa de ferramentas: Novos produtos para profissionais de TI

Greg Steen Perguntas e respostas do Exchange: Protocolos seguros de email, spam misterioso e mais

Na edição deste mês, a equipe do Exchange discutirá a Transport Layer Security para SMTP, como evitar que NDRs falsificados obstruam as nossas filas e como lidar com vários desafios de instalação.

Nino Bilic and Scott Landry Utilitário em destaque: Cmdlets SMS para Windows PowerShell

Descubra como começar a usar os cmdlets do Windows PowerShell para gerenciar clientes SMS 2003 a partir da linha de comando.

Don Brown The Cable Guy: Logon sem fio único

O logon único oferece muitas vantagens tanto para usuários finais quanto para administradores. Vejamos como o logon único pode simplificar a implementação da autenticação sem fio na sua rede.

Joseph Davies Notas de Pesquisa: Uso da computação de alto desempenho no combate ao HIV

Veja como a equipe de eScience da Divisão de Pesquisa da Microsoft está colaborando com pesquisadores da área médica e utilizando a computação de alto desempenho para encontrar a cura para doenças causadas pelo vírus HIV.

Kristin Firth and Mia Matusow Windows PowerShell: Escrevendo expressões regulares

Com uma expressão regular bem escrita, um script Windows PowerShell pode determinar se os dados estão ou não de acordo com um formato válido. Obtenha uma visão geral de como é possível usar expressões regulares no Windows PowerShell.

Don Jones Ei, Equipe de Scripts!: Gerenciamento de desktop do além

A Equipe de Scripts demonstra como usar o Gerenciamento Remoto do Windows para recuperar as propriedades e as instâncias das classes em um computador remoto. Ah, e há um quebra-cabeça bem legal também.

The Microsoft Scripting Guys Security Watch: Acesso seguro em qualquer lugar

Explore considerações de design de rede e segurança para obter uma solução de acesso em qualquer lugar, através dos componentes de Serviços de Terminal, e aprenda alguns métodos práticos e práticas recomendadas para criar uma solução com o Windows Server 2008.

John Morello Os arquivos da área de trabalho: A verdade sobre a desfragmentação

Mitos sobre as armadilhas da desfragmentação impediram que muitos administradores executassem esta importante tarefa de manutenção. Descubra os problemas reais, os problemas improváveis e como evitá-los.

Wes Miller Anotações de campo: O ‘Cod’ de Conduta

Quando membros da comunidade começam a agir, talvez você só precise de um peixe grande. Veja como a engenharia social ajudou a salvar o Live QnA.

Betsy Aoki Segredos do Windows: O paradoxo do sistema de arquivos

Você já quis saber por que precisa de um driver de sistema de arquivos em miniatura naqueles arquivos de inicialização fundamentais?

Raymond Chen


 Administra&#231;&#227;o do Windows: Mudan&#231;as em Arquivos Offline no Windows Vista
Administração do Windows Jeremy Moskowitz

Mudanças em Arquivos Offline no Windows Vista
Visão geral:
  • Continuidade online e offline
  • Disponibilidade do arquivo
  • Como as pastas offline estão evoluindo

Um dos maiores problemas do gerenciamento da área de trabalho é permitir que os usuários offline trabalhem como se estivessem online. A necessidade é maior do que você pensa – os usuários têm muito mais mobilidade hoje do que cinco anos atrás. Ainda assim, há alguns casos em que você talvez precise trabalhar
offline; os três mais comuns são quando você desconecta o laptop da rede do escritório e sai, quando se conecta usando um vínculo lento ou intermitente e quando o escritório da filial perde conectividade com a matriz.
Nessas circunstâncias, como manter uma cópia de um arquivo no computador offline quando o original está no servidor principal? E o que é mais importante: como lidar com um conflito caso alguém no escritório faça alterações no arquivo que está no servidor enquanto outra pessoa faz o mesmo em trânsito? Felizmente, esses problemas são solucionados pelo mecanismo Arquivos Offline, integrado ao Windows® 2000, ao Windows XP e ao Windows Vista®.

A resposta é cache
O mecanismo Arquivos Offline é, na verdade, uma enorme máquina de cache. A propósito, nos bastidores (e dentro da Microsoft), ele é conhecido como cache do cliente (CSC). O mecanismo Arquivos Offline pode ser configurado e é flexível o bastante para permitir que os usuários decidam o que desejam armazenar em cache, além de ajudar o sistema a armazenar em cache aquilo que você deseja. Ele permite que você acesse os mesmos arquivos tanto offline quanto online – sem que o namespace seja alterado. Ou seja, os arquivos são acessados usando-se o mesmo caminho UNC ou a letra da unidade, independentemente de você estar trabalhando online ou offline.
É possível configurar os arquivos para serem armazenados em cache manual ou automaticamente. Caso tenha consciência de que costuma usar determinados arquivos ou pastas em trânsito, basta você designar um arquivo ou pasta como sendo aquele que o acompanhará. Para fazer isso, um usuário do Windows XP clicaria com o botão direito do mouse em um arquivo armazenado localmente ou em um compartilhamento de rede e selecionaria a opção que torna os arquivos disponíveis offline (consulte a Figura 1). No Windows Vista, a opção se chama Sempre disponível offline. Tornar um arquivo disponível offline manualmente costuma ser chamado de fixação.
Figura 1 Tornando um arquivo disponível offline
Figura 1 Tornando um arquivo disponível offline
Figura 1a A pasta Arquivos Offline
Figura 1a A pasta Arquivos Offline
O compartilhamento que você está usando pode ser conectado por meio do caminho UNC ou mapeado com uma letra da unidade. Na verdade, o arquivo não precisa sequer estar armazenado em uma máquina com o Windows Server® em execução. Ele pode residir em qualquer coisa que seja compatível com o protocolo SMB (Bloco de Mensagens de Servidor) como, por exemplo, um servidor Samba ou um dispositivo NAS (com algumas raras exceções), que também aceitam o protocolo SMB.
Na primeira vez em que você opta por fixar um arquivo, o Windows XP o orienta durante uma série de telas do assistente, perguntando quando sincronizar. Caso clique em Avançar em todas as telas e use os padrões, a sincronização acontece sempre que você faz o logon ou o logoff, além de também ocorrer em segundo plano quando houver ociosidade. Quando o assistente for concluído, você notará uma alteração no ícone indicando que agora o arquivo está disponível offline.
Assim que você se desconecta da rede, todos os demais arquivos no compartilhamento se tornam indisponíveis, exceto aqueles escolhidos para serem usados offline. Às vezes, isso é um pouco problemático: o ícone mostra quais arquivos estão sempre disponíveis offline, mas não fica claro de imediato, até que você esteja desconectado, que nem todos os demais arquivos estarão disponíveis. Eu abordarei isso detalhadamente mais adiante, neste artigo.
Tornar os arquivos disponíveis offline manualmente tem seus méritos, mas às vezes é mais lógico fazer isso de maneira mais automatizada. Analisarei esse cenário em seguida, usando o que costuma ser chamado de cache automático.

Quando o cache automático supera o manual
O cache automático é configurado em um servidor, compartilhamento por compartilhamento. Dessa forma, caso tenha um compartilhamento chamado Vendas e queira que os vendedores levem consigo seus arquivos quando estiverem em trânsito, você pode instruir o mecanismo CSC a fazer isso. A Figura 2 mostra a caixa de diálogo Configurações off-line exibida quando você clica na guia Cache do Windows Server 2003. As configurações são explicadas na Figura 3.
Figure 3 Configurações do cache automático (Close Figure 3)

Configuração | Descrição
Somente os arquivos e os programas especificados pelos usuários estarão disponíveis offline. | Permite que os usuários especifiquem manualmente os arquivos que devem estar disponíveis offline. Esse é o padrão.
Todos os arquivos e programas abertos pelos usuários no compartilhamento estarão disponíveis offline automaticamente. | Permite o armazenamento automático em cache de todos os arquivos e programas acessados pelo Windows Explorer. A configuração Otimizado para desempenho é usada quando programas, e não documentos, são armazenados em cache, embora ela normalmente não tenha nenhum efeito em relação ao desempenho e possa ser tranqüilamente ignorada na maioria dos casos. Ela é totalmente ignorada pelo Windows Vista.
Arquivos ou programas do compartilhamento não estarão disponíveis offline. | Bloqueia o acesso do usuário ao item Tornar disponível off-line quando usado em um cliente do Windows 2000, do Windows XP ou do Windows Vista.
Figura 2 Caixa de diálogo Configurações off-line no Windows Server 2003
Figura 2 Caixa de diálogo Configurações off-line no Windows Server 2003
Para saber como o cache automático funciona, vamos pressupor que você tenha um compartilhamento Vendas com 10 arquivos – de Vendas01.txt a Vendas10.txt – e tenha habilitado a configuração Todos os arquivos e programas que os usuários abrirem do compartilhamento estarão automaticamente disponíveis off-line. Os resultados não ficam evidentes de imediato. Para o usuário, não há nenhum sinal claro de que haverá mais arquivos disponíveis para ele offline. Além disso, apenas os arquivos abertos pelo Windows (e, dessa forma, armazenados em cache) serão disponibilizados para uso offline. Para resumir, você precisa, na verdade, abrir os arquivos online que deseja usar offline antes de se desconectar da rede. Do contrário, eles não estarão disponíveis offline quando você precisar.
Além disso, os arquivos armazenados em cache não estarão necessariamente para sempre lá. O Windows XP e o Windows Vista lidam com esse espaço temporário de maneira um pouco diferente, mas o aspecto essencial é que os arquivos podem ser desconsiderados com base nas restrições de espaço. Os arquivos são mantidos conforme o uso. Os que não forem abertos durante um período serão desconsiderados a fim de criar espaço para novos arquivos assim que estes forem abertos. Dessa forma, enquanto houver a grande probabilidade de que um arquivo recém-acessado por você ainda esteja no cache, não pressuponha que o cache automático garante a disponibilidade desses arquivos. Caso queira ter certeza da disponibilidade de um arquivo, você precisa fixá-lo. Como administrador, você também pode usar a Diretiva de Grupo para fixar os arquivos usando a configuração Arquivos off-line atribuídos administrativamente.
Vejamos um exemplo funcional real. Vamos supor que um usuário do Windows XP cujo nome é Usuário_Vendas_Leste1 tenha aberto um arquivo chamado Vendas05.txt e um que usuário do Windows Vista cujo nome é Usuário_Vendas_Leste2 tenha aberto Vendas05.txt no compartilhamento \\servidor\vendas.
Como o cache automático foi configurado no compartilhamento vendas, quando Usuário_Vendas_Leste1 (no Windows XP) e Usuário_Vendas_Leste2 (no Windows Vista) ficarem offline, os arquivos talvez ainda estejam acessíveis. O Windows armazenou uma cópia deles no cache Arquivos Offline. Mas e os outros arquivos que não foram acessados pelos usuários?
O Windows XP e o Windows Vista têm reações diferentes a arquivos esquecidos no escritório, como você pode ver nas figuras 4 e 5. O Windows XP sequer indica que havia arquivos esquecidos não armazenados em cache. Quando você fica offline, eles simplesmente desaparecem, o que poderia causar alguma confusão. Já o Windows Vista tem uma sobreposição de ícone e mostra um pequeno X esmaecido nos arquivos que não foram armazenados em cache. Trata-se de um enorme avanço na exibição de quais arquivos estão disponíveis offline. O único problema é que você só o vê após a desconexão, e não durante uma sessão online. Logo, tornar o status de um arquivo mais explícito seria um acréscimo muito bem-vindo.
Figura 4 O Windows XP só mostra os arquivos disponíveis depois de ficar offline
Figura 4 O Windows XP só mostra os arquivos disponíveis depois de ficar offline
Figura 5 O Windows Vista mostra os arquivos indisponíveis enquanto está offline
Figura 5 O Windows Vista mostra os arquivos indisponíveis enquanto está offline

Disponível – ou não
Alguns administradores são reticentes quanto ao aproveitamento dos Arquivos Offline exatamente por conta da possibilidade de haver confusão: quais arquivos estão definitivamente disponíveis offline e quais não estão, e como é possível afirmar isso? Na Figura 5, o ícone do círculo verde em vendas01.txt indica que o arquivo deve estar certamente disponível. (Novamente, quando fixados, os arquivos certamente estarão disponíveis offline.)
No entanto, conforme eu expliquei, Vendas05.txt, que tanto o Windows XP quanto o Windows Vista tornaram disponíveis offline por meio do cache automático, não está necessariamente disponível offline. Lembre-se de que somente os arquivos acessados por você estarão disponíveis offline. Assim, seria melhor se o sistema indicasse que os arquivos estão temporária ou possivelmente disponíveis offline. Como não há nenhuma diferenciação por ícone, determinar quais arquivos estarão disponíveis offline pode ser algo confuso. Embora seja melhor, mesmo assim a interface do usuário do Windows Vista requer um olho treinado. Uma propriedade do Explorer no Windows Vista chamada Disponibilidade Offline fornece informações sobre a disponibilidade. Essa propriedade é exibida no painel de visualização quando um item é selecionado. Caso o item esteja fixado, o valor é "Sempre disponível". Caso não esteja fixado, e sim armazenado em cache, o valor é "Disponível".
A idéia de arquivos disponíveis offline temporariamente é semelhante no Windows XP e no Windows Vista, mas as implementações são um pouco diferentes. A Figura 6 mostra como o Windows XP e o Windows Vista lidam com arquivos offline.
Figura 6 Áreas de arquivo offline do Windows XP e do Windows Vista
Figura 6 Áreas de arquivo offline do Windows XP e do Windows Vista
Para simplificar, o Windows XP e o Windows Vista têm um local no qual mantêm Arquivos Offline, mas os arquivos Sempre Disponível Offline e Temporariamente Disponível Offline são armazenados de modos diferentes em cada sistema operacional.
No Windows XP, os arquivos sempre disponíveis offline (designados pela mudança de ícone, como mostra a Figura 1) permanecem no lugar onde estão para sempre. Se você fixasse 10 GB de arquivos manualmente, tornando-os Sempre Disponível Offline, todos esses 10 GB estariam sempre disponíveis. Não há limite para o número de arquivos a serem fixados por um usuário (desconsiderando o tamanho máximo da partição). Porém, o Windows XP tem 2 GB como máximo para arquivos armazenados em cache automaticamente. A idéia é que apenas os arquivos abertos sempre sejam armazenados aqui, enquanto os que não forem usados durante um determinado período sejam excluídos quando necessário. Por padrão, o Cache Disponível Temporário aloca 10% do espaço livre no disco rígido, como mostra a Figura 7. No Windows XP, essa configuração só está disponível para administradores.
Figura 7 Definindo o espaço em disco para arquivos offline no Windows XP
Figura 7 Definindo o espaço em disco para arquivos offline no Windows XP
O Windows Vista também pode armazenar arquivos temporária ou permanentemente. Mas, há uma diferença. O Cache de Arquivos Temporários está dentro do cache geral. Por padrão, todo o cache (tanto dos Arquivos Temporários quanto dos arquivos Sempre Disponível Offline) está limitado a 25% do espaço livre no disco rígido. Isso foi alterado porque, no Windows XP, um usuário podia continuar armazenando os arquivos em cache manualmente (talvez muitas dezenas de gigabytes) – e acabar ficando sem espaço no disco rígido. Com o novo esquema, o administrador destina uma quantidade específica de espaço para todo o cache de forma que isso não aconteça. Ao olhar a Figura 8, observe que os 25% de espaço livre no disco são erroneamente mostrados como sendo 15,2% de todo o disco. Também veja que o segundo controle deslizante, que estabelece o espaço temporário, jamais pode ser definido em um valor superior ao do primeiro controle, que determina o espaço máximo de todos os arquivos offline. Esses controles deslizantes em Limites de Uso do Disco para Arquivos Offline são acessados por meio do clique na opção Alterar Limites, mas não se esqueça de que você precisa das credenciais de administrador para fazer isso.
Figura 8 Espaço disponível para arquivos offline no Windows Vista
Figura 8 Espaço disponível para arquivos offline no Windows Vista

Evitando o cache em excesso
Redirecionamento de Pastas é outro recurso do Windows que lhe permite ter a certeza de que determinadas pastas importantes, normalmente locais na máquina, sejam realmente armazenadas em servidores. A idéia é que você não precisa se preocupar caso a máquina local se esgote; você tem uma cópia dos arquivos importantes em um compartilhamento de rede.
Vamos supor que você tenha uma pasta Meus Documentos redirecionada (no Windows XP) ou Documentos (no Windows Vista). Nesse caso (na verdade, quando qualquer pasta estiver redirecionada), o sistema operacional pressupõe o seu desejo de que esses arquivos estejam sempre disponíveis offline, e todos os arquivos dentro da pasta redirecionada receberão o símbolo mostrado na Figura 1. A desvantagem é que, se estiver em uma rede com boa conexão, sempre online, e quiser passar para uma máquina nova, você armazenará em cache todo o conteúdo da pasta redirecionada no novo computador – mesmo que pretenda usá-lo em uma única sessão. Trata-se não apenas de um desperdício de espaço, mas também de um risco de segurança mal conduzido.
Outra situação em que os arquivos são armazenados em cache de maneira automática e desavisada é quando você usa o Windows Explorer para procurar arquivos em um compartilhamento. Se você estiver olhando, digamos, alguns arquivos gráficos em um compartilhamento de rede usando o Explorer e o cache automático estiver ativado, é muito provável que esses arquivos sejam baixados e colocados no seu cache automaticamente. Isso acontece porque usar o Explorer para acessar um arquivo é o suficiente para que ele seja colocado no cache offline temporariamente. Normalmente, todos os arquivos no compartilhamento são acessados para que metadados como, por exemplo, o tamanho do arquivo ou a visualização de uma imagem, sejam obtidos. Quando isso acontece em um vínculo rápido, com boa conexão, não há grandes problemas. O Windows armazena de maneira rápida e silenciosa em cache o arquivo a ser usado posteriormente. Mas quando você está conectado a esse compartilhamento de rede com cache automático por meio de um vínculo lento, as coisas podem ficar bem devagar. Por padrão, a situação é basicamente a mesma tanto no Windows XP Explorer quanto no Windows Vista Explorer. A boa notícia é que o mecanismo de armazenamento em cache offline do Windows Vista pode ser treinado para que haja um melhor reconhecimento da lentidão do vínculo.

Arquivos Offline com Diretiva de Grupo
Principais mudanças em Arquivos Offline no Windows Vista
Os membros da equipe de Arquivos Offline queriam que você soubesse quais eram suas mudanças favoritas, mas não havia espaço suficiente para abordar todas elas no artigo. Então, em poucas palavras, aqui estão as principais mudanças feitas em Arquivos Offline:
  1. transições contínuas de offline para online significam que identificadores abertos não bloqueiam mais a transição
  2. granularidade offline por arquivo para que um compartilhamento offline não coloque todo o servidor offline
  3. modo offline forçado por meio de um botão Trabalhar online\offline no Windows Explorer
  4. criptografia por usuário do conteúdo armazenado em cache
  5. novo mecanismo de sincronização muito mais rápido na detecção e na análise de alterações
  6. integração com a Pesquisa do Windows para que as pastas redirecionadas possam ser indexadas
  7. sincronização entre local e remoto pode aproveitar o recurso Transferência de Bitmap Diferencial
  8. resolução de conflitos adiados por meio da Central de Sincronização
  9. os balões na área de notificação já eram; chega de incomodar o usuário
  10. novo suporte abrangente à API COM e ao WMI para gerenciamento; documentação na MSDN® em msdn2.microsoft.com/bb530662
  11. suporte a script por meio de um provedor WMI (a ser documentado na MSDN em breve)
  12. novas propriedades de item do shell, Status Offline e Disponibilidade Offline
  13. conversão em fantasma para representar elementos de namespace indisponíveis enquanto estiver offline; exibição deles como itens esmaecidos no Explorer com uma sobreposição X cinza, o que ajuda a evitar alterações drásticas no modo de exibição da pasta do shell durante a transição de online para offline.
  14. novo miniaplicativo Painel de Controle.
Se quiser saber mais, você encontrará muitas informações sobre elas no meu livro e na documentação Microsoft.

Como vimos, sempre que um usuário (ou Explorer) acessa um arquivo, este é integralmente armazenado no cache. No caso de um arquivo do Visio® ou de um documento do Word com 80 MB... que seja. Tanto o Windows XP quanto o Windows Vista sabem o que é um vínculo lento. Na verdade, por padrão, o Windows XP considera lento um vínculo de 64 Kbps. Caso a velocidade da conexão seja superior a essa e o cliente seja o Windows XP, o arquivo é transmitido por meio desse pipeline lento no momento do logon, para desespero do usuário. Então, é melhor configurar o Windows para gerenciar melhor o que fazer em relação a esse vínculo lento. Como você verá em breve, é possível conseguir isso por meio da Diretiva de Grupo criando um GPO (Objeto de Diretiva de Grupo) a ser vinculado a uma OU (unidade organizacional) que contém as contas de destino – Windows XP ou Windows Vista.
Quando o usuário se conecta por meio de um vínculo lento, o Windows XP tenta usar os arquivos armazenados em cache localmente antes de utilizar a cópia na rede. Faz sentido. Mas o Windows XP ainda faz algo que talvez seja inesperado: ele baixa arquivos grandes que o usuário ainda não tem no cache, caso o usuário os abra pela rede ou o Explorer os acesse. Ai! E, no meu teste, caso a sincronização esteja programada para acontecer durante o logoff (o padrão), os demais arquivos são baixados usando o vínculo lento e armazenados no cache (Ai! duas vezes).
O comportamento do Windows Vista é diferente. Por padrão, ele não reconhece nenhuma situação como sendo lenta. Na verdade, caso você se conecte usando uma latinha, com um 1 bit por segundo, o Windows Vista trata essa conexão como sendo rápida e usa a cópia dos arquivos na rede. Mas ele pode ser treinado para compreender quais compartilhamentos você deseja designar para transição quando a conexão estiver lenta. Quando isso acontece, as coisas melhoram um pouco. O comportamento do Windows Vista (uma vez configurado com a Diretiva de Grupo) é de que o conteúdo dos compartilhamentos definidos em vínculos lentos simplesmente não permanece disponível em um vínculo lento durante operações normais de arquivo e do Explorer.
A sincronização em segundo plano realizada pelo serviço Arquivos Offline não ocorre em uma conexão lenta. Porém, é preciso observar que a sincronização manual pode ser realizada por meio da Central de Sincronização.
A configuração do Windows Vista para modificar a forma como ele lida com vínculos lentos é feita com a Diretiva de Grupo Configurar Modo de Vínculos Lentos (não confundir com Configurar Velocidade de Vínculo Lento do Windows XP). Configurar Modo de Vínculo Lento usa os seguintes valores: os nomes dos servidores e dos compartilhamentos para os quais você deseja fazer automaticamente a transição para offline quando a conexão estiver lenta e qual é a lentidão que ela precisa apresentar para que a combinação servidor\compartilhamento fique offline. A combinação servidor\compartilhamento pode ser qualquer uma de \\servidor\compartilhamento ou até mesmo um único asterisco (*) para indicar todos os compartilhamentos em todos os servidores. O segundo conjunto de valores é uma declaração da taxa de transferência (em kbps) e da latência (em milissegundos) que precisam ser alcançadas para que a conexão seja considerada lenta. Mas aqui está o furo: a parte mais útil do par (a taxa de transferência) não é verificada durante o download dos arquivos. Portanto, caso você tenha 10 GB de arquivos em uma pasta Documentos redirecionada e esteja usando um link lento com um laptop que ainda não tem nenhum deles, se prepare para uma longa espera. No entanto, se você a emparelhar com a verificação da latência e esta ficar abaixo do valor prescrito, o compartilhamento sofrerá a transição para offline, poupando o usuário do doloroso atraso causado pela espera dos arquivos.
O hotfix do Windows Vista no artigo 934202 da Base de Dados de Conhecimento da Microsoft (uma alteração prevista para ser incluída no Windows Vista Service Pack 1) deve melhorar o desempenho em determinadas condições de lentidão em VPNs. (Este artigo está disponível online em support.microsoft.com/kb/934202.) Na verdade, esse hotfix deve permitir que o valor da taxa de transferência seja verificado quando o download for feito por meio de um link lento.

Conflitos na sincronização
Você deve estar se perguntando o que acontece se alguém altera um arquivo offline (digamos, durante o vôo) enquanto outra pessoa o altera online (conectada no escritório da matriz). Essa situação é resolvida no nível do cliente. Quando você faz a transição de offline para online, a sincronização em segundo plano dos Arquivos Offline no Windows Vista ocorre imediatamente. Em seguida, é perguntado a você o que fazer (por meio de uma entrada na Central de Sincronização, depois que um ícone aparece na área de notificação da barra de tarefas). A interface do usuário foi refeita para mostrar que um arquivo parece ser mais novo e apresentar mais informações sobre a colisão. Um usuário pode proteger os arquivos da colisão, optando por renomear o arquivo que está atualmente apenas em sua máquina ao salvá-lo novamente no servidor, como mostra a Figura 9.
Figura 9 Aviso de conflito na alteração de arquivo no Windows Vista
Figura 9 Aviso de conflito na alteração de arquivo no Windows Vista

Quer aprender mais?
O recurso Arquivos Offline é ótimo tanto para você quanto para os seus usuários. Na verdade, caso esteja usando o Redirecionamento de Pastas, você já o está usando; portanto, saber mais sobre ele é de seu interesse. Eu mencionei algumas alterações feitas em Arquivos Offline no Windows Vista, mas não todas. Para saber mais sobre isso, consulte a barra lateral "Principais mudanças em Arquivos Offline no Windows Vista".
Você encontrará muito mais informações sobre Arquivos Offline em go.microsoft.com/fwlink/?LinkId=98141 referentes ao Windows XP e em go.microsoft.com/fwlink/?LinkId=98138 referentes ao Windows Vista.
Também há uma seção enorme dedicada a Arquivos Offline – inclusive os prós e os contras de todas as configurações da Diretiva de Grupo – no meu livro (leia a biografia ao final do artigo). Por fim, para obter ainda mais informações e conversar com outras pessoas sobre as suas experiências com Arquivos Offline, passe algum tempo em GPanswers.com, um fórum comunitário onde há uma seção dedicada apenas a esse tópico.

Jeremy Moskowitz, MCSE e MVP em Diretiva de grupo, administra o GPanswers.com, um fórum comunitário sobre diretivas de grupo. Ele também ministra uma série de workshops de treinamento intensivo sobre diretivas de grupo. Seu livro mais recente se chama Group Policy: Management, Troubleshooting, and Security (Diretiva de grupo: gerenciamento, solução de problemas e segurança; Sybex, 2007). Contate Jeremy e saiba mais em www.GPanswers.com.
© 2007 Microsoft Corporation e CMP Media, LLC. Todos os direitos reservados. A reprodução parcial ou completa sem autorização é proibida..


 Implanta&#231;&#227;o de desktop: Implanta&#231;&#227;o simples e escalon&#225;vel com o BDD 2007
Implantação de desktop Adam Shepherd

Implantação simples e escalonável com o BDD 2007
Visão geral:
  • Recursos fundamentais do BDD 2007
  • Integração com o SQL Server
  • Criando uma solução de implantação escalonável

A maioria das pessoas envolvidas na implantação do Windows já ouviu falar do Microsoft Solution Accelerator para Business Desktop Deployment. Também conhecido como BDD, é um conjunto de orientações e ferramentas de práticas recomendadas
desenvolvido para ajudá-lo a implantar o Windows® em desktops clientes. O Windows Vista® inclui uma atualização do Solution Accelerator na forma do BDD 2007. Essa versão contém um novo MMC (Console de Gerenciamento Microsoft®) e um seqüenciador de tarefas do System Center Configuration Manager 2007, sucessor do SMS (Systems Management Server) 2003.
Um dos recursos menos compreendidos do BDD 2007 é a sua capacidade de funcionar como uma solução completa de implantação. Nas versões anteriores, o BDD podia ajudá-lo a criar e manter imagens de desktop de uma forma gerenciável e reprodutível. Agora, o BDD 2007 oferece a você o recurso adicional da criação de uma solução de implantação escalonável combinando-se com o WDS (Serviços de Implantação do Windows), SQL ServerTM e a Replicação DFS do Windows Server® 2003.
Mas espere aí... A prática recomendada não é usar o SMS com o Operating System Deployment (OSD) Feature Pack na implantação de clientes Windows?
Sim, se você já tiver uma infra-estrutura SMS 2003, deverá utilizar o BDD 2007, o SMS 2003 e o OSD Feature Pack na implantação. Atualmente, essa é a forma mais abrangente de obter a implantação sem intervenção e ela pode realmente diminuir os custos de configuração, instalação e gerenciamento do Windows em sua organização.
No entanto, muitos clientes não possuem o SMS 2003 ou qualquer solução de implantação de software equivalente. Para eles, existe outra opção, que será o assunto deste artigo.

Conceitos fundamentais do BDD 2007
O BDD 2007 oferece dois métodos de implantação principais. O primeiro método, Lite Touch Installation, usa somente o BDD 2007 na implantação do cliente. De imediato, ele apresenta um conjunto de assistentes em tempo de compilação para capturar informações sobre a implantação, como o nome do computador que deve ser atribuído ao cliente (consulte a Figura 1), que layout de teclado e fuso horário devem ser usados e assim por diante. Esse método é conhecido como "Lite Touch" porque normalmente existe uma quantidade mínima de entrada manual necessária à coleta dessas informações antes do início do processo de compilação.
Figura 1 Assistente Lite Touch Deployment do BDD 2007
Figura 1 Assistente Lite Touch Deployment do BDD 2007
O segundo método, Zero Touch Installation, baseia-se nos recursos do SMS 2003 com o OSD Feature Pack, integrando-se ao BDD 2007. Essa configuração pode oferecer uma solução de implantação automática, escalonável e gerenciável.
Em tempo de compilação, em uma das primeiras etapas de uma implantação de sistema operacional cliente, o BDD 2007 obtém informações de uma variedade de fontes diferentes. Essas fontes incluem chamadas WMI e os arquivos de configuração do BDD 2007 — Bootstrap.ini e CustomSettings.ini. As informações são coletadas e armazenadas como variáveis usadas na implantação. Para um cenário Lite Touch, os arquivos Bootstrap.ini e CustomSettings.ini oferecem a capacidade de predefinir todas as informações que, caso contrário, seriam coletadas por entrada manual nos assistentes de implantação.
A capacidade de especificar com antecedência todas as informações que os assistentes Lite Touch precisariam capturar em tempo de compilação permite a você automatizar todo o processo Lite Touch e partir para uma solução Zero Touch nos ambientes não suportados pelo SMS 2003. Exemplos de informações que você poderá optar por predefinir incluem ComputerName=RDG0001VST para atribuir o nome RDG0001VDT ao computador ou TimeZoneName=GMT Standard Time para garantir que o fuso horário do computador seja definido como Hora Padrão de Greenwich. Todas as propriedades disponíveis que podem ser usadas durante uma implantação feita com o BDD foram bem documentadas em uma referência de configuração disponível em technet.microsoft.com/library/bb490302.aspx.
Para obter mais informações sobre como configurar e usar o BDD 2007, consulte o artigo "Implantação do Windows Vista com BDD 2007" da edição de setembro de 2007 da TechNet Magazine (technetmagazine.com/issues/2007/09/BDD).

BDD e SQL Server
Por que usar um banco de dados com o BDD 2007? A resposta está na forma como você fornece detalhes de forma dinâmica durante uma implantação que, caso contrário, teria de fazer entradas manuais por meio dos assistentes da Lite Touch Installation. Como observei, isso pode ser obtido com o arquivo CustomSettings.ini. O problema é que, em uma implantação do mundo real, esses detalhes mudarão, dependendo da máquina em que ela será feita. Além disso, o arquivo CustomSettings.ini pode rapidamente se tornar impossível de gerenciar caso você esteja tentando criar opções específicas e definições para 500 máquinas diferentes. Ao associar um banco de dados de back-end ao console do BDD, você adiciona uma solução muito mais gerenciável e que é dinâmica e extensível.
Vamos falar um pouco mais sobre como o SQL Server se integra ao BDD 2007. Primeiro, você precisa verificar se o SQL Server (preferivelmente o SQL Server 2005 ou posterior) está instalado no seu servidor de implantação. Felizmente, as etapas para a criação do banco de dados no BDD 2007 são fáceis: basta clicar com o botão direito do mouse no nó Database (Banco de dados) do Deployment Workbench do BDD 2007, clicar em New (Novo) e seguir as instruções (consulte a Figura 2). A equipe do BDD fez um ótimo trabalho ao oferecer assistentes que permitem a você começar a trabalhar de forma fácil e rápida.
Figura 2 Configuração do banco de dados de implantação para o BDD 2007
Figura 2 Configuração do banco de dados de implantação para o BDD 2007
Após a criação do banco de dados, você pode começar a explorar os seus recursos. As entradas do banco de dados são divididas em quatro categorias principais: Computer (Computador), Role (Função), Location (Local) e Make and Model (Marca e Modelo). Cada categoria permite que você defina entradas e as preencha com variáveis do BDD 2007, atribua aplicativos e forneça outras definições fundamentais (consulte a Figura 3).
Figura 3 Atribuindo propriedades de implantação
Figura 3 Atribuindo propriedades de implantação
É útil observar essas quatro categorias em dois grupos distintos. As categorias Computer, Location e Make and Model oferecem a você métodos diferentes de identificação de um computador em tempo de compilação. Cada computador identificado pode ser associado a uma função específica no banco de dados e, portanto, ser provisionado para um propósito específico, como vendas, marketing ou finanças, sendo que cada função garante que a linha relevante de aplicativos de negócios será instalada.
Utilize a seção Computer para identificar máquinas usando um endereço MAC, a marca do recurso, o UUID (identificador exclusivo universal) ou o número de série. Por causa do grande número de entradas que provavelmente serão criadas nessa seção, uma para cada computador da sua organização, adicione somente as propriedades muito específicas, como ComputerName, a elas.
Utilize a seção Location para criar entradas para locais geográficos específicos de sua organização. Cada entrada é identificada pelo gateway padrão naquele local. Isso pode ser especialmente útil se você tiver OUs (unidades organizacionais) baseadas em local no Active Directory® e quiser que os computadores de um local sejam adicionados ao domínio da unidade organizacional correspondente a ele.
Utilize a seção Make and Model para criar entradas para cada um dos tipos de hardware para os quais a sua implantação terá de oferecer suporte. O BDD 2007 compara essas informações com as descobertas por meio de chamadas WMI. Uma utilização comum da seção Make and Model em ambientes de desenvolvimento é criar uma entrada que verifica se a máquina é um Virtual PC 2007 ou uma máquina virtual Virtual Server 2005 ao procurar por "Microsoft Corporation" e "Virtual Machine" (Máquina Virtual) nas propriedades Make e Model, respectivamente. Se, em tempo de compilação, você encontrar essas propriedades, poderá dizer ao BDD que ele precisa instalar o aplicativo Adições de Máquina Virtual em tempo de implantação simplesmente adicionando o aplicativo à entrada Make and Model.
Agora que você ofereceu métodos de identificação das máquinas, use a seção Roles para criar as entradas para cada função de implantação que deseja provisionar. Os exemplos podem incluir uma entrada para uma função do Windows XP e uma do Windows Vista configuradas pela adição da propriedade BuildID que corresponde à compilação do Windows XP ou do Windows Vista definida no BDD para cada entrada. Uma abordagem alternativa seria especificar funções departamentais como Contabilidade, Vendas ou Finanças. Normalmente eu preencho a maioria das propriedades do BDD nesta seção (fuso horário, configurações regionais, informações sobre a organização e assim por diante). Isso oferece a administração mínima do banco de dados pelo fato de que as entradas não estão ligadas a qualquer máquina, hardware ou local específico.
Precisamos dizer ao BDD 2007 que ele deve pesquisar o banco de dados em tempo de implantação para encontrar entradas que sejam iguais às que o computador está criando no momento. Para configurar o BDD para que ele utilize o banco de dados durante uma implantação, clique com o botão direito do mouse no ponto de implantação e clique em Configure DB (Configurar Banco de Dados). Isso o levará por uma série de assistentes para o preenchimento do arquivo CustomSettings.ini com as entradas que farão o processo Lite Touch Installation consultar informações do banco de dados.

Tornando a sua implantação escalonável
Agora você possui um servidor de implantação que pode automatizar o Lite Touch Installation e provisionar dinamicamente cada máquina para que elas tenham uma função de negócios específica. Mas como você pode dimensionar essa solução?
A arquitetura da solução se baseia em uma topologia hub e spoke, como ilustrado na Figura 4. O primeiro servidor de implantação configurado por você será o hub e o servidor de implantação pai. Cada um dos servidores de implantação filhos agirão como spokes.
Figura 4 Arquitetura de implantação hub e spoke
Figura 4 Arquitetura de implantação hub e spoke
Para habilitar essa arquitetura, você precisa usar o DFS-R para replicar o Compartilhamento de Distribuição para cada um dos seus servidores de implantação. Em seguida, utilize a replicação de instantâneo do SQL Server para oferecer uma cópia do banco de dados de implantação do BDD para os servidores de implantação filhos. A grande vantagem dessa solução é que os servidores de implantação filhos possuem requisitos mínimos — você só precisa do SQL Server Express, do WDS e do DFS-R instalados nas máquinas para que a implantação seja possível.
Por causa das grandes quantidades de dados que podem ser armazenados no Compartilhamento de Distribuição do BDD 2007, estipulo a utilização do DFS-R no Windows Server 2003 R2 em vez de usar os File Replication Services de versões anteriores do Windows Server. O DFS-R utiliza a RDC (Compactação Diferencial Remota) para replicar somente as alterações diferenciais (delta) dos arquivos entre membros do grupo de replicação. Isso pode causar um grande impacto na quantidade de tráfego de replicação quando uma alteração pequena, como um novo driver, for feita em seu arquivo de imagem personalizado. Com o DFS-R, o tráfego de replicação só será igual ao tamanho das alterações feitas, em vez da redistribuição de todo o arquivo de imagem.
Existem muitas informações sobre o DFS no site da Microsoft — comece por microsoft.com/windowsserver2003/technologies/storage/dfs — mas falarei sobre a instalação básica e as etapas de configuração necessárias para oferecer uma visão geral do processo no contexto da implantação baseada no BDD.
Observe que, se os servidores estiverem executando o Active Directory com base em uma instalação do Windows Server 2003 anterior ao R2, talvez o esquema do Active Directory tenha de ser atualizado para permitir o DFS-R, na medida em que o serviço de replicação exige novas classes de objetos. Para obter detalhes completos sobre a extensão do esquema do Active Directory no Windows Server 2003 R2, consulte go.microsoft.com/fwlink/?LinkId=99936.
A primeira etapa é instalar os componentes do DFS em seu servidor de implantação Windows Server 2003 R2. Você pode fazer isso de várias formas, sendo que a mais simples é o assistente Adicionar ou Remover Componentes do Windows padrão. Depois disso, você terá de configurar um grupo de replicação usando o console Gerenciamento DFS mostrado na Figura 5.
Figura 5 Console Gerenciamento DFS
Figura 5 Console Gerenciamento DFS
Para dimensionar a sua solução de implantação do BDD 2007, existem duas pastas específicas que precisam ser replicadas. A primeira delas é o compartilhamento de distribuição do BDD 2007, que armazena todos os arquivos de origem e de configuração do BDD. Esses arquivos precisam ser disponibilizados em cada servidor de implantação.
A segunda pasta a ser replicada é a pasta de inicialização utilizada pelo WDS para armazenar o arquivo LiteTouch_x86.wim. Ele é o ambiente de inicialização do BDD entregue ao WDS às suas máquinas desktop clientes para dar início ao processo de implantação. Você precisa replicar esse arquivo para que uma alteração feita no ambiente de inicialização em seu servidor de implantação pai seja replicada em todo o resto da infra-estrutura de implantação.
Os caminhos a serem replicados são X:\Distribution (onde X é a letra da unidade especificada na instalação do BDD 2007) e Y:\RemoteInstall\boot (onde Y é a letra da unidade do volume que contém o compartilhamento RemoteInstall do WDS).
A replicação no DFS-R é de vários mestres e, portanto, não é possível criar uma topologia de replicação de uma via. Por esse motivo, para permitir o gerenciamento centralizado do compartilhamento de distribuição, configure a pasta de distribuição em cada um dos seus servidores de implantação filhos como somente leitura. Isso permite que somente a replicação do DFS-R grave na pasta (já que ela possui direitos de backup e de restauração). As máquinas cliente criadas a partir desses servidores filhos nunca precisarão gravar nessa pasta e, portanto, não há a necessidade de conceder permissões maiores do que de leitura para essas contas.
A etapa de configuração final da replicação de dados usando o DFS-R é definir a diretiva de atualização do armazenamento BCD (Dados de Configuração da Inicialização) no WDS. Isso garante que quaisquer alterações feitas em seu ambiente de inicialização sejam refletidas em todos os servidores de implantação filhos. Essa alteração de configuração precisa ser definida em todos os servidores WDS e eu recomendo fazer isso em seu processo de compilação e configuração para o provisionamento de um servidor de implantação.
Em cada servidor de implantação, execute o seguinte comando:
WDSUTIL /set-server /BCDRefreshPolicy /Enabled:yes /RefreshPeriod:<time in minutes>
O período de atualização de tempo depende da freqüência da atualização dos dados nos servidores de implantação. Se você estiver configurando o DFS-R para replicar a cada hora, faz sentido configurar a diretiva de atualização do armazenamento BCD como a cada 60 minutos.

Replicação do SQL Server
Até aqui, você dimensionou o BDD 2007 para replicar o compartilhamento de distribuição do BDD e a imagem de inicialização do WDS a partir do seu servidor de implantação primário para cada um dos servidores de implantação filhos. Agora será preciso concluir o processo e replicar o banco de dados Deployment Workbench do BDD 2007 para que ele seja disponibilizado localmente em todos os servidores de implantação.
O SQL Server utiliza uma metodologia de replicação descrita pela documentação do produto como parecida com a forma como as revistas são publicadas. No caso de uma revista, existe um editor que a produz, distribuidores que a distribuem para o editor e assinantes que a assinam e a recebem. O SQL Server utiliza essa mesma terminologia para seus recursos internos de replicação.
Observe que, para ser um editor de banco de dados do SQL Server, o servidor não poderá conter o SQL Server Express Edition, mas uma versão completa do SQL Server. Para o servidor de implantação primário, eu utilizo o SQL Server 2005 (embora o SQL Server 2000 também seja suportado). Para cada servidor de implantação filho, você poderá usar o SQL Server 2005 ou o SQL Server 2005 Express.
Antes de começar a configurar a replicação do SQL Server, existem algumas etapas que devem ser concluídas para garantir a sua configuração correta para o suporte à replicação. No provisionamento dos seus servidores de implantação, verifique se os Componentes de Replicação foram incluídos durante a instalação do SQL Server ou do SQL Server 2005 Express Edition. Por padrão, o SQL Server Express não instala os Componentes de Replicação.
Em seguida, permitir que o ambiente de inicialização Lite Touch se conecte ao SQL Server de forma remota requer que as conexões remotas estejam habilitadas no SQL Server. Para configurar o SQL Server para conexões remotas, execute a ferramenta Configuração da Área de Superfície do SQL Server, selecione Configuração da Área de Superfície de Serviços e Conexões e configure o servidor para aceitar conexões locais e remotas do TCP/IP e dos pipes nomeados.
Em seguida, no servidor de implantação primário, crie uma pasta compartilhada para armazenar os dados do instantâneo de replicação que será lido pelos agentes de replicação em cada servidor de implantação filho. Vou me referir a essa pasta compartilhada mais adiante. Normalmente eu coloco essa pasta no mesmo volume do resto do meu conteúdo de implantação.
As etapas finais de configuração só serão necessárias para o SQL Server Express Edition em seus servidores de implantação filhos. Por padrão, o serviço Navegador do SQL Server é desabilitado. Para permitir a replicação, esse serviço deve ser definido como automático e ser iniciado. Utilize a ferramenta SQL Server Configuration Manager para configurar esse serviço. Também será preciso criar um banco de dados nos servidores filhos para onde o conteúdo será replicado. Faça com que o nome desse banco de dados seja igual ao nome do banco de dados do seu BDD 2007 no servidor de implantação primário já que isso minimiza a configuração adicional necessária.

Configurando a replicação
Agora você está pronto para configurar a replicação do SQL Server. Para começar, no servidor de implantação mestre, que deve possuir a versão completa do SQL Server 2005, execute o SQL Server Management Studio. A primeira etapa é criar e configurar uma distribuição. Para isso, navegue até a pasta de replicação do console de gerenciamento como mostrado na Figura 6. Clique com o botão direito do mouse na pasta de replicação e selecione Configure Distribution (Configurar Distribuição) para executar o assistente de distribuição.
Figura 6 SQL Server Management Server Studio: replicação
Figura 6 SQL Server Management Server Studio: replicação
No assistente, confirme que o servidor de implantação primário deve agir como seu próprio distribuidor. Defina a pasta de instantâneo raiz como o caminho UNC do compartilhamento de replicação do SQL Server criado anteriormente. Por fim, configure o servidor de implantação primário como um editor.
Depois que esse assistente configurar com êxito o servidor como um editor e distribuidor, será preciso dizer ao SQL Server que banco de dados você deseja publicar. Para isso, clique com o botão direito do mouse na pasta de Replicação e clique em nas propriedades do editor. Na caixa de diálogo de propriedades, selecione Publication Databases (Bancos de Dados de Publicação) e escolha o banco de dados do seu BDD 2007 para replicação transacional, como mostra a Figura 7. Na verdade, você não está usando a replicação transacional, mas a mesma opção é selecionada caso a replicação seja de instantâneo ou transacional.
Figura 7 Publicando o seu banco de dados
Figura 7 Publicando o seu banco de dados
Agora será preciso criar uma publicação que os seus servidores de implantação filhos poderão assinar. Na pasta de replicação, clique com o botão direito do mouse em Local Publications (Publicações Locais) e clique em New publication (Nova publicação) para executar o assistente de publicação. Selecione o banco de dados do BDD para publicá-lo. Selecione a replicação de instantâneo como o tipo de publicação e especifique todas as tabelas, procedimentos armazenados e exibições que serão replicados. Será preciso optar por ter um instantâneo inicial criado imediatamente. Para o agendamento do agente de instantâneo, será mais do que suficiente executá-lo uma vez por dia por padrão, a menos que você preveja alterações freqüentes no banco de dados.
A última etapa será fazer com que cada servidor de implantação filho assine essa publicação. Isso diz ao SQL Server para enviar uma cópia do banco de dados em intervalos específicos a cada servidor de implantação filho. Na pasta de replicação, na subpasta Local Publications, localize a publicação recém-criada, clique com o botão direito do mouse sobre ela e selecione New subscriptions para executar o assistente de assinaturas. Nele, selecione a publicação do BDD criada nas etapas anteriores. Opte por executar todos os agentes na distribuição, habilitando a topologia de replicação como uma assinatura de envio. Em seguida, adicione cada servidor de implantação filho como um assinante e determine que o banco de dados criado em cada servidor receba uma cópia dos dados replicados (lembre-se, esse banco de dados deve possuir o mesmo nome do banco de dados de implantação primário). Por fim, configure uma conta a ser usada para as conexões e defina o agendamento a ser usado na replicação. Ele deve espelhar o agendamento escolhido para o agente de instantâneo. Este foi um rápido passeio pelo que é necessário para criar uma replicação do SQL Server. Você começará a ver seus dados sendo replicados rapidamente!

Configurando o BDD 2007
Até aqui, você configurou o BDD 2007 para usar um banco de dados e configurou a replicação do banco de dados e do compartilhamento de distribuição do BDD 2007 para seus servidores de implantação filhos. Para concluir a solução de implantação, será preciso configurar o BDD 2007 para que, quando um cliente baixar seu ambiente de inicialização, se conecte automaticamente a qualquer servidor que seja seu servidor de implantação local.
Quando você faz a inicialização no ambiente Lite Touch Windows PE, se o cliente tiver sido inicializado a partir de um servidor WDS, um valor de registro será definido no Windows PE para armazenar o nome do servidor de onde o cliente acabou de baixar o ambiente de inicialização. Os scripts de implantação iniciais do BDD 2007 obtêm esse valor e o armazenam em uma variável de ambiente chamada %WDSServer%.
Observe que, se você estiver usando a versão inicial do BDD 2007, talvez perceba que esse valor não é inserido apropriadamente no registro do Windows PE. Existe uma atualização para corrigir esse comportamento em support.microsoft.com/kb/937191.
Para configurar o BDD 2007, basta editar os arquivos de configuração BootStrap.ini e CustomSettings.ini para que todas as referências feitas ao servidor de implantação sejam substituídas por %WDSServer%. Isso normalmente envolve a substituição dos valores do nome da instância do SQL Server, além do valor de DeploymentRoot, o servidor que armazena o compartilhamento de distribuição. Um Bootstrap.ini de exemplo e um trecho de um arquivo CustomSettings.ini são mostrados na Figura 8 e na Figura 9.
Figure 9 CustomSettings.ini (Close Figure 9)
[Settings]
Priority=MMSettings, MMApps, CSettings, CRoles, RSettings, RApps, Default
Properties=Manufacturer

[Default]
OSInstall=Y
DeployRoot=\\%WDSServer%\Distribution$
UserDomain=BUILDLAB
UserID=BddAdmin
UserPassword=Password1234

[CSettings]
SQLServer=%WDSServer%
Database=BDD_DB1
Netlib=DBNMPNTW
Table=ComputerSettings
Parameters=UUID, AssetTag, SerialNumber, MacAddress
ParameterCondition=OR

[CRoles]
SQLServer=%WDSServer%
Database=BDD_DB1
Netlib=DBNMPNTW
Table=ComputerRoles
Parameters=UUID, AssetTag, SerialNumber, MacAddress
ParameterCondition=OR
Figure 8 Bootstrap.ini (Close Figure 8)
[Settings]
Priority=Default

[Default]
DeployRoot=\\%WDSServer%\Distribution$
UserDomain=BUILDLAB
UserID=BddAdmin
UserPassword=Password1234
SkipBDDWelcome=YES
Observe que essa solução determina que o WDS esteja no mesmo servidor que armazena o banco de dados do BDD 2007 replicado e o compartilhamento de distribuição do BDD 2007 replicado. Os motivos devem ser aparentes: isso permite que você utilize a variável %WDSServer% para oferecer um método simples contra falhas para dizer à sua máquina cliente onde está o servidor de implantação local e impedir que ele se comunique na WAN.

Considerações adicionais
A grande vantagem do BDD 2007 é que ele é extensível e, portanto, existem muito mais aspectos que podem ser considerados na extensão dessa solução. Por exemplo, você poderia usar os recursos internos para o monitoramento do SQL Server e do DFS-R, criar métodos para a inserção de computadores em seu ambiente com informações obtidas de um banco de dados de gerenciamento de bens ou até mesmo usar um procedimento armazenado SQL para recuperar essas informações. Infelizmente, eu não tenho o espaço necessário para explicar isso aqui, mas espero ter lhe dado uma idéia de algumas formas de como poder aproveitar os recursos do BDD em sua própria organização.

Adam Shepherd é consultor dos Serviços de Consultoria Microsoft no Reino Unido. Seu foco técnico é implantação, manutenção e gerenciamento do cliente Windows. Você pode entrar em contato com ele pelo email adamshep@microsoft.com.


 Comunica&#231;&#245;es: Os servidores de Transporte de Borda do Exchange na Microsoft: parte 2
Comunicações Kay Unkroth

Os servidores de Transporte de Borda do Exchange na Microsoft: parte 2
Visão geral:
  • Usando os logs e os rastreamentos de Transporte de Borda
  • Configuração de anti-spam com scripts
  • Testando cenários típicos de spam
Faça download do código deste artigo: Edge2007_11.exe (161KB)

Em face da enxurrada de spam e de outros conteúdos maliciosos presente na Internet, como você pode garantir um sistema de mensagens confiável e seguro para usuários de sua organização? Uma forma, que comecei a descrever o último mês, na primeira parte desta série é implantar
os servidores de Transporte de Borda do Exchange Server 2007 e o Forefront Security para Exchange Server em uma rede de perímetro entre a Internet e o ambiente de produção.
Nesta última edição da série, explicarei como analisar os agentes de Transporte de Borda em ação usando recursos padrão de log e de rastreamento de agentes do Exchange Server 2007. Também usarei um método personalizado para despejar todos os objetos de evento do pipeline de transporte nos arquivos baseados em XML. Em seguida, ilustrarei como aplicar configurações anti-spam em um laboratório de testes de Transporte de Borda de acordo com a configuração usada pela Microsoft em seu próprio ambiente de produção corporativo. Por fim, concluirei usando alguns cenários de teste realistas e interessantes para vermos como os agentes de Transporte de Borda respondem às várias situações de spam.
Para obter mais informações sobre a instalação do laboratório de testes de Transporte de Borda e sua arquitetura geral, consulte o primeiro artigo desta série, na edição de outubro de 2007 da TechNet Magazine, disponível em technetmagazine.com/issues/2007/10/Edge.
Eu utilizo muitos scripts e arquivos em lote para automatizar as tarefas de configuração mais importantes e você poderá encontrá-los no download de código que acompanha este artigo (visite technetmagazine.com/code07.aspx). Além disso, para obter informações mais detalhadas sobre a configuração de TI da Microsoft dos agentes de Transporte de Borda, recomendo o white paper técnico "Transporte de Borda do Microsoft® Exchange Server 2007 e proteção das mensagens", produzido pelo IT Showcase da Microsoft. Baixe este white paper do IT Showcase do site microsoft.com/technet/itshowcase/content/edgetransport.mspx.

Registro em log e rastreamento
O Exchange Server 2007 inclui alguns recursos de registro em log e de rastreamento, incluindo o log de protocolo, de agente e o rastreamento de pipeline, que facilitam o diagnóstico e a solução de problemas de agente de transporte. Embora eu não esteja solucionando os problemas de agentes de transporte neste artigo, as informações dos logs e de rastreamento são úteis para o exame do funcionamento dos agentes de Transporte de Borda.
Se você quiser rastrear informações sobre as atividades de envio e recebimento de SMTP, deverá habilitar o log de protocolo para os conectores de envio e recebimento. Usando o ambiente de testes, configurei a primeira parte desta série (consulte a Figura 1) e habilitei o log de protocolo por meio da definição dos cmdlets New-SendConnector e New-ReceiveConnector a seguir:
Figura 1 O ambiente de teste
Figura 1 O ambiente de teste
–ProtocolLoggingLevel: Verbose
Por padrão, você pode localizar os arquivos de log de SMTP resultantes em %ProgramFiles%\Microsoft\Exchange Server\TransportRoles\Logs\ProtocolLog.
O log de protocolo será útil caso você queira analisar conversas SMTP, embora os agentes anti-spam nem sempre interfiram na sessão SMTP. Por exemplo, o agente Filtro de Conteúdo pode carimbar somente as mensagens de entrada com o valor SCL (Nível de Confiança de Spam). Desde que a classificação do SCL esteja abaixo de um limite especificado (o padrão é 7), o agente Filtro de Conteúdo não faz com que o processo de Transporte de Borda rejeite a mensagem. Portanto, a conversa SMTP prossegue sem ser afetada.
Para analisar as ações que os agentes anti-spam (Filtro de Conexão, Filtro de Conteúdo, Regras de Borda, Filtro de Destinatários, Filtro de Remetente e ID do Remetente) executam em mensagens que passam pelo pipeline de transporte, você precisa verificar os logs de agente em vez dos logs de protocolo. Normalmente, os logs de agente são habilitados de acordo com o parâmetro AgentLogEnabled do arquivo EdgeTransport.exe.config. Por padrão, os logs de agente estão localizados na pasta %ProgramFiles%\Microsoft\Exchange Server\TransportRoles\Logs\AgentLog. É possível abrir os logs no Bloco de Notas, embora o cmdlet Get-AgentLog exiba as informações de log de agente de forma mais intuitiva no Shell de Gerenciamento do Exchange.
Outro recurso útil é o rastreamento de pipeline, que permite a você capturar instantâneos de mensagens de um determinado remetente quando elas estiverem passando pelo pipeline de transporte. A idéia é relativamente simples; o processo Transporte de Borda cria um instantâneo de cada mensagem antes e depois de chamar os agentes de recebimento e de roteamento SMTP registrados para os eventos OnEndOfHeaders, OnEndofData, OnSubmittedMessage e OnRoutedMessage. Ao comparar os instantâneos de mensagens, você pode ver como os agentes individuais modificam cada mensagem. É claro que você deve habilitar esse valioso recurso no ambiente de teste.
O uso do cmdlet Set-TransportServer a seguir ativa o rastreamento de pipeline para um usuário de teste. O parâmetro PipelineTracingEnable definido como $true permite o rastreamento de pipeline, como poderíamos esperar. O email do usuário de teste é definido no parâmetro PipelineTracingSenderAddress:
Set-TransportServer –Identity EDGE01
–PipelineTracingEnabled $true
-PipelineTracingSenderAddress Contoso.User@contoso.com
Com o rastreamento de pipeline habilitado, você poderá localizar arquivos de instantâneo de mensagens para cada mensagem a partir do remetente especificado (neste caso, Contoso.User@contoso.com) na pasta %ProgramFiles%\Microsoft\Exchange Server\TransportRoles\Logs\PipelineTracing\MessageSnapshots. Essa é a pasta padrão. Para cada mensagem, os arquivos de instantâneo estão localizados em um subdiretório nomeado de acordo com um GUID atribuído a ela. Observe que você pode localizar a mensagem original em um arquivo chamado Original.eml e suas cópias em arquivos .eml que iniciam com SmtpReceive ou Routing, de acordo com os eventos encontrados e com os agentes instalados. Para analisar o processamento de agentes anti-spam registrados para os eventos de recebimento SMTP OnEndofData e OnEndOfHeaders, consulte os arquivos SmtpReceive*.eml. Para analisar o processamento de antivírus e de outros agentes registrados para os eventos de roteamento OnSubmittedMessage e OnRoutedMessage, analise os arquivos Routing*.eml.

Despejo de pipeline personalizado
Os recursos padrão de registro em log e de rastreamento de agentes do Exchange Server 2007 atendem a todas as necessidades de solução de problemas, apesar de não abordarem todos os eventos de transporte. Por exemplo, o rastreamento de pipeline não pode capturar informações sobre OnConnectEvent, OnEhloCommand, OnMailCommand, OnRcptCommand, OnDataCommand e eventos de transporte similares, já que o host remetente ainda não transferiu mensagens que poderiam ser gravadas na pasta %ProgramFiles%\Microsoft\Exchange Server\TransportRoles\Logs\PipelineTracing. Se você quiser capturar informações detalhadas sobre esses eventos, terá de implementar um agente personalizado que despeje os dados de evento em arquivos no sistema de arquivos.
Como discutido no meu artigo anterior, não é complicado criar agentes personalizados e, portanto, não resisti e criei um agente de recebimento SMTP e um agente de roteamento para despejar todos os objetos de evento do pipeline de transporte para arquivos XML. É possível localizar um projeto do Microsoft Visual Studio® 2005 correspondente, chamado PipelineXMLDump, no download disponível para este artigo. Os dois arquivos importantes são DumpAgents.cs, que implementa fábricas do agente e agentes, e XMLDump.cs, que implementa uma classe auxiliar para gravar os campos de origem do evento e objetos de argumento do evento por meio dos métodos System.Reflection em arquivos XML. Se você compilar o código-fonte e copiar o arquivo PipelineXMLDump.dll resultante para uma pasta chamada C:\PipelineXMLDump do servidor de teste de Transporte de Borda, poderá registrar e habilitar os agentes personalizados usando os scripts RegisterPipelineXMLDump.ps1 e EnableDumpAgents.ps1. Os scripts foram incluídos na pasta de projeto PipelineXMLDump do download. É claro que os meus agentes personalizados servem somente para fins ilustrativos, não foram suficientemente testados e não devem ser instalados em um servidor de produção. Use-os por sua conta e risco.
DumpAgents.cs mostra como implementar todos os manipuladores de evento de recebimento e de roteamento SMTP suportados pelo pipeline de transporte. Esse pode ser um ponto de partida caso você queira implementar seus próprios agentes personalizados. Meus agentes de despejo gravam arquivos XML em subpastas em %ProgramFiles%\Microsoft\Exchange Server\TransportRoles\Logs\PipelineXMLDump que correspondem ao identificador da sessão SMTP (agente de recebimento SMTP) ou ao identificador da mensagem (agente de roteamento). A Figura 2 mostra um exemplo das informações de argumento de evento passadas para o agente de recebimento SMTP no manipulador OnConnectEvent. O exemplo revela o ponto de extremidade IP local (endereço e porta IP) que aceitou uma solicitação de conexão de entrada.
Figura 2 Informações de argumento despejadas durante o evento OnConnect
Figura 2 Informações de argumento despejadas durante o evento OnConnect

Preparação da execução de testes
Chega de teoria sobre registro em log, rastreamento e despejo. Vamos nos preparar para a execução de alguns testes e mostrar os agentes anti-spam em ação. A seguir, apresentarei um rápido resumo que espelha o máximo possível a configuração de TI da Microsoft em seu ambiente de teste. Como mencionado anteriormente, as informações gerais estão disponíveis no white paper técnico "Transporte de Borda do Microsoft Exchange Server 2007 e proteção das mensagens".
Comece pela desativação dos agentes Entrada de Reconfiguração de Endereço, Filtro de Anexos e Saída de Reconfiguração de Endereço ao executar o script EDGE01_disable_agents.ps1 disponível no download que acompanha este artigo. Não é necessário reescrever os endereços porque os destinatários utilizam os mesmos emails tanto interna como externamente. Eu não utilizo o agente Filtro de Anexos porque existem recursos de filtragem de anexos substitutos no Forefront Security.
O ambiente de teste não está conectado à Internet. Isso dificulta o teste do agente Filtro de Conexão. Para corrigir esse problema, crie uma lista de bloqueios de IP no host da Internet executando o arquivo INTERNET01_create_IP_block_list.bat. Verifique se as Ferramentas de Suporte do Windows® estão instaladas, já que elas incluem a ferramenta de linha de comando DNS (dnscmd.exe). Caso contrário, você terá que passar algum tempo criando os registros DNS manualmente usando o console DNS.
Agora você pode configurar o agente Filtro de Conexão executando o script EDGE01_add_block_list_provider.ps1. Esse script adiciona um provedor de Lista de Bloqueios de IP para ip-bl.consolidatedmessenger.com. Essa é a Lista de Bloqueios de IP do Consolidated Messenger, já criado no ambiente de teste pela execução do arquivo INTERNET01_create_IP_block_list.bat no host da Internet, como mencionado anteriormente. O TI da Microsoft também utiliza a Lista de Bloqueios de IP local e a Lista de Permissões de IP, mas esses recursos não exigem configuração manual. É importante observar que o TI da Microsoft não utiliza provedores de Lista de Permissões de IP.
Em seguida, configure o agente Filtro de Destinatários executando o script EDGE01_recipient_filter.ps1 para bloquear mensagens para destinatários não existentes, além de mensagens enviadas para as caixas postais e listas de distribuição globais somente para uso interno ou de saída.
O agente Filtro de Remetente também precisa de uma atualização de configuração. O TI da Microsoft utiliza a filtragem de remetente como uma medida contra ataques de inundação de emails feitos por endereços de remetentes específicos e para bloquear determinados servidores de lista e fontes similares consideradas como não relevantes aos negócios. Além disso, o TI da Microsoft utiliza a filtragem de remetente para bloquear mensagens com informações inválidas ou sem remetente. Vamos aplicar essa configuração ao ambiente de teste executando o script EDGE01_sender_filter.ps1 no servidor de Transporte de Borda.
Também será preciso configurar registros SPF (Sender Policy Framework) no DNS caso você queira espelhar a configuração do TI da Microsoft. Para gerar um registro SPF que ateste a autoridade do seu servidor de Transporte de Borda para mensagens vindas do seu domínio, adventure-works.com, você pode usar o Microsoft Sender ID Framework SPF Record Wizard (Assistente de Registro SPF da estrutura de ID do Remetente da Microsoft), disponível em microsoft.com/mscorp/safety/content/technologies/senderid/wizard. Experimente-o e especifique um nome de domínio da Internet. No ambiente de teste, execute o arquivo INTERNET01_create_SPF_record.bat no host da Internet.
E isso é tudo! Não é preciso configurar outros parâmetros, já que a maioria dos agentes vem com definições padrão razoáveis. Para executar uma verificação rápida das definições padrão mais importantes para os agentes Regras de Borda, ID do Remetente, Análise de Protocolo e Filtro de Conteúdo, execute o script EDGE01_check_defaults.ps1 no servidor de Transporte de Borda.

Agentes de Transporte de Borda em ação
Agora vamos colocar os agentes de Transporte de Borda em ação em alguns cenários realistas de serviço de mensagens. Para enviar mensagens de teste para o servidor de Transporte de Borda, eu utilizo o serviço SMTP e POP3 incluído no Windows Server 2003 e o Outlook® Express como cliente de mensagens, usando as definições padrão na maior parte do tempo, mas verificando se o registro em log está habilitado.
Mas primeiro, um aviso: não siga qualquer uma das etapas ou execute os scripts descritos nesta seção se o seu ambiente de teste tiver conexões com um sistema de produção ou com a Internet. Você está realizando testes por sua conta e risco.
O primeiro agente que irei testar é o Filtro de Conexão. Ele merece ser testado primeiro porque é o agente mais trabalhoso do servidor de Transporte de Borda. Na Microsoft, o agente Filtro de Conexão bloqueia cerca de 88% de todos os envios de mensagens pela Internet. De 13 milhões de tentativas de envio em um dia comercial normal, somente cerca de 1,5 milhão são de remetentes legítimos.
Assim, vamos enviar um email como Fabrikam.User@Fabrikam.com para Administrator@adventure-works.com. Se tudo funcionar adequadamente, o administrador não deverá receber a mensagem. Em vez disso, Fabrikam.User receberá uma DSN (notificação de status de entrega) declarando a falha na entrega ao destinatário. Fabrikam.User verifica se o endereço de email está correto, envia a mesma mensagem novamente e outra vez recebe um DSN. Em seguida, Fabrikam.User chama o suporte e informa o problema. Ela não é a primeira. Na verdade, ninguém mais na Fabrikam consegue se comunicar com a Adventure Works. Algo aconteceu. O problema é urgente. Tentando resolvê-lo com rapidez, você verifica os logs de SMTP da pasta %systemroot%\system32\Logfiles\SMTPSVC1 em INTERNET01 e, como mostrado em vermelho na Figura 3, lá está ele!
Figure 3 Os logs SMTP mostram o problema (Close Figure 3)
... 220 mail.adventure-works.com Microsoft ESMTP MAIL Service ready at Thu,
31 May 2007 12:21:33 -0700,
... EHLO, -, INTERNET01,
... 250-mail.adventure-works.com Hello [192.168.1.100],
... MAIL, -, FROM:<Fabrikam.User@fabrikam.com> SIZE=840,
... 250 2.1.0 Sender OK,
... RCPT, -, TO:<Administrator@adventure-works.com>,
... 550 5.7.1 E-mail rejected because your IP address is listed by
ip-bl.consolidatedmessenger.com. Please visit
http://www.consolidatedmessenger.com/ip-bl for more information.
If you still need assistance, contact cmipbl@adventure-works.com.,
... RSET, -, -,
... 250 2.0.0 Resetting,
... QUIT, -, -,
... 221 2.0.0 Service closing transmission channel,
A resposta de erro 550 diz a você que o Consolidated Messenger colocou o endereço IP do host da Internet em uma Lista de Bloqueios de IP. Bastante justo. Você entra em contato com o Consolidated Messenger para ser removido da lista. Acontece que é mais fácil entrar na lista de bloqueios do Consolidated Messenger do que ser removido dela. Levará dias, ou semanas, para limpá-la.
Você precisa de uma ajuda mais rápida e, portanto, entra em contato com a Adventure Works por meio do endereço de email cmipbl@adventure-works.com. Você envia um e-mail como Fabrikam.Admin@Fabrikam.com descrevendo a situação e solicitando o desbloqueio do endereço IP de Internet do seu host (neste caso, 192.168.1.100). Depois de verificar a sua identidade, a Adventure Works desbloqueia o endereço usando o comando a seguir para conceder uma exceção temporária que expira em 30 dias:
Add-IPAllowListEntry -IPAddress 192.168.1.100
-ExpirationTime (get-date).AddDays(30)
Trinta dias devem dar a você bastante tempo para arrumar tudo no Consolidated Messenger e a Adventure Works não precisará perder tempo mantendo a exceção manualmente. Ao conceder exceções com expiração automática, a Adventure Works mantém a sobrecarga administrativa associada às Listas de Permissões de IP no mínimo.

Remetente seguro
Em seguida, vamos testar a percepção que a filtragem de conteúdo tem do remetente seguro, que é um recurso novo e interessante que aumenta a precisão da filtragem de spam. O EdgeSync propaga informações sobre o remetente seguro a partir do ambiente interno em forma de hash e criptografada para os servidores de Transporte de Borda. O agente Filtro de Conteúdo utiliza essas informações durante o processo de filtragem para tomar decisões informadas. Você só precisa inserir as informações do remetente seguro (ou seja, a Lista de Remetentes Seguros, a Lista de Destinatários Seguros e os contatos externos) no Active Directory® usando o cmdlet Update-SafeList e replicando as informações para o servidor de Transporte de Borda usando o cmdlet Start-EdgeSynchronization. O TI da Microsoft executa o cmdlet Update-SafeList de forma programada em um horário fora do pico. Em nosso ambiente de teste, basta executar um script correspondente (HUB-MBX-01_update_safelist.ps1) manualmente.
Primeiro, limpe o ambiente de teste executando o script EDGE01_clean_up.ps1 no servidor de Transporte de Borda para remover a entrada da Lista de Permissões de IP criada anteriormente. Isso é necessário porque o agente Filtro de Conteúdo não age em mensagens de origens que constam nessa lista. Em seguida, remova a entrada 100.1.168.192.ip-bl.consolidatedmessenger.com da lista de bloqueios de IP do Consolidated Messenger executando o arquivo INTERNET01_create_IP_block_list.bat no host da Internet. Caso contrário, o host da Internet simulado não será capaz de enviar mensagens, como demonstrado anteriormente.
Por fim, envie uma mensagem que, com certeza, será considerada como spam pelo agente Filtro de Conteúdo. Isso é complicado, já que o agente Filtro de Conteúdo utiliza o limite de rejeição padrão do SCL para entregar a maioria das mensagens aos usuários e assim minimizar a ocorrência de falsos positivos. Ainda assim, após alguns testes, encontrei uma versão de mensagem que eleva a classificação do SCL para acima do nível de rejeição. Para enviar a mensagem como Contoso.User@Contoso.com, execute o script INTERNET01_contoso_msg.vbs no host da Internet.
O meu script utiliza uma conexão SMTP anônima para enviar a mensagem para o serviço SMTP em INTERNET01. Para que isso funcione, você precisa configurar o serviço SMTP para retransmitir mensagens para usuários anônimos. No Gerenciador do IIS, abra as propriedades do Servidor Virtual SMTP Padrão. Na guia Acesso, clique no botão Retransmissão e selecione Todos exceto a lista a seguir. Falarei sobre as implicações dessa configuração em instantes.
Quando você executa o script para enviar a mensagem, Contoso.User receberá uma DSN declarando a falha na entrega com: Código de Diagnóstico: smtp;550 5.7.1 Mensagem rejeitada devido a restrições de conteúdo. Você também pode ver essa resposta no log do SMTP no host da Internet e, se executar o comando Get-AgentLog | Select-Object -Last 1 no servidor de Transporte de Borda para exibir a última entrada do log do agente, verá que a mensagem foi rejeitada porque sua classificação do SCL foi 7, como mostrado na Figura 4.
Figura 4 Mensagem bloqueada devido a restrições de conteúdo
Figura 4 Mensagem bloqueada devido a restrições de conteúdo
Só que Contoso.User não é remetente de spam. Infelizmente, sua mensagem não passou nesse caso, mas Contoso.User normalmente consegue se comunicar com os destinatários da Adventure Works. Dessa forma, Contoso.User informa ao administrador em outro email que sua mensagem original foi bloqueada por engano. O administrador conhece Contoso.User e, para garantir que os filtros de spam não bloqueiem mais suas mensagens, o adiciona à Lista de Remetentes Seguros. Para fazer isso no Office Outlook 2007, clique com o botão direito do mouse em uma mensagem recebida de Contoso.User, aponte para Lixo Eletrônico e clique em Adicionar Remetente à Lista de Remetentes Confiáveis.
No intervalo usual, o cmdlet Update-SafeList é executado para atualizar as informações da lista segura no Active Directory e, após a próxima Sincronização de Borda, Contoso.User será capaz de se comunicar com o administrador sem falsos positivos. Para simular esse procedimento, execute o script HUB-MBX-01_update_safelist.ps1.
Agora execute o script INTERNET01_contoso_msg.vbs para enviar a mensagem de Contoso.User novamente. Verifique o log de agente no servidor de Transporte de Borda usando o comando Get-AgentLog | Select-Object -Last 1 para poder ver, em ReasonData, que a filtragem de conteúdo foi ignorada. Chega de falsos positivos para Contoso.User!

Ataque de spam
Para concluir os testes, vamos além. Sem dúvida, você já notou que eu configurei o host da Internet durante o teste anterior como uma retransmissão aberta, o que abre a porta para remetentes de spam. Dessa forma, agora veremos o que acontece se Spam.Sender@cohovineyards.com nota essa configuração e tenta se aproveitar do host para enviar milhares de mensagens de spam para a Adventure Works. O script INTERNET01_spam_msg.vbs envia somente uma mensagem de spam, você pode editá-lo e alterar o valor max_loop para gerar mais.
Para simular um ataque de spam, enviei mil mensagens para que o meu host comprometido o retransmitisse para o servidor de Transporte de Borda. O serviço SMTP limita o número de mensagens por conexão de saída a 20 e, portanto, levou algum tempo para que um número suficiente de mensagens de spam fosse retransmitido antes que o agente Análise de Protocolo do servidor de Transporte de Borda entrar em cena.
O agente Análise de Protocolo ajuda o agente Filtro de Conexão ao fazer a manutenção automática das entradas da Lista de Bloqueios de IP com base na análise do protocolo SMTP e nas atualizações da reputação de IP feitas a partir do Microsoft Update. Neste caso, a análise do protocolo SMTP encontrou os emails de spam. O agente Análise de Protocolo controla a classificação SCL de cada mensagem para calcular um valor SCL médio, usado na determinação do SRL (nível de reputação do remetente). À medida que mais e mais mensagens ilegítimas chegam durante a minha campanha de spam simulada, o SRL do host da Internet aumentou até que excedeu o limite de bloqueio de SRL. Como resultado, o host foi parar na Lista de Bloqueios de IP por 24 horas. Esse host nunca mais mandará spam! Aconteceu automaticamente. Não foi necessária nenhuma intervenção do administrador.
A Figura 5 mostra a entrada da Lista de Bloqueios de IP resultante e as alterações correspondentes na manipulação das mensagens. Antes do bloqueio do host, o servidor de Transporte de Borda rejeitou todas as mensagens de spam durante o evento OnEndOfData porque foi o Filtro de Conteúdo quem agiu em cada mensagem com base no limite do SCL (para obter uma referência, consulte a Figura 4). A mensagem foi enviada, mas não obteve êxito. Depois de bloquear o meu host, a conexão foi rejeitada pelo agente Filtro de Conexão durante o evento OnMailCommand. As mensagens não são mais enviadas. Isso economiza largura de banda da rede e recursos de processamento na desconexão de remetentes de spam antes do envio da mensagem.
Figura 5 Interrompendo um host da Internet transgressor
Figura 5 Interrompendo um host da Internet transgressor

Outros testes
É claro que existem muito mais recursos e cenários de agentes que você poderá testar. Por exemplo, você pode testar a filtragem de remetente ao enviar mensagens como Blocked.User@Contoso.com ou Blocked.User@Fabrikam.com. Pode testar a filtragem de destinatários ao enviar mensagens para Blocked.User@adventure-works.com. Também é possível usar o Telnet para simular ataques de coleta de diretório em intervalos variados de tarpitting. O TI da Microsoft utiliza o intervalo padrão de cinco segundos para respostas 5yz SMTP no conector de recebimento voltado para a Internet, tempo suficiente para impedir que os remetentes de spam pratiquem os ataques de coleta de diretório. Mas você pode aplicar valores diferentes usando o cmdlet Set-ReceiveConnector, como demonstrado no script EDGE01_tarpitting.ps1.
Você também pode ir mais fundo e verificar os arquivos de instantâneo que o rastreamento de pipeline cria para as mensagens de Contoso.User@Contoso.com. Examine os carimbos de antivírus, X-MS-Exchange-Organization-AVStamp-Mailbox: MSFTFF;1;0;0 0 0, que o Forefront Security utiliza para marcar as mensagens como verificadas. Quando o ForeFront Security do servidor do Transporte de Hub localiza esse carimbo com informações de versão recentes, não precisa verificar a mensagem uma segunda vez. Se você tentar enganar o Forefront Security ao inserir carimbos de antivírus falsos em suas mensagens de teste, verá o firewall de cabeçalho em ação, removendo esses carimbos logo após o evento OnDataCommand, muito antes do disparo do evento OnSubmittedMessage para a chamada do Agente de Roteamento de FSE.
Quando estiver examinando os cabeçalhos de mensagens nos arquivos de instantâneo talvez você queira criar um registro de teste SPF para Contoso.com que identifique um endereço IP incorreto como o remetente legítimo. Uma forma de fazer isso é executando o arquivo INTERNET01_wrong_SPF_record.bat no host da Internet. Em seguida, envie uma mensagem de teste como Contoso.User@Contoso.com e examine o cabeçalho X-MS-Exchange-Organization-SenderIdResult e Received-SPF:
X-MS-Exchange-Organization-SenderIdResult: SoftFail
Received-SPF: SoftFail (EDGE01.extranet.adventure-works.com: domain of transitioning
Contoso.User@Contoso.com discourages use of 192.168.1.100 as permitted sender)

Conclusão
Como você viu neste e em meu artigo anterior, os servidores de Transporte de Borda do Exchange Server 2007 vêm com um amplo conjunto de agentes de transporte para a implementação de recursos anti-spam confiáveis e de alta precisão, incluindo a filtragem de conexão, a análise de protocolo e a filtragem de conteúdo.A arquitetura de transporte é extensível e oferece suporte à implementação de outros agentes para obtenção de funcionalidade adicional. O agente Roteamento de FSE é um bom exemplo de um agente adicional que integra o Forefront Security para Exchange Server à arquitetura de transporte.
Combinados a recursos adicionais, como tarpitting de conexão, firewall de cabeçalho, TLS e autenticação, os servidores de Transporte de Borda oferecem os meios necessários para a obtenção de um nível muito alto de proteção ao serviço de mensagens em vários níveis e sem pontos únicos de falha. Ao implantar os servidores de Transporte de Borda e o Forefront Security em uma rede de perímetro, estritamente separados da sua organização do Exchange Server interno, você pode manter a inundação de conteúdo ilegítimo e malicioso longe do seu ambiente de mensagens e entregar as mensagens legítimas aos seus usuários com taxas muito baixas de falsos positivos.

Kay Unkroth é empresário e já trabalhou como engenheiro de suporte, desenvolvedor de sistema, consultor, instrutor e autor especializado em tecnologias de servidor Microsoft por mais de 15 anos. Kay também é co-fundador e presidente da Biblioso Corporation, empresa especializada em serviços de documentação gerenciada e de localização.


 Rede: Configura&#231;&#227;o de acesso remoto VPN com o ISA Server 2006
Rede Alan Maddison

Configuração de acesso remoto VPN com o ISA Server 2006
Visão geral:
  • Protocolos VPN
  • Configuração de uma conexão VPN site a site
  • Configuração de uma conexão VPN de acesso remoto
  • Novos recursos do ISA Server 2006

As redes virtuais privadas (VPNs) proporcionam um alto nível de adaptabilidade, escalabilidade e controle sobre a conectividade de rede. Além de aumentarem a segurança, elas podem significar economias significativas
em comparação com as conexões ponto a ponto dedicadas tradicionais. E ainda são flexíveis.
Há muitos tipos de VPNs. Algumas são usadas na conexão de usuários móveis à rede corporativa; já outras são usadas para conectar duas redes separadas geograficamente. Os protocolos usados por essas VPNs e os recursos que elas oferecem variam. Algumas oferecerão recursos de segurança como, por exemplo, autenticação e criptografia, e outras talvez sequer forneçam recursos de segurança internos. E, é claro, algumas são mais simples de configurar e gerenciar do que outras.
Neste artigo, abordarei como é possível implementar uma VPN usando o Internet Security and Acceleration (ISA) Server 2006. Eu me concentrarei especialmente em como a funcionalidade VPN ISA pode ser usada em dois cenários bastante comuns: como uma forma de fornecer conexões de acesso remoto VPN para usuários e como um meio de oferecer conexões VPN site a site. Ambas as implementações incluem recursos de segurança para garantir a privacidade dos dados e oferecer proteção a recursos de rede internos.
Nesse primeiro cenário – uma conexão VPN de acesso remoto –, um cliente remoto inicia uma conexão VPN com o ISA Server pela Internet. Em seguida, o ISA Server conecta o cliente remoto à rede interna, oferecendo ao usuário pleno acesso aos recursos de rede internos, inclusive dados e aplicativos. Já o segundo cenário, uma conexão VPN site a site, é um pouco mais complexa por conta do uso de um roteador, que pode ser o próprio ISA. Mas esse tipo de conexão dá a possibilidade de conectar diretamente diferentes endereços comerciais ou filiais entre si ou a uma matriz.
Há várias vantagens adicionais em se usar o ISA Server 2006 na implementação de uma VPN. Uma das mais significativas acontece por conta da natureza integrada do ISA Server, o que significa que as funcionalidades VPN e de firewall trabalham juntas. Além disso, o ISA Server oferece um recurso de quarentena VPN que usa o recurso Network Access Quarantine Control do Windows Server® 2003 para colocar em quarentena um computador de acesso remoto até que sua configuração seja validada por um script de servidor. Isso acrescenta uma outra camada de proteção, oferecendo um meio de verificar coisas como o status de definição do antivírus e a diretiva do firewall local do computador remoto antes que você permita a ele acessar os recursos de rede internos.
Entre as maiores vantagens administrativas oferecidas pelo ISA Server como solução VPN estão o gerenciamento centralizado de diretivas, o monitoramento, o registro em log e a geração de relatórios. Para suas responsabilidades administrativas do dia-a-dia, esses recursos podem se mostrar imprescindíveis. Em especial, os recursos de monitoramento em tempo real e a filtragem de log dão uma idéia melhor do tráfego da rede e das conexões que passam pelo ISA Server.

Protocolos VPN
Os principais protocolos de encapsulamento usados em uma conexão VPN ISA oferecem a primeira linha de defesa para proteger as conexões. O ISA Server dá suporte a três protocolos – protocolo L2TP (Layer 2 Tunneling Protocol) sobre IPSec, protocolo PPTP (Point-to-Point Tunneling Protocol) e modo de encapsulamento IPSec. Só há suporte para esse último em conexões site a site, sendo ele principalmente usado na interoperabilidade com roteadores e outros sistemas operacionais que não dão suporte a L2TP ou a PPTP.
O L2TP se assemelha ao IPSec pois não tem nenhum mecanismo próprio para oferecer privacidade de dados. Quando somada ao IPSec, que oferece métodos de autenticação e de criptografia eficientes, a combinação proporciona uma solução convincente. O PPTP usa o protocolo MS CHAP (Microsoft® Challenge Handshake Authentication Protocol) versão 2 ou o protocolo EAP-TLS (Extensible Authentication Protocol-Transport Layer Security) para autenticação e a MPPE (Criptografia Ponto a Ponto da Microsoft) para, como você deve imaginar, criptografia.
Se uma organização deve optar pelo L2TP sobre IPSec ou pelo PPTP é algo que normalmente depende de fatores específicos dela. O L2TP sobre IPSec permitirá que você use uma criptografia mais complexa e sofisticada e dará suporte a mais tipos de redes (inclusive IP, X.25, Frame Relay e ATM). No entanto, o PPTP é mais fácil de implementar e normalmente tem menos requisitos. Dito isso, em situações nas quais não há nenhuma restrição organizacional, é considerada uma prática recomendada a implementação do L2TP sobre IPsec.

Conexão VPN site a site
O ISA Server 2006 deu um passo gigantesco ao simplificar a configuração de uma VPN site a site. Nas versões anteriores, havia muitas etapas envolvidas. Para este exemplo, eu abordarei um único site remoto que está se conectando a uma matriz usando o L2TP sobre IPSec com ISA Server em ambos os locais. O processo exige que você configure o ISA Server da matriz antes de configurar o site remoto.
A primeira etapa do processo é configurar as contas de usuário locais obrigatórias em ambos os ISA Servers. Essa identidade do usuário fornecerá o contexto de segurança no qual a conexão com o ISA Server remoto ou principal será estabelecida. O nome dessa conta deve corresponder ao da conexão VPN criada por você no console de administração do ISA. Por exemplo, uma boa convenção de nomenclatura seria configurar o nome de usuário "Site VPN" no ISA Server localizado na matriz (apontando para o site remoto) e "HQ VPN" no ISA Server remoto. Assim que tiver criado essas contas, você precisa acessar as propriedades da conta, abrir a guia Discagem e verificar se a opção Permitir Acesso está selecionada.
Depois que você tiver criado a conta de usuário local, a próxima etapa é criar o certificado de infra-estrutura de chave pública (PKI) a ser usado na autenticação entre os dois sites. Você tem a opção do uso de uma chave pré-compartilhada, mas usar um certificado é sempre um método preferível. A forma mais simples de instalar um certificado para uma conexão VPN é se conectando diretamente à sua própria autoridade de certificação corporativa e solicitando um certificado no site do servidor de certificados. Mas, para isso, você talvez precise criar uma regra de acesso para permitir que o ISA Server se conecte ao servidor de certificados via HTTP.
Se estiver familiarizado com versões anteriores do ISA Server, você perceberá que a interface do ISA Server 2006, mostrada na Figura 1, está muito mais intuitiva. Quando você seleciona VPN no painel à esquerda, a configuração e as opções da tarefa são exibidas nos painéis central e à direita.
Figura 1 O ISA Server 2006 tem uma interface mais intuitiva
Figura 1 O ISA Server 2006 tem uma interface mais intuitiva
Inicie o assistente da VPN site a site clicando na tarefa Criar Conexão VPN Site a Site no painel à direita. Quando iniciado, o assistente solicita o nome de uma rede site a site; ele deve corresponder ao nome da conta do usuário criada por você anteriormente. Depois de digitar o nome, pressione o botão Avançar. Na tela seguinte (consulte a Figura 2), selecione o protocolo VPN a ser usado – no meu exemplo, ele é L2TP sobre IPSec. Pressione Avançar, e o assistente felizmente o avisa de que uma conta de usuário correspondente ao nome da rede deve estar disponível – como você foi cuidadoso e fez isso, basta pressionar OK para avançar à próxima tela.
Figura 2 Selecione o protocolo VPN que deseja usar.
Figura 2 Selecione o protocolo VPN que deseja usar.
Agora você precisa criar um pool de endereços IP. Há duas opções aqui: é possível criar um pool de endereços estáticos no ISA Server ou usar o servidor DHCP existente para lidar com a atribuição de endereços. Como ambos os métodos são aceitáveis, a decisão deve ser tomada com base nos procedimentos da empresa no que eles se referem à opção em especial. Agora a tela pede para que você informe o nome do servidor remoto. Digite o nome de domínio totalmente qualificado (FQDN) do servidor remoto e, em seguida, as credenciais do usuário para a conexão. Não se esqueça de que é preciso especificar as informações da conta criada por você no ISA Server remoto. Neste exemplo, a conta de usuário seria HQ VPN, como mostra a Figura 3.
Figura 3 Digite o FQDN do servidor remoto
Figura 3 Digite o FQDN do servidor remoto
Na tela seguinte, selecione o método de autenticação de saída. (Como eu disse anteriormente, é sempre preferível usar um certificado.) Em seguida, digite o intervalo de endereços IP usado na rede interna do site remoto.
Depois disso, se você estiver usando o ISA Server 2006 Enterprise Edition, o assistente permitirá que você configure os endereços IP dedicados com Balanceamento de Carga de Rede do site remoto. Caso você esteja usando o ISA Server 2006 Standard Edition, ignore a etapa do balanceamento de carga e vá diretamente para a próxima tela (consulte a Figura 4), onde você cria a regra de rede usada para rotear o tráfego do site remoto para a rede local.
Figura 4 Crie a regra de rede que roteia o tráfego
Figura 4 Crie a regra de rede que roteia o tráfego
Você também precisa criar uma regra de acesso, a próxima etapa do processo. Ao configurar a regra de acesso, há três opções para permitir que os protocolos sejam usados – você pode optar por permitir todo o tráfego de saída, permitir todo o tráfego de saída com exceção de determinados protocolos ou permitir apenas protocolos específicos. Na maior parte das situações, você deverá selecionar a opção de todo o tráfego de saída.
Você está quase acabando. Neste ponto, o assistente apresentará um resumo da configuração e, assim que você pressionar o botão Concluir, a conexão VPN site a site será criada. Uma caixa de diálogo será exibida indicando que uma regra de diretiva do sistema precisa estar habilitada para downloads da lista de certificados revogados – pressione Sim para habilitá-la. Em seguida, o assistente dará informações sobre todas as etapas de configuração adicionais que talvez sejam necessárias. Depois de concluir a configuração do ISA Server no site principal, você precisa seguir todas as mesmas etapas para configurar o site remoto. Assim que todas forem concluídas, os usuários em ambos os sites poderão se comunicar em toda a VPN.

Conexão VPN de acesso remoto
Configurar uma conexão VPN de acesso remoto para o acesso do cliente é bem mais simples (consulte a Figura 5). A primeira etapa é selecionar VPN no painel à esquerda do console de administração do ISA Server. Em seguida, selecione a tarefa Habilitar Acesso do Cliente VPN no painel à direita. Você verá um aviso de que isso pode causar a reinicialização do serviço de Roteamento e Acesso Remoto. (Como isso pode causar problemas de conexão, você talvez queira implementar essa alteração durante uma janela de manutenção programada.) Clique em OK para desconsiderar o aviso; o ISA Server possibilita o acesso ao ISA Server a uma diretiva do sistema que permite o tráfego do cliente VPN. É possível exibir essa regra selecionando Diretiva de Firewall no console de administração do ISA Server e escolhendo a regra Mostrar Regras de Diretiva do Sistema.
Figura 5 Configure uma conexão VPN de acesso remoto
Figura 5 Configure uma conexão VPN de acesso remoto
Uma regra de rede padrão também é habilitada para permitir o roteamento entre a rede interna e as duas redes VPN (Clientes VPN e Clientes VPN em Quarentena). Essa regra de rede pode ser exibida ou editada selecionando-se Redes no painel à esquerda e abrindo a guia Regras de Rede no painel central.
Agora você precisa configurar o acesso do cliente VPN. Há três parâmetros adicionais que precisam ser configurados: os grupos de segurança do Windows que têm permissão de acesso, os protocolos que podem ser usados pelos clientes e o mapeamento de usuário. A caixa de diálogo para configurá-los é mostrada na Figura 6.
Figura 6 Configure o acesso do cliente VPN
Figura 6 Configure o acesso do cliente VPN
A guia Grupos exige apenas que você selecione os grupos do Windows que têm permissão de acesso remoto via VPN. De uma perspectiva administrativa, eu acho uma boa idéia criar um único grupo ao qual a permissão é concedida. Isso facilita muito o gerenciamento de acesso remoto.
A guia Protocolos mostra que apenas o PPTP está habilitado por padrão. Você certamente deve habilitar o L2TP sobre IPSec caso isso seja totalmente viável no ambiente.
Mapeamento de Usuário permite que você mapeie contas de usuário a partir de namespaces como, por exemplo, o serviço RADIUS (Remote Authentication Dial-In User Service), para contas do Windows para garantir a aplicação correta dessas diretivas de acesso. Assim que completar essas opções de configuração e aplicar as alterações no ISA Server, você estará pronto. Agora os clientes podem acessar diretamente os dados e os aplicativos internos da sua rede usando uma conexão VPN.

Aprimoramentos no ISA Server 2006
O ISA Server 2006 apresenta vários aprimoramentos que aumentam sua eficiência e desempenho em comparação com versões anteriores. Esses recursos – que incluem a compactação HTTP, o suporte ao Serviço de Transferência Inteligente em Segundo Plano (BITS) e a Qualidade de Serviço (QoS) – oferecem várias técnicas para otimizar o uso da rede. É claro que, mesmo com essas técnicas, você também deve continuar usando as tecnologias de otimização de largura de banda mais comuns, que são a base do ISA Server, inclusive o cache.
Já existe o suporte à compactação HTTP em vários produtos Microsoft há algum tempo – ela está no Internet Explorer® desde a versão 4 e no Windows Server desde o Windows® 2000. No entanto, essa é a primeira versão do ISA Server a dar suporte à compactação HTTP, bem como aos algoritmos GZIP e Deflate, que são padrões do setor.
O que isso significa? Com suporte à compactação HTTP, um navegador da Web compatível com HTTP 1.1 pode solicitar conteúdo compactado de qualquer site. Mas não se esqueça de que apenas as respostas são compactadas, e não as conexões de saída iniciais do cliente.
A compactação HTTP é uma configuração de diretiva HTTP global que se aplica a todo o tráfego HTTP que passa pelo ISA Server, em lugar da associação a uma regra de rede específica. No entanto, você tem a opção de implementar a compactação HTTP por ouvinte; isso é configurado por meio do assistente Ouvinte da Web.
A compactação HTTP, que pode ser acessada por meio da opção Geral no painel à esquerda, permanece habilitada por padrão. Mas como mostra a Figura 7, você precisa configurar os elementos de rede em que a compactação deve ser usada. Continuando com o exemplo da VPN site a site, você precisa selecionar a guia Retornar Dados Compactados e adicionar o elemento de rede VPN do Site criado anteriormente. Neste ponto, você também tem a opção de configurar os tipos de conteúdo a serem compactados. O ISA Server 2006 acompanha uma lista dos tipos de conteúdo padrão, mas é possível adicionar tipos de conteúdo personalizados por meio do painel de tarefas Diretiva de Firewall na guia Caixa de Ferramentas. Lembre-se de que a guia Retornar Dados Compactados se refere à compactação de dados pelo ISA Server antes que eles retornem ao cliente. Você precisa usar a guia Solicitar Dados Compactados para que haja a solicitação do ISA Server para um servidor Web lidar com a compactação antes que os dados sejam enviados para o ISA Server.
Figura 7 Configure a compactação HTTP
Figura 7 Configure a compactação HTTP
Serviço de Transferência Inteligente em Segundo Plano é um sistema de transferência de arquivos assíncrono para os tráfegos HTTP e HTTPS. O Windows Server 2003 inclui o BITS versão 1.5, que dá suporte a downloads e uploads, embora estes também exijam os Serviços de Informações da Internet (IIS) versão 5.0 ou posterior. Por ser um serviço de transferência de arquivos inteligente, o BITS tem a possibilidade de examinar o tráfego de rede e de usar apenas a parte ociosa da largura de banda. Além disso, a transferência de arquivos é dinâmica, e o BITS suportará picos no tráfego de rede normal voltando a limitar o uso da rede. A vantagem aqui é que o BITS garante que downloads e uploads de arquivos maiores não terão um impacto negativo sobre outros usos da rede. Do ponto de vista do administrador, isso significa que você deve receber muito menos reclamações sobre o mau desempenho da rede. Boas notícias!
O BITS oferece outras vantagens capazes de aprimorar a experiência do usuário e de melhorar o desempenho da rede. Por exemplo, uma transferência de arquivos que usa o BITS é binária, o que significa que ele pode continuar transferências (sem ter que recomeçar) interrompidas por fatores como, por exemplo, falhas na rede. E o ISA Server 2006 inclui suporte interno para um recurso de cache do Microsoft Update que usa o cache do BITS na otimização das atualizações.
O protocolo DiffServ (Serviços Diferenciados) permite a priorização dos pacotes (ou QoS) para tráfegos HTTP e HTTPS. Em outras palavras, dependendo da configuração do ISA Server, determinados tráfegos terão prioridade. Isso é muito útil em redes com largura de banda limitada, ou por conta do volume de tráfego, ou por conta da velocidade de conexão da rede. De acordo com a Internet Engineering Task Force (IETF), o DiffServ é um mecanismo de gerenciamento do tráfego com base na classe. Por isso, DiffServ é capaz de diferenciar os tipos de tráfego e de gerenciá-los de acordo, garantindo que o tráfego de maior prioridade tenha preferência.
Para fornecer esse recurso, o ISA Server funciona em conjunto com roteadores compatíveis com QoS. É importante garantir que os bits DiffServ do ISA Server correspondam às prioridades nos roteadores, caso você deseja que os pacotes sejam roteados com a mesma priorização.
Conforme implementado no ISA Server, esse tipo de priorização dos pacotes é uma configuração de diretiva HTTP global e aplicada em todo o tráfego HTTP que passa pelo ISA Server 2006 usando um filtro da Web DiffServ. Isso quer dizer que o ISA Server não dá suporte ao DiffServ para outros protocolos e pode, na verdade, descartar bits DiffServ existentes em tráfego não-HTTP.
Como mostra a Figura 8, o DiffServ é implementado como sendo um filtro da Web e pode ser acessado selecionando-se Suplementos no painel à esquerda. É importante que você não altere as configurações padrão ou a ordem de prioridade do filtro DiffServ devido à necessidade do ISA Server de inspecionar o tamanho da solicitação/resposta no momento do processamento.
Figura 8 Veja o filtro da Web DiffServ
Figura 8 Veja o filtro da Web DiffServ
Se olhar bem a Figura 8, você deverá notar que o filtro DiffServ não permanece habilitado por padrão. Para habilitá-lo, basta selecionar Habilitar Filtros Selecionados no painel Tarefas e configurar o filtro. Como a priorização dos pacotes DiffServ no ISA Server se baseia em URLs ou em domínios específicos, você precisa adicionar essas informações às preferências do DiffServ. Para isso, selecione Geral no painel à esquerda do console de gerenciamento e, em Configurações Globais da Diretiva HTTP, selecione Especificar Preferências de DiffServ. Ao especificar essas preferências, você deve definir as prioridades, além das URLs e dos domínios que devem ser priorizados. O ISA Server 2006 oferece novos recursos eficientes para configurar o acesso remoto destinado a clientes VPN ou para criar VPNs site a site. Ele deve encabeçar a sua lista quando você pensar em qual solução VPN implementar.

Alan Maddison é consultor sênior em aplicação da tecnologia Microsoft da MTI Technology Corporation. Ele se concentra principalmente em Active Directory, Exchange Server e virtualização.


 SQL Server: Como otimizar o desempenho da consulta do SQL Server
SQL Server Maciej Pilecki

Como otimizar o desempenho da consulta do SQL Server
Visão geral:
  • Análise de planos de execução
  • Otimização de consultas
  • Identificação de consultas a serem ajustadas

Ao otimizar seu servidor de banco de dados, ajuste o desempenho de cada consulta. Isso é tão ou mais importante que ajustar outros aspectos de instalação do seu servidor, que afetam o desempenho, tais como as configurações de hardware e de software.
Mesmo que seu servidor de banco de dados esteja sendo executado no hardware mais poderoso disponível, seu desempenho poderá ser afetado negativamente por uma série de consultas com comportamento inadequado. Na verdade, mesmo uma só consulta inadequada, às vezes chamada de "consulta de fuga", pode levar a problemas graves de desempenho no seu banco de dados.
Por outro lado, o desempenho geral do seu banco de dados pode melhorar muito com o ajuste das consultas mais caras e executadas com maior freqüência. Neste artigo, abordo algumas das técnicas que você pode empregar para identificar e ajustar as consultas mais caras e com pior desempenho no seu servidor.

Análise de planos de execução
Ao ajustar uma consulta separada, em geral você começa verificando o plano de execução dessa consulta. O plano de execução descreve a seqüência de operações, físicas e lógicas, que o SQL ServerTM executa para fazer a consulta e gerar o conjunto de resultados desejado. O plano de execução é gerado por um componente do mecanismo de banco de dados chamado Otimizador de Consultas, durante a fase de otimização do processamento de consulta. Isso leva em conta diferentes fatores, tais como os predicados de pesquisa utilizados na consulta, as tabelas envolvidas e suas condições de associação, a lista de colunas retornadas e a presença de índices úteis que podem servir como caminhos de acesso eficazes para os dados.
Em consultas complexas, pode haver uma grande quantidade de permutações possíveis; então, o otimizador de consultas não avalia todas as possibilidades, mas tenta encontrar um plano que seja "bom o suficiente" para determinada consulta. Isso ocorre pois nem sempre é possível encontrar um plano perfeito; mesmo quando isso é possível, o custo da avaliação de todas as possibilidades de encontrar um plano perfeito pode facilmente superar qualquer ganho de desempenho. Do ponto de vista de um DBA, é importante compreender o processo e suas limitações.
Há diversas formas de recuperar um plano de execução para uma consulta:
  • O Management Studio fornece os recursos Display Actual Execution Plan e Display Estimated Execution Plan, que apresentam o plano de forma gráfica. Esses recursos oferecem a solução mais adequada para exame direto, e são a abordagem utilizada com mais freqüência para exibir e analisar planos de execução. (Neste artigo, utilizarei planos gráficos gerados desta forma para ilustrar os exemplos.)
  • Várias opções SET, tais como SHOWPLAN_XML e SHOWPLAN_ALL, retornam o plano de execução como um documento XML que descreve o plano usando um esquema especial ou como um conjunto de linhas com descrição textual de cada operação do plano de execução.
  • As classes de eventos do SQL Server Profiler, como Showplan XML, permitem reunir planos de execução de declarações coletados por um rastreamento.
Apesar de uma representação XML do plano de execução não ser o formato de leitura mais fácil, esta opção permite que você escreva procedimentos e utilitários que podem analisar seus planos de execução, buscando sinais de problemas de desempenho e planos com qualidade inferior. Uma representação baseada em XML também pode ser salva em um arquivo com a extensão .sqlplan e, depois, ser aberta no Management Studio para gerar uma representação gráfica. Estes arquivos também podem ser salvos para posterior análise, certamente eliminando a necessidade de reproduzir o plano de execução toda vez que você deseja analisá-lo. Isso é especialmente útil quando você deseja comparar seus planos para verificar como eles mudam com o tempo.

Custo estimado de execução
A primeira coisa que você precisa compreender a respeito de planos de execução é como eles são gerados. O SQL Server utiliza um otimizador de consultas baseado em custo, ou seja, ele tenta gerar um plano de execução com o menor custo estimado. A estimativa se baseia na estatística de distribuição de dados disponível para o otimizador quando ele avalia cada tabela envolvida na consulta. Se essa estatística estiver ausente ou desatualizada, o otimizador de consultas não terá informações vitais necessárias ao processo de otimização da consulta e, portanto, suas estimativas provavelmente estarão erradas. Nesses casos, o otimizador escolhe um plano aquém do ideal, superestimando ou subestimando custos de execução de diferentes planos.
Há algumas suposições falsas comuns sobre o custo estimado de execução. Em especial, as pessoas costumam pressupor que o custo estimado de execução é um bom indicador de quanto tempo a consulta leva para ser executada e que essa estimativa permite diferenciar planos bons de planos ruins. Mas isso não é verdade. Primeiro, existe documentação suficiente em relação às unidades para expressar o custo estimado e se elas têm relação direta com o tempo de execução. Segundo, como se trata de uma estimativa e ela pode estar errada, planos com custos estimados superiores às vezes podem ser bem mais eficazes em termos de CPU, E/S e tempo de execução, apesar das estimativas mais altas. Isso costuma ocorrer em consultas que envolvem variáveis de tabelas. Como não há estatística disponível para as variáveis de tabelas, o otimizador de consultas sempre pressupõe que uma variável de tabela contém apenas uma linha, mesmo quando ela contém várias linhas. Então, o otimizador de consultas escolhe um plano com base em uma estimativa imprecisa. Portanto, ao comparar os planos de execução de suas consultas, não se restrinja ao custo estimado da consulta. Em vez disso, inclua a saída das opções STATISTICS I/O e STATISTICS TIME na análise para compreender o real significado da execução de custo em termos de E/S e tempo da CPU.
Vale a pena mencionar aqui um tipo especial de plano de execução, chamado de plano paralelo. Se você estiver executando sua consulta em um servidor com mais de uma CPU e sua consulta for adequada à paralelização, um plano paralelo poderá ser escolhido (Em geral, o otimizador de consultas só considera um plano paralelo para uma consulta com custo que excede determinado limite configurável). Devido à sobrecarga no gerenciamento de vários segmentos paralelos de execução (o que significa a distribuição de trabalho em segmentos, a execução da sincronização e a coleta de resultados), o custo de execução de planos paralelos é maior e isso se reflete no custo estimado. Então, por que eles têm preferência sobre planos mais baratos e não paralelos? Graças à utilização do poder de processamento de várias CPUs, os planos paralelos tendem a gerar resultados mais rápidos do que planos padrão. De acordo com o cenário específico, inclusive variáveis como recursos disponíveis e carga simultânea de outras consultas, essa situação pode ser desejável para sua configuração. Nesse caso, controle as consultas que podem gerar planos paralelos e quantas CPUs cada uma pode utilizar. Para fazer isso, defina o grau máximo da opção de paralelismo em nível de servidor e substitua-o em nível de consulta individual por OPTION (MAXDOP n), conforme necessário.

Análise de um plano de execução
Agora vejamos uma consulta simples, seu plano de execução e algumas formas de melhorar seu desempenho. Digamos que executo esta consulta através do Management Studio com a opção Include Actual Execution Plan ativada no banco de dados de amostra Adventure Works no SQL Server 2005:
SELECT c.CustomerID, SUM(LineTotal)
FROM Sales.SalesOrderDetail od
JOIN Sales.SalesOrderHeader oh
ON od.SalesOrderID=oh.SalesOrderID
JOIN Sales.Customer c ON oh.CustomerID=c.CustomerID
GROUP BY c.CustomerID
Como resultado, vejo o plano de execução descrito na Figura 1. Esta consulta simples calcula a quantidade total de pedidos feitos por cada cliente do Adventure Works. No plano de execução, você verifica como o mecanismo do banco de dados processa a consulta e gera o resultado. Planos de execução gráfica devem ser lidos de cima para baixo e da direita para a esquerda. Cada ícone representa uma operação lógica e física executada, e as setas mostram o fluxo de dados entre as operações. A espessura das setas representa o número de linhas transferidas entre operações. Quanto mais espessa a seta, maior é o número de linhas envolvidas. Se você colocar o ponteiro sobre um dos ícones de operador, uma Dica de ferramenta amarela (como aquele mostrado na Figura 2) exibirá detalhes dessa operação específica.
Figura 1 Amostra de plano de execução
Figura 1 Amostra de plano de execução
Figura 2 Detalhes de uma operação
Figura 2 Detalhes de uma operação
Ao verificar cada operador, você pode analisar a seqüência de etapas executadas:
  1. O mecanismo de banco de dados examina um índice agrupado na tabela Sales.Customer e retorna a coluna CustomerID para todas as linhas dessa tabela.
  2. Depois, ele faz um exame de índice (ou seja, um índice não-agrupado) em um dos índices da tabela Sales.SalesOrderHeader. Esse é um índice da coluna CustomerID, mas ele também inclui implicitamente a coluna SalesOrderID (a chave de cluster da tabela). Os valores dessas duas colunas são retornados pelo exame.
  3. As saídas dos dois exames são associadas na coluna CustomerID através do operador físico Merge Join. (Esta é uma das três formas físicas possíveis de execução de uma operação de associação lógica. Este é um processo rápido mas exige a classificação das duas entradas em uma coluna associada. Nesse caso, os dois exames já retornaram as linhas classificadas em CustomerID; portanto, não é necessário executar a operação de classificação adicional).
  4. Em seguida, o mecanismo de banco de dados examina o índice agrupado na tabela Sales.SalesOrderDetail, recuperando os valores de quatro colunas (SalesOrderID, OrderQty, UnitPrice e UnitPriceDiscount) de todas as linhas desta tabela. (Estimava-se que 123.317 linhas seriam retornadas por esta operação e de fato esse número foi retornado, como você pode observar nas propriedades Número estimado de linhas e Número real de linhas na Figura 2. Portanto, a estimativa foi muito precisa.)
  5. Linhas geradas pelo exame de índice agrupado são transferidas para o primeiro Compute Scalar; assim, o valor da coluna computada LineTotal pode ser calculado para cada linha, com base nas colunas OrderQty, UnitPrice e UnitPriceDiscount envolvidas na fórmula.
  6. O segundo operador Compute Scalar aplica a função ISNULL ao resultado do cálculo anterior, conforme exigido pela fórmula da coluna computada. Isso conclui o cálculo da coluna LineTotal e a retorna, junto com a coluna SalesOrderID, ao próximo operador.
  7. A saída do operador Merge Join na Etapa 3 é associada à saída do operador Compute Scalar da Etapa 6, através do operador físico Hash Match.
  8. Outro operador Hash Match é aplicado para agrupar linhas retornadas de Merge Join pelo valor de coluna CustomerID e o valor agregado SUM calculado da coluna LineTotal.
  9. O último nó, SELECT, não é um operador físico ou lógico, mas um espaço reservado que representa resultados e custos gerais da consulta.
No meu laptop, este plano de execução tinha um custo estimado de 3.31365 (conforme mostrado na Figura 3). Quando executada com STATISTICS I/O ON, a consulta relatava a execução de um total de 1.388 operações de leitura lógica nas três tabelas envolvidas. Os percentuais exibidos sob cada operador representam o custo de cada operador em relação ao custo geral estimado do plano de execução inteiro. No plano da Figura 1, observe que a maior parte do custo total do plano de execução inteiro está associado a estes três operadores: o Clustered Index Scan (Exame de Índice Agrupado) da tabela Sales.SalesOrderDetail e os dois operadores Hash Match. Mas, antes de abordar a questão da otimização, gostaria de destacar uma alteração bem simples na minha consulta, que me permitirá eliminar dois operadores.
Figura 3 Custo estimado de execução total da consulta
Figura 3 Custo estimado de execução total da consulta
Como a única coluna que retorno da tabela Sales.Customer é CustomerID, e essa coluna também é incluída como uma chave estrangeira em Sales.SalesOrderHeaderTable, posso eliminar completamente a tabela Customer da consulta, sem alterar o significado lógico nem o resultado gerado pela nossa consulta através deste código:
SELECT oh.CustomerID, SUM(LineTotal)
FROM Sales.SalesOrderDetail od JOIN Sales.SalesOrderHeader oh
ON od.SalesOrderID=oh.SalesOrderID
GROUP BY oh.CustomerID
Isso resulta em um plano de execução diferente, que é mostrado na Figura 4.
Figura 4 O plano de execução após a eliminação da tabela Customer da consulta
Figura 4 O plano de execução após a eliminação da tabela Customer da consulta
Duas operações foram totalmente eliminadas – Clustered Index Scan, na tabela Customer, e Merge Join, entre Customer e SalesOrderHeader. A associação Hash Match foi substituída por Merge Join, que é bem mais eficaz. Entretanto, para utilizar Merge Join entre as tabelas SalesOrderHeader e SalesOrderDetail, foi necessário o retorno das linhas das duas tabelas classificadas pela coluna de associação SalesOrderID. Para conseguir isso, o otimizador de consultas decidiu examinar o índice agrupado na tabela SalesOrderHeader, em vez de examinar o índice não-agrupado, que seria mais barato em termos da E/S envolvida. Este é um bom exemplo de como o otimizador de consultas funciona na prática. Como as economias de custo resultantes da mudança na forma física de executar a operação de associação foram superiores ao custo adicional de E/S gerado pelo Clustered Index Scan, o otimizador de consultas escolheu a combinação resultante de operadores, pois ela forneceu o menor custo total estimado de execução. No meu laptop, apesar do aumento no número de leituras lógicas (até 1.941), o tempo de consumo da CPU diminuiu e houve uma redução de cerca de 13% (2.89548) no custo estimado de execução desta consulta.
Digamos que eu queira aperfeiçoar ainda mais o desempenho desta consulta. Observo o Clustered Index Scan da tabela SalesOrderHeader, que se tornou o operador mais caro neste plano de execução. Como só preciso de duas colunas desta tabela para realizar a consulta, posso criar um índice não-agrupado contendo apenas essas duas colunas, substituindo o exame da tabela inteira pelo exame de um índice não-agrupado bem menor. Aparência da definição de índice:
CREATE INDEX IDX_OrderDetail_OrderID_TotalLine
ON Sales.SalesOrderDetail (SalesOrderID) INCLUDE (LineTotal)
Observe que o índice que criei inclui uma coluna computada. Isso nem sempre é possível, de acordo com a definição da coluna computada.
Após criar esse índice e executar a mesma consulta, obtenho o novo plano de execução mostrado na Figura 5.
Figura 5 Plano de execução otimizado
Figura 5 Plano de execução otimizado
O exame de índice agrupado na tabela SalesOrderDetail foi substituído por um exame de índice não-agrupado, com uma redução significativa no custo de E/S. Também eliminei um dos operadores Compute Scalar, pois meu índice inclui um valor já calculado da coluna LineTotal. O custo estimado do plano de execução agora é de 2.28112 e a consulta faz 1.125 leituras lógicas quando executada.

O índice abrangente
Exercício de consulta de pedidos de clientes
Pergunta: Este é o seu exercício de consulta de pedidos de clientes: tente descobrir a definição de índice, ou seja, que colunas ele deve conter para se tornar um índice abrangente desta consulta e se a ordem das colunas na definição de índice faria diferença no desempenho.
Resposta: Eu desafiei você a descobrir o índice abrangente ideal para criar uma tabela Sales.SalesOrderHeader para a consulta de amostra do meu artigo. Para conseguir isso, a primeira coisa a ser observada é que a consulta utiliza apenas duas colunas da tabela: CustomerID e SalesOrderID. Após uma leitura cuidadosa do meu artigo, você notará que, no caso da tabela SalesOrderHeader, já existe um índice que aborda esta consulta. Ele é o índice de CustomerID e contém implicitamente a coluna SalesOrderID, que é a chave de cluster da tabela.
É claro que também expliquei por que o otimizador da consulta decidiu não utilizar este índice. Você poderia forçar o otimizador de consultas a utilizar este índice, mas a solução seria menos eficaz do que o plano existente que utiliza os operadores Clustered Index Scan e Merge Join. Isso ocorreria pois você forçaria o otimizador de consultas a optar entre executar a operação adicional Classificar (para poder continuar utilizando o Merge Join) ou voltar a utilizar um Hash Join menos eficaz. As duas opções possuem um custo estimado de execução superior ao plano existente (a versão com a operação Classificar teria desempenho fraco); então, o otimizador de consultas não as utilizará, a menos que seja forçado a fazê-lo. Então, nesse caso, o único índice que terá melhor desempenho do que o Clustered Index Scan é um índice não-agrupado em SalesOrderID, CustomerID. Mas note que as colunas precisam estar exatamente nesta ordem:
CREATE INDEX IDX_OrderHeader_SalesOrderID_CustomerID
ON Sales.SalesOrderHeader (SalesOrderID, CustomerID)
Se você criar este índice, o plano de execução conterá o Exame de índice e não o operador Clustered Index Scan (Exame de Índice Agrupado). Essa é uma diferença significativa. Nesse caso, o índice não-agrupado contendo apenas duas colunas é bem menor do que a tabela inteira no formato de um índice agrupado. Então, ele exigirá menos E/S para ler os dados necessários.
Este exemplo também mostra como a ordem das colunas no índice pode ter um impacto significativo sobre sua utilidade para o otimizador de consultas. Lembre-se disso ao criar índices com múltiplas colunas

O índice que criei em SalesOrderDetail é um exemplo do chamado "índice abrangente". Ele é um índice não-agrupado que contém todas as colunas necessárias para concluir a consulta, dispensando o exame da tabela inteira através do operador Table Scan ou do Clustered Index Scan. O índice é, em essência, uma cópia menor da tabela, contendo um subconjunto de colunas da tabela. Apenas as colunas necessárias para responder a(s) consulta(s) são incluídas no índice, ou seja, o índice contém apenas o necessário para "abranger" a consulta.
A criação de índices abrangentes para as consultas executadas com maior freqüência é uma das técnicas mais fáceis e comuns utilizadas no ajuste de consultas. Ela funciona muito bem em situações em que a tabela contém várias colunas, mas apenas algumas delas são freqüentemente referenciadas por consultas. Ao criar um ou mais índices abrangentes, você pode melhorar muito o desempenho das consultas afetadas, pois elas estarão acessando um volume de dados bem menor e, assim, incorrendo em menor E/S. Contudo, há um custo oculto de manutenção de índices adicionais durante as operações de modificação de dados (INSERT, UPDATE e DELETE). De acordo com o ambiente e a relação entre as consultas SELECT e as modificações de dados, analise com cuidado se essa sobrecarga adicional de manutenção de índice é compensada por melhorias no desempenho da consulta.
Não tenha medo de criar índices com múltiplas colunas, ou ficará restrito a índices de uma única coluna. Os índices de múltiplas colunas tendem a ser bem mais úteis do que os de uma única coluna. e a preferência do otimizador de consultas para abranger a consulta. A maioria dos índices abrangentes são índices de múltiplas colunas.
No caso da minha consulta de amostra, ainda há necessidade de aperfeiçoamentos, e essa consulta poderá ser mais otimizada se um índice abrangente for inserido na tabela SalesOrderHeader. Isso elimina o Clustered Index Scan (Exame de Índice Agrupado) para dar lugar a um Exame de índice não-agrupado. Deixarei isso como um exercício para você. Tente descobrir a definição de índice, ou seja, que colunas ele deve conter para se tornar um índice abrangente desta consulta e se a ordem das colunas na definição de índice faria diferença no desempenho. Consulte a barra lateral "Exercício de consulta de pedidos de clientes" para obter a solução.

Modos de exibição indexados
Se o desempenho de minha consulta de exemplo é muito importante, posso avançar um pouco e criar um modo de exibição indexado que armazena fisicamente os resultados materializados da consulta. Há alguns pré-requisitos e limitações em modos de exibição indexados, mas se você conseguir utilizar um deles, poderá melhorar muito o desempenho. Lembre-se de que o custo de manutenção dos modos de exibição indexados é maior do que em índices padrão. Por isso, convém utilizá-los com cautela. Nesse caso, esta é a aparência da definição de índice:
CREATE VIEW vTotalCustomerOrders
WITH SCHEMABINDING
AS
SELECT oh.CustomerID, SUM(LineTotal) AS OrdersTotalAmt, COUNT_BIG(*) AS TotalOrderLines
FROM Sales.SalesOrderDetail od
JOIN Sales.SalesOrderHeader oh
ON od.SalesOrderID=oh.SalesOrderID
GROUP BY oh.CustomerID
Observe a opção WITH SCHEMABINDING, um pré-requisito para criar um índice neste modo de exibição, e a função COUNT_BIG(*), necessária quando nossa definição de índice contém uma função agregada (neste exemplo, SUM). Após criar este modo de exibição, posso criar um índice nele, como:
CREATE UNIQUE CLUSTERED INDEX CIX_vTotalCustomerOrders_CustomerID
ON vTotalCustomerOrders(CustomerID)
Quando crio este índice, o resultado da consulta incluído na definição do modo de exibição é materializado e fisicamente armazenado em disco no índice. Observe que todas as operações de modificação de dados nas tabelas-base atualizam automaticamente os valores no modo de exibição, de acordo com sua definição.
Se eu executar a consulta novamente, o resultado dependerá da edição do SQL Server em execução. Em edições do Enterprise ou Developer, o otimizador de consultas coincide automaticamente essa consulta com a definição do modo de exibição indexado, e utiliza o modo de exibição indexado em vez de consultar as tabelas-base envolvidas. A Figura 6 mostra um plano de execução gerado neste caso. Ele consiste em apenas uma operação, um Clustered Index Scan (Exame de índice agrupado) que criei no modo de exibição. O custo estimado da execução é apenas de 0,09023 e ela faz apenas 92 leituras lógicas.
Figura 6 Plano de execução ao utilizar o modo de exibição indexado
Figura 6 Plano de execução ao utilizar o modo de exibição indexado
É possível criar e utilizar este modo de exibição indexado em outras edições do SQL Server. Mas, para alcançar o mesmo efeito, você precisa mudar a consulta para referenciar diretamente o modo de exibição usando a dica NOEXPAND, desta forma:
SELECT CustomerID, OrdersTotalAmt
FROM vTotalCustomerOrders WITH (NOEXPAND)
Como pode ver, modos de exibição indexados podem ser um recurso poderoso quando utilizados de forma adequada. Eles são mais úteis para otimizar consultas que fazem agregações em grandes volumes de dados. Quando são utilizados na edição Enterprise, eles podem beneficiar várias consultas, sem exigir mudanças no seu código.

Identificação de consultas a serem ajustadas
Como posso identificar as consultas que precisam ser ajustadas? Busco as consultas executadas com maior freqüência. Talvez o custo de uma única execução não seja muito alto, mas o custo agregado da execução pode ser bem maior do que o de uma grande consulta que raramente é executada. Isso não significa que você não deva ajustar consultas grandes. Mas acredito que é melhor se concentrar primeiro nas consultas executadas com maior freqüência. Mas como identificá-las?
Infelizmente, o método mais confiável é um pouco complexo e envolve a execução de um rastreamento de todas as consultas executadas no seu servidor e, depois, o seu agrupamento por assinaturas. (Ou seja, o texto da consulta com os valores de parâmetro reais substituídos por espaços reservados para identificar o mesmo tipo de consulta, mesmo quando ela é executada com valores de parâmetro diferentes.) Esse processo é complexo, pois é difícil gerar assinaturas de consulta. Itzik Ben-Gan descreve uma solução utilizando funções CLR definidas pelo usuário e expressões comuns no seu livro Inside Microsoft SQL Server 2005: T-SQL Querying.
Há outro método mais simples, embora um pouco menos confiável. Você pode se basear em estatísticas mantidas para todas as consultas no cache do plano de execução e consultá-las através de modos de exibição de gerenciamento dinâmico. A Figura 7 contém uma consulta de amostra que exibe o texto e o plano de execução das 20 consultas no seu cache, com o maior número acumulado de leituras lógicas. Essa consulta é muito útil para identificar rapidamente as consultas que estão gerando o maior número de leituras lógicas, mas ela tem limitações. Ou seja, ela só mostrará as consultas com planos em cache no momento de execução da consulta. Você não terá acesso ao que estiver sem cache.
Figure 7 Identificação das 20 consultas mais caras em termos de E/S de leitura (Close Figure 7)
SELECT TOP 20 SUBSTRING(qt.text, (qs.statement_start_offset/2)+1,
        ((CASE qs.statement_end_offset
          WHEN -1 THEN DATALENGTH(qt.text)
         ELSE qs.statement_end_offset
         END - qs.statement_start_offset)/2)+1),
qs.execution_count,
qs.total_logical_reads, qs.last_logical_reads,
qs.min_logical_reads, qs.max_logical_reads,
qs.total_elapsed_time, qs.last_elapsed_time,
qs.min_elapsed_time, qs.max_elapsed_time,
qs.last_execution_time,
qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
WHERE qt.encrypted=0
ORDER BY qs.total_logical_reads DESC
Após identificar as consultas com desempenho insatisfatório, observe seus planos de consulta e busque formas de melhorar seu desempenho, utilizando algumas das técnicas de indexação descritas anteriormente neste artigo. Se for bem-sucedido, você notará que investiu bem seu tempo.
Bom ajuste!

Maciej Pilecki é um Mentor Associado da Solid Quality Mentors, organização global especializada em treinamento, aconselhamento profissional e consultoria. Ele é um MCT (Microsoft Certified Trainer) e um MVP (Most Valuable Professional) do SQL Server, ministra cursos e conferências sobre vários aspectos do SQL Server e do desenvolvimento de aplicativo.


 Do editor: Mais efici&#234;ncia para voc&#234;
Do editor
Mais eficiência para você

A edição do mês passado deu início ao que eu espero que seja um diálogo permanente a respeito da Computação Verde. A verdade é que esse assunto ainda não está bem definido (O que é Verde? Se o meu carro faz cerca de 12 quilômetros por litro, e não 10, isso é Verde? Eu sequer tenho carro, imagine você. Eu moro em Nova York. Aqui, a gente anda).
Também parece que todas as empresas que valorizam seu trabalho estão tentando colocar marcas Verde próprias em seus produtos ou serviços. É claro que existe um bom motivo para isso, e essa é a razão pela qual o assunto estampou a nossa capa no mês passado – o potencial é incrível.
Todos nós sabemos que isso está tão ligado à geração de receita quanto à ajuda ao meio-ambiente. O fato é que ser ecologicamente correto se tornou um argumento de venda que produzirá resultados reais. ("Isso é economia, burro!") Se uma montadora consegue vender mais carros tornando-os mais eficientes, ótimo. Afinal, a esperança é de que tenhamos uma economia saudável estabelecida a partir de um meio-ambiente sustentável e com saúde.
E qual é o impacto disso sobre o profissional de TI? O Dr. Jonathan Koomey, cientista da equipe do Lawrence Berkeley National Laboratory e professor consultor da Universidade de Stanford, divulgou recentemente um estudo estimando o consumo total de energia dos servidores nos EUA e em todo o mundo. Em 2005, os data centers (servidores com infra-estrutura de suporte própria como, por exemplo, sistemas de refrigeração) foram responsáveis por 1,2% do consumo total de energia nos EUA – essa é toda a energia produzida por cinco termoelétricas com capacidade para mil megawatts (MW), a um custo de US$ 2,7 bilhões. Em todo o mundo, o custo atinge US$ 7,2 bilhões (toda a energia produzida por 14 termoelétricas com capacidade para mil MW). Há muito dinheiro – e energia – a ser economizado, e grande parte desse trabalho pode começar dentro do data center.
Como você planeja a capacidade do data center? De que forma a capacidade pode ser ajustada de maneira a acomodar a demanda sem que seja necessário mantê-lo 100 por cento em execução o tempo todo? (Dica: virtualização.) Nós monitoramos os servidores em relação à conectividade de rede, ao uso da memória etc., mas quem presta atenção no consumo de energia? Os servidores mais antigos estão consumindo muito mais energia do que os computadores novos? O custo excedido é maior que o custo de substituição de um computador?
Nos próximos meses, um dos nossos especialistas permanentes, Dave Ohara (autor do artigo publicado no mês passado, que agora está online em technetmagazine.com), mostrará a você o trabalho em andamento aqui na Microsoft com a construção dos nossos próprios data centers Verdes em Quincy, WA, e em San Antonio, TX, e como algumas dessas perguntas estão sendo respondidas. Também gostaríamos de saber como você está lidando com essas questões (ou caso não esteja optando pela implementação, nos diga o porquê.) Envie um email para tnmag@microsoft.com ou visite o nosso blog em blogs.technet.com/tnmag. —Joshua Hoffman

Meus agradecimentos aos seguintes especialistas técnicos da Microsoft: Tim Carroll, Omesh Desai, Steve Jenness, Sam Kroonenburg, Mutlu Kurtoglu, KC Lemson, Tim Mintner, Jim Truher, Buck Woody e Sudarshan Yadav.


 Caixa de ferramentas: Novos produtos para profissionais de TI
Caixa de ferramentas
Novos produtos para profissionais de TI
Greg Steen

Captura de tela de vídeo
My Screen Recorder Pro
deskshare.com/msrpro.aspx
Digamos que você tenha uma reunião daqui a 20 minutos e ainda precise organizar uma apresentação sobre a nova configuração do sistema. Ou talvez você consulte o mesmo tutorial de aplicativo quase todo dia com diferentes usuários. Se isso parece familiar, aqui vai uma dica: Verifique o My Screen Recorder Pro da DeskShare.
Como o próprio nome indica, este aplicativo permite que você registre a atividade da sua área de trabalho em vídeo, oferecendo uma ótima forma de criar uma apresentação improvisada ou um tutorial reutilizável para seus clientes. O My Screen Recorder Pro também suporta gravações em áudio; então, você pode incluir narração. (Dica: crie um script ou esboço antes de começar a gravação.)
A criação de um novo vídeo é simples. Selecione a região a ser gravada – toda a área de trabalho, uma área personalizada da área de trabalho, uma parte fixa da área de trabalho ou determinada janela do aplicativo. Depois, clique no botão Record (Gravar).
O aplicativo pode gravar em AVI, Windows Media® Video (WMV) ou Flash. Então, você poderá distribuir seus resultados com certa facilidade e até mesmo incorporar seus vídeos em páginas da Web ou estendê-los à utilização mais ampla pelo público. Você também pode criar um executável do seu vídeo para reproduzi-lo localmente na maioria dos PCs Windows®. O vídeo é incorporado dentro do executável, simplificando a distribuição e tornando a reprodução extremamente intuitiva para o usuário final.
Se seu tutorial ou apresentação se presta a múltiplos segmentos, você pode condensar várias tomadas em um único vídeo. Ou, caso precise editar o vídeo, você poderá dividir ou cortar a gravação para atender às suas necessidades.
Embora a configuração padrão costume ser utilizável, o aplicativo permite ajustar a taxa de quadros por segundo, a qualidade do áudio e as definições de compactação para melhor se adequar ao seu ambiente. Isso é útil para lidar com eventuais restrições de tamanho ou largura de banda. Você também pode criar uma gravação utilizando um modo simples de tempo decorrido, que, na verdade, permite compactar partes de longa duração da sua gravação (por exemplo, uma barra de progresso lenta). Outro ótimo recurso é a opção de alterar o cursor do mouse para a gravação e adicionar efeitos de ponteiro do mouse para chamar a atenção para as ações que ocorrem durante a sessão de gravação. Por exemplo, você pode ampliar o ponteiro ou definir que anéis apareçam em torno dele sempre que você clicar no botão do mouse. Além disso, você pode adicionar um texto explicativo e carimbo de data/hora à gravação para fins de arquivamento.
Para pessoas sorrateiras, paranóicas ou supercuidadosas, o My Screen Recorder Pro permite programar gravações, e o programa pode ser executado da linha de comando, oferecendo a opção de monitorar discretamente as atividades em uma estação de trabalho. Finalmente, o aplicativo possui recursos internos para edição de vídeos em um site FTP. Quando associada ao programador, esta opção pode ser útil para fins de auditoria.

Preço: US$ 99 (para venda direta) por licença de usuário.
Crie uma apresentação gravando o que ocorre na sua área de trabalho
Crie uma apresentação gravando o que ocorre na sua área de trabalho

Desfragmentação de discos
PerfectDisk 8
raxco.com/products/PerfectDisk2k
A desfragmentação do disco rígido é essencial para qualquer sistema Windows. Provavelmente você é como a maioria das pessoas e, portanto, está sempre adicionando e removendo aplicativos, recursos e atualizações de software. Há diversos utilitários para desfragmentação de discos. Na verdade, apresentei um deles no mês passado. Mas a desfragmentação é algo essencial e vale a pena falar sobre o PerfectDisk 8 da Raxco Software. Embora todas as versões do Windows incluam uma ferramenta de desfragmentação, às vezes você precisa de um utilitário que ofereça um controle mais preciso sobre a operação de desfragmentação. Nesse caso, vale a pena verificar o PerfectDisk.
Como qualquer outra ferramenta de desfragmentação do Windows, o PerfectDisk 8 pode desfragmentar unidades FAT16, FAT32 e NTFS, e ele também permite desfragmentar unidades RAID. Disponível nas versões de área de trabalho e servidor, o PerfectDisk 8 é certificado para o Windows Vista® e suporta outras versões do Windows, incluindo o Windows Server® 2003 e o Windows 2000. Há até uma versão para o Exchange.
A empresa fala sobre sua tecnologia SMARTPlacement, que tenta organizar a estrutura do arquivo em disco para aumentar a velocidade de acesso. Por exemplo, em sistemas Windows XP, a tecnologia SMARTPlacement se responsabiliza pelo gerenciamento do arquivo de inicialização e do arquivo layout.ini, ordenando-os de uma forma que leve a reduzir o tempo de busca em disco na inicialização do sistema. Além de desfragmentar uma unidade inteira, você tem a opção de desfragmentar um único arquivo, o que é útil após o download de um arquivo ISO grande, por exemplo.
Para lidar com esses arquivos de sistema resistentes que, em geral, você não consegue manipular enquanto o OS está em execução, o aplicativo utiliza um modo offline que pode ser executado na próxima inicialização do sistema startup ou, sob as condições adequadas, o aplicativo pode tentar desmontar o disco para realizar a desfragmentação. Outro recurso interessante é o modo de desfragmentação da proteção de tela do PerfectDisk, que permite iniciar automaticamente a desfragmentação quando a proteção de tela é executada.
O PerfectDisk também inclui uma versão de linha de comando que permite que você programe facilmente a desfragmentação através do programador de tarefas da sua preferência, e permite a execução remota através de qualquer agente de gerenciamento de sistema em execução no sistema. Para implantações maiores, faça o download do PerfectDisk Command Center gratuito, que permite implantar, atualizar, programar e configurar, de forma remota, os aplicativos da estação de trabalho na empresa inteira.

Preço: O preço inicial da licença do PerfectDisk 8 Professional (para a área de trabalho) é US$ 39,99 para um único usuário. O preço inicial do PerfectDisk 8 Server é US$ 239,99 para uma única licença.
O PerfectDisk oferece várias opções de configuração.
O PerfectDisk oferece várias opções de configuração.

Resenha de livro
Network Warrior
oreilly.com
Se sua loja está executando a engrenagem Cisco, talvez você queira adquirir um exemplar do livro Network Warrior, de Gary Donahue (O'Reilly, 2007). Este livro pode ser um recurso valioso para muitos leitores, caso eles sejam novatos no campo de rede, tenham recebido recentemente a certificação CCNA ou sejam um administrador de sistemas realizado que deseja renovar suas habilidades de rede.
O que chama minha atenção neste livro é que ele se baseia na aplicação real da tecnologia de rede e que ele fornece uma referência rápida para muitas das tarefas comuns que você encontra em atividades rotineiras como um profissional de rede. O livro parte do nível básico, definindo com exatidão os componentes fundamentais de uma rede. E ele avança, apresentando uma visão geral de hubs, chaves, VLANs, troncos e o VLAN Trunk Protocol (VTP), bem como árvores de distribuição com o Spanning Tree Protocol (STP) e a tecnologia EtherChannel do Cisco System.
Através do Network Warrior, você obtém exemplos básicos utilizando os comandos Internetwork Operating System (IOS) e CatOS command-line interface (CLI) do Cisco, além de explicações dos métodos e tecnologias. Gosto do histórico apresentado pelo livro sobre as metodologias atuais, oferecendo uma boa perspectiva (como o motivo da existência de um CatOS, e não apenas do IOS, por exemplo).
O livro inclui uma discussão sobre roteadores e roteamento em geral, apresentando os fundamentos do roteamento, desde a métrica até as distâncias administrativas dos diferentes protocolos de roteamento. Você também obtém visões gerais de protocolos, como Open Shortest Path First (OSPF), Border Gateway Protocol (BGP) e Routing Information Protocol (RIP).
Na seção Hot Standby Router Protocol (HSRP) do Cisco, o autor investiga a disponibilidade e oferece algumas configurações básicas para proteção contra inatividade na sua infra-estrutura de rede. Em seguida, você encontra uma revisão dos recursos e da funcionalidade de algumas chaves de múltiplas camadas do Cisco, incluindo o Cisco 6500 e o Catalyst 3750, além de uma discussão sobre algumas das configurações básicas que você pode encontrar.
Considero as informações sobre o mundo das telecomunicações úteis. O livro ensina um pouco do jargão para que você não precise ficar inventando desculpas da próxima vez que tentarem enganá-lo. Você aprenderá bastante sobre a Channel Service Unit/Data Service Unit (CSU/DSU), configurando conexões DS3 e relés de quadros com vários nós que podem ser realmente convertidos com as tecnologias de telecomunicações.
Há uma seção dedicada à segurança e firewalls, que mostra como projetar e configurar listas de controle de acesso (ACLs), e aborda a autenticação, DMZs e opções de configuração de firewall PIX específicas. Gosto do trecho sobre teoria firewall que destaca mantras de rede que devem ser praticados, como "negue tudo; permita o que você precisa" e "segurança é uma questão de equilíbrio entre conveniência e paranóia".
A última seção do Network Warrior fornece uma visão sobre projeto de rede, abordando os fundamentos de projetos de infra-estrutura de rede comuns, tais como uma configuração de comércio eletrônico em três camadas e uma rede principal em colapso sem uma camada de distribuição, destacando a importância da documentação e de convenções de nomenclatura.

Preço: US$ 44,99 em catálogo.

Gerenciamento de bloqueios de arquivos
WhoLockMe
dr-hoiby.com/WhoLockMe
O ideal é que todos os aplicativos fechem os arquivos corretamente. Mas, infelizmente, isso não ocorre. Violações de compartilhamento podem ser um incômodo e talvez seja ainda mais difícil localizar o processo que está bloqueando um arquivo no momento. Não sei se você concorda comigo, mas é muito desagradável ter que fechar cada um dos aplicativos para poder ter controle sobre um único arquivo. Felizmente, há uma extensão gratuita e simples do Windows Explorer chamada WhoLockMe que pode ser útil.
Este aplicativo está disponível no Windows NT®, Windows 2000, Windows Server 2003 e Windows XP. Ele permite que você descubra o processo que está bloqueando o arquivo de seu interesse no momento. Basta clicar com o botão direito do mouse e selecionar uma opção dentro do menu de contexto do Windows Explorer.
O WhoLockMe mostra o nome do processo que está bloqueando o arquivo, o identificador do processo (PID), o caminho para o arquivo aberto, o domínio e o usuário do contexto de execução do processo, e o caminho completo do invasor. Se preferir, você poderá se livrar do processo diretamente na IU.
Infelizmente, o WhoLockMe não foi atualizado por um tempo e não funcionará no Windows Vista. Contudo, se você estiver executando uma versão anterior do Windows, este aplicativo será uma ferramenta rápida e eficaz para descobrir quem ou o que bloqueou o arquivo que você precisa mover, excluir ou editar.

Preço: gratuito

Ferramentas DNS
DNSStuff.com
www.dnsstuff.com
Se você lida com aplicativos da Internet ou redes, certamente depende do DNS para ajudá-lo a gerenciá-los, manter sua execução normal e permitir que pessoas de fora saibam onde você e seus aplicativos residem. O DNSstuff.com é um conjunto de ferramentas que considero útil quando há um problema de DNS. Esse conjunto de ferramentas baseadas na Web pode ser um ótimo recurso para solução de problemas e verificação de suas configurações de infra-estrutura.
O site apresenta ferramentas para resolver questões de domínio, IP, nome de host, email, site e problemas gerais de rede. Ele apresenta mais de 45 ferramentas de consulta diferentes que podem ajudá-lo em qualquer tarefa, desde validar sua configuração de servidor de email até verificar a velocidade da sua hospedagem DNS. É provável que sua infra-estrutura já contenha equivalentes da maioria dessas ferramentas, mas a verificação externa pode oferecer informações-chave para solução de problemas. E você não precisará mais recorrer ao seu colega de empresa para obter uma pesquisa reversa de DNS.
Uma das ferramentas mais poderosas e abrangentes do site é o DNSreport. Basta informar um nome de domínio e clicar no botão para recuperar uma gama de informações sobre sua configuração. Cada item da linha de teste exibe um status com codificação de cores, ideal para fazer uma varredura rápida dos resultados de teste em busca de problemas em potencial. O relatório verifica as zonas principais do domínio, mostrando detalhes como registros name server (NS) e se eles enviam ou não o endereço IP e o nome do host. O relatório também verifica se há possíveis falhas na segurança, se os servidores DNS não são servidores abertos, se todos possuem registros NS idênticos e se eles não vazam registros NS "furtivos" em pedidos não-NS.
Você também obtém informações sobre a disponibilidade de configuração como testes DNSreport para vários name servers, ligações IP públicas e name servers ausentes e, ao mesmo tempo, verifica se há pontos de falha. Além disso, o DNSreport verifica detalhes de Start Of Authority (SOA), retorna o número de série de SOA, além dos valores de atualização, expiração, nova tentativa e time-to-live (TTL) mínimo, e também faz a verificação dos seus registros MNAME e RNAME.
As verificações de registro Mail Exchange (MX) do relatório validam entradas de DNS reverso e garantem a inexistência de registros duplicados e a existência de nomes de host válidos nos seus registros. Além disso, a ferramenta tenta conectar seu servidor de email e verifica itens tais como: se o nome de host do servidor de email está na saudação, se ele aceita mensagens abuse@yourdomain (conforme especificado em vários RFCs) e se o servidor SMTP está configurado no momento como uma retransmissão aberta (e, então, um ímã para remetentes de spam do mundo inteiro). Finalmente, o DNSreport retorna seu registro www A, verifica se todos os IPs são públicos e determina se sua configuração CNAME causará uma pesquisa de DNS adicional.
Se o DNSreport não for suficiente, o site também permitirá que você utilize uma ferramenta de pesquisa para verificar se um servidor de email está listado em um conjunto de bancos de dados de spam conhecidos e outra para localizar contatos abusivos para um domínio. Você também pode fazer pesquisas IP Whois, rastrear rotas e pings, bem como pesquisas gerais de DNS e pesquisas DNS em cache em ISPs principais. Você pode até mesmo fazer pesquisas NETGEO IP, verificações de endereços MAC e completar despejos de arquivos de zona caso você tenha a assinatura. De uma forma geral, este é um conjunto de ferramentas valioso.

Preço: US$ 3 por mês para a associação de um único usuário (total acesso e pesquisas ilimitadas).
O DNSstuff.com oferece um conjunto de ferramentas de monitoramento úteis
O DNSstuff.com oferece um conjunto de ferramentas de monitoramento úteis

Greg Steen é profissional de tecnologia e entusiasta. Ele está sempre buscando novas ferramentas para facilitar as operações, o controle de qualidade e o desenvolvimento para os profissionais de TI.


 Perguntas e respostas do Exchange: Protocolos seguros de email, spam misterioso e mais
Perguntas e respostas do Exchange
Protocolos seguros de email, spam misterioso e mais
Nino Bilic and Scott Landry
Parte desta coluna se baseia em uma versão de pré-lançamento do Windows Server 2008. Todos os detalhes aqui contidos estão sujeitos a alterações.

P Desejo usar o SMTP seguro — como faço para o Exchange Server escutar o SMTP na porta 465?
R Desculpe, mas você não pode fazer isso. Sim, você pode fazer com que qualquer servidor virtual SMTP ou conector de recebimento escutem a porta 465, mas dessa forma o seu objetivo não será cumprido, que é o SMTP seguro (SMTPS).
Por quê? Bem, vamos voltar um pouco e ver o motivo. Existem dois tipos de SSL: explícito e implícito. Inicialmente, na maioria das vezes, o SSL era implícito, o que significa a utilização de uma porta dedicada a ele. Por exemplo, o HTTP é usado na porta 80 por padrão, mas o HTTPS (HTTP com SSL) é usado na porta 443. Há muitos anos, a comunidade da Internet decidiu que não seria necessário haver uma porta dedicada para o SSL. Dessa forma, nasceu o SSL explícito.
O Netscape já tinha escolhido a porta 465 para o SMTPS, mas o Exchange Server não tinha uma funcionalidade SSL em SMTP. No entanto, a equipe do Exchange descobriu a vantagem do SSL explícito — ele poderia ser usado tanto por clientes como por servidores — e optou por oferecer suporte ao SSL explícito para SMTP.
No caso do SMTP, o SSL explícito utiliza o comando STARTTLS ESMTP para sinalizar que o socket existente está prestes a ser protegido. A maioria dos outros fornecedores de servidores e clientes SMTP também implementou o comando STARTTLS e, portanto, nunca houve muita necessidade de suporte à porta 465 que, de qualquer forma, não era um padrão da Internet.
Até hoje, nenhuma versão do Exchange Server ofereceu suporte ao SSL implícito para SMTP. Dizer ao conector de recebimento do Exchange ou servidor virtual SMTP para escutar na porta 465 não altera esse fato. Portanto, você precisa usar um cliente que suporte STARTTLS na porta 25. Se você não puder usar a porta 25, a próxima opção lógica será a 587, que é a porta padrão para envios de cliente SMTP. Não existem muitos clientes modernos que não ofereçam suporte ao STARTTLS na porta 25 e, portanto, o suporte ao SSL implícito não tem sido necessário.
A propósito, os protocolos POP3 e IMAP4 do Exchange sempre ofereceram suporte ao SSL implícito. Mas, no Exchange Server 2007, também foi adicionado um suporte ao SSL explícito para eles. Entretanto, como poucos clientes já oferecem suporte a esse novo padrão, o SSL implícito ainda existirá até o futuro próximo.

P Eu tenho muitos emails enfileirados em um determinado número de domínios — e nenhum de meus usuários enviou qualquer mensagem. O que está acontecendo e como posso impedir isso?
R Você não está sozinho. Qualquer um que tenha um servidor na Internet pode ter esse problema. Basicamente, existem duas causas possíveis. A primeira é que, de alguma forma, você pode estar aberto para retransmissão (consulte support.microsoft.com/kb/304897). Mas é claro que você nunca faria isso, não é? (Por padrão, as retransmissões abertas foram desabilitadas desde o Exchange Server 2000). Assim, é mais provável que você esteja vendo o que chamamos de spam de NDR (notificação de falha na entrega). No processo de envio de UCE (emails comerciais não solicitados), os remetentes de spam quase sempre mandam mensagens para endereços não existentes em seu domínio. O seu servidor tenta permitir que o remetente de spam saiba que os usuários não existem, mas é claro que ele falsificou o endereço de retorno. Ele pode estar falsificando um endereço inválido (e, nesse caso, o NDR existirá por alguns momentos até seu tempo expirar) ou pode estar tentando fazer com que seu servidor envie spam para outro domínio em seu nome, como um anexo do NDR gerado pelo servidor.
Você poderia desabilitar NDRs, mas se um usuário legítimo digitar um endereço errado por engano, o seu servidor nunca o informará que o email não foi enviado e mensagens críticas poderão se perder. Existe uma solução melhor.
Primeiro, verifique se você não está aberto para retransmissão (eu tinha que dizer isso). Em seguida, utilize algum tipo de filtragem anti-spam, como o IMF (filtro inteligente de mensagens) ou o filtro de conteúdo do Exchange Server 2007, assim como algumas RBLs (listas de bloqueios em tempo real). Isso pode ser feito na função Transporte de Borda ou na função Transporte de Hub, mas deve ser feito em todos os primeiros saltos, já que mais de 90 por cento do volume de email tende a ser spam e você não vai querer manter seus servidores ocupados com todo esse lixo eletrônico).
Por fim, habilite a filtragem de recipientes no primeiro Exchange Server que aceitar emails em seu ambiente. Isso permite que o seu servidor rejeite uma mensagem antes que ela chegue à sua rede. Erros de digitação de endereços legítimos ainda obterão o NDR, mas ele será gerado pelo servidor do remetente.

P Tenho um servidor executando o Exchange Server 2000 e outro executando o Exchange Server 2003, ambos enviando emails com êxito para a Internet. Então eu instalei o Exchange Server 2007 e agora as caixas de correio de ambos os servidores não conseguem enviar emails.
R Se você só teve um único Exchange Server no passado, talvez ainda não conheça muito bem o conceito de conectores. Os conectores do Exchange são objetos de configuração de roteamento lógico que dizem ao Exchange para onde direcionar os emails. Ao introduzir o Exchange Server em uma organização existente, será imprescindível que você tenha conectores de grupo de roteamento e um conector SMTP para poder rotear emails.
Você precisará de dois conectores de grupo de roteamento, um saindo do grupo de roteamento do Exchange Server 2007 para o grupo de roteamento do Exchange Server 2003 e outro fazendo o caminho inverso. Isso pode ser configurado como parte do processo de instalação, mas se você não o acompanhou ou não tem certeza sobre esse assunto, utilize o Shell de Gerenciamento do Exchange e corrija o problema. Se não fizer isso, você não será capaz de enviar emails entre os seus servidores. As mensagens terminarão em filas de mensagens inacessíveis.
Para rotear email da Internet, você só precisa de um conector SMTP, também conhecido como conector de envio no Exchange Server 2007. É preciso ter um no Exchange Server 2000 e outro no Exchange Server 2003, mas você pode viver sem ele. O espaço de endereço deve ser SMTP:* para todos os domínios e você pode especificar se será usado o host inteligente ou o DNS para a entrega dos emails. Você escolhe se deseja que o Exchange Server 2007 ou o servidor antigo manipule email da Internet de saída ou pode criar um conector SMTP em ambos os grupos de roteamento se quiser que cada servidor manipule suas próprias mensagens. Você também pode criar um desses como parte do processo Edgesync se tiver instalado uma função de servidor Transporte de Borda.
Se, anteriormente, você colocou um host inteligente no servidor virtual SMTP, agora será um bom momento para removê-lo. Ele só deve existir no conector SMTP e nunca no servidor virtual, já que isso prejudicaria o conector de grupo de roteamento.
Saiba que o email de entrada é controlado pelo seu registro MX ou pelo IP para o qual o firewall está encaminhando. Não há muito que configurar no lado do Exchange, mas este documento deverá ajudá-lo caso você ainda tenha problemas: msexchangeteam.com/archive/2006/11/17/431555.aspx.

P Por que obtenho vários relatórios de diário para a mesma mensagem no Exchange Server 2007?
R O agente de registro no diário de transporte do Exchange Server 2007 registrará mensagens após a categorização. O categorizador possui diversos motivos para bifurcar uma mensagem (ou seja, copiar o corpo da mensagem e colocar os destinatários do envelope diferentes nas cópias diferentes). Por exemplo: como o registro no diário agora é capaz de dizer a você qual era a associação de um grupo de distribuição no momento em que a mensagem foi enviada, um caso em que você poderia obter vários relatórios seria um grupo de distribuição aninhado.
A riqueza adicional da criação de relatórios significa que talvez você obtenha algumas cópias da mesma mensagem, cada uma com um relatório exclusivo. Não há uma forma garantida de saber se todos os relatórios sobre uma mensagem chegaram, mas se você estiver arquivando, vai querer trabalhar em conjunto com o seu fornecedor de arquivamento para garantir que ele esteja ciente das alterações.

P No Exchange Server 2007, aonde foi parar o recurso de encaminhamento de mensagens não resolvidas para o host? O que devo fazer agora?
R O gato comeu.
Na verdade, esse recurso específico nunca funcionou muito bem em situações em que você tinha mais de um Exchange Server. No entanto, o Exchange já tinha outra forma de executar a mesma tarefa e esse método era muito mais poderoso. Especificamente, você pode compartilhar domínios SMTP individuais com outros sistemas. Portanto, o recurso "encaminhar não resolvidos" foi retirado e o conceito do domínio compartilhado foi continuado e simplificado. No Exchange Server 2007, basta ir para Organização | Transporte de Hub | Domínios Aceitos e alterar o tipo de domínio de autoritativo para retransmissão interna. Na verdade, é um pouco mais complexo do que isso em alguns ambientes, e estamos trabalhando para atualizar parte da documentação. Mas isto deve ajudar nesse meio tempo.

P Estou tentando preparar meu domínio raiz para a instalação do Exchange Server 2007. O servidor em que estou tentando executar o programa de instalação do Exchange Server 2007 possui o ESM (Gerenciador do Sistema do Exchange) e não está me deixando instalar. Qual é o problema?
R Para simplificar, a execução de qualquer parte da instalação do Exchange Server 2007 em uma máquina com qualquer componente do Exchange Server 2000 ou 2003 não é suportada. Como o ESM do Exchange Server 2003 já existe no servidor, ele será visto pelo programa de instalação do Exchange Server 2007 e uma verificação prévia com falha lhe dirá "A previous version of Exchange Server is already installed on this computer. Run Exchange Server 2007 Setup from a different computer or remove the previous version of Exchange Server". (Uma versão anterior do Exchange Server já está instalada neste computador. Execute o programa de instalação do Exchange Server 2007 a partir de um computador diferente ou remova a versão anterior).
Provavelmente, a forma mais fácil de contornar esse problema é simplesmente executar a instalação do Exchange Server 2007 de outro servidor no domínio raiz e preparar o seu domínio dessa maneira. Se isso não for possível, o componente do Exchange Server 2003 terá de ser desinstalado antes de você poder continuar a instalação do Exchange Server 2007.
Lembre-se de que você pode usar a versão de 32 bits do Exchange Server 2007 para preparar o domínio e, portanto, qualquer servidor de 32 bits no domínio raiz normalmente servirá. Para obter mais informações sobre este assunto, consulte technet.microsoft.com/library/bb232170.aspx.
A propósito, isso significa que você não pode instalar o ESM do Exchange Server 2003 e o Console de Gerenciamento do Exchange Server 2007 na mesma máquina, já que não há suporte para a coexistência das ferramentas de gerenciamento do Exchange Server 2003 e do Exchange Server 2007 na mesma máquina. O Exchange Server 2007 bloqueará a instalação caso você tente executá-la em uma máquina com qualquer componente do Exchange Server 2000 ou 2003.
Por fim, observe que você não deve tentar instalar as ferramentas de gerenciamento do Exchange Server 2007 primeiro e depois as ferramentas do Exchange Server 2003 na mesma máquina. Essa abordagem levará você a uma configuração ainda não testada e pode gerar resultados inesperados durante o gerenciamento de seus servidores. Se você precisa gerenciar ambas as versões de servidor em uma única máquina, pode usar a área de trabalho remota para se conectar a uma versão ou usar uma máquina virtual para hospedar uma versão diferente das ferramentas de gerenciamento em um ambiente isolado.

P Digam-me quando, finalmente, poderei executar as Ferramentas de Gerenciamento do Exchange Server 2007 na minha estação de trabalho com Windows Vista® ?
R O suporte oficial para as Ferramentas de Gerenciamento do Exchange Server 2007 no Windows Vista virá com o lançamento do Exchange Server 2007 SP1. Um pacote com as ferramentas e gerenciamento do Exchange Server 2007 SP1 estará disponível para download quando essa versão do Exchange for lançada.

P E quanto ao ESM do Exchange Server 2003 no Windows Vista ou no Windows Server 2008? Serei capaz de executá-lo também?
R Não, infelizmente isso não funcionará. As ferramentas de gerenciamento para qualquer versão do Exchange Server anterior ao Exchange Server 2007 SP1 não serão suportadas no Windows Vista nem no Windows Server 2008. Isso significa que mesmo depois do lançamento do Windows Server 2008, a instalação do ESM do Exchange Server 2003 não será mais suportada. O gerenciamento dos servidores Exchange Server 2003 terá de ser feito a partir do Windows Server 2003 ou de estações de trabalho com Windows XP; como alternativa, você poderá usar a Conexão de Área de Trabalho Remota em qualquer sistema operacional.

P Tenho vários servidores Exchange Server 2003 funcionando em meu domínio. Serei capaz de atualizar meus controladores de domínio para o Windows Server 2008?
R Sim, claro, a execução do Exchange Server 2003 SP2 no domínio com controladores Windows Server 2008 é suportada. Observe que o Exchange Server não pode usar controladores de domínio somente leitura Windows Server 2008 (RODCs) ou servidores de catálogo global somente leitura (ROGCs). A especificação manual (codificação) do Exchange Server para que ele utilize RODC/ROGC do Windows Server 2008 pode resultar em um comportamento inesperado.

Nino Bilic é gerente de programa de suporte para o Exchange Server e passa seu tempo livre descobrindo a beleza da comunicação entre servidores ao ler uma tonelada de rastreamentos do Netmon antes de ir dormir.
Scott Landry, engenheiro de escalonamento de suporte para Exchange Server, não vai a lugar algum sem a sua toalha, uma cópia do Guia e seu fiel telefone Windows Mobile.


 Utilit&#225;rio em destaque: Cmdlets SMS para Windows PowerShell
Utilitário em destaque
Cmdlets SMS para Windows PowerShell
Don Brown
Faça download do código deste artigo: Utility2007_11.exe (1211KB)

Não havia uma forma de gerenciar seus clientes Microsoft SMS (System Management Server) 2003 a partir da linha de comando. Felizmente, entre as ótimas tecnologias que surgiram nos últimos tempos para ajudar administradores a gerenciar complexidade, alterações e configuração, o Windows PowerShell chegou para resolver esse problema.
Para aproveitá-lo, escrevi um pequeno "utilitário", o SMS2003PowerShellSnapinSample (que pode ser encontrado no download de código que acompanha esta coluna, disponível em technetmagazine.com/code07.aspx). Na verdade, esse utilitário se resume em uma coleção de seis cmdlets organizados em um único snap-in do Windows PowerShellTM. Usando esses cmdlets, você pode configurar a diretiva local de cliente SMS a partir do Windows PowerShell para a máquina local ou para grupos de máquinas remotas.
Quanto mais eu usei a diretiva local de cliente SMS, mas isso fez sentido. E, como vantagem adicional, também compreendi melhor o funcionamento do SMS. Eu aprendi que, com a aplicação cuidadosa da diretiva local de cliente SMS, o cliente SMS poderia ser controlado de uma forma totalmente nova: nem todas as máquinas que fornecem relatórios ao mesmo site precisam ser configuradas da mesma forma. As idéias começaram a fluir — desde a definição de certas máquinas para que não fosse necessário haver permissão para o controle remoto da máquina, passando pela alteração da periodicidade em que o cliente verificaria a existência de uma nova diretiva, até a desativação de componentes específicos em vários momentos do dia — o céu é o limite quando você utiliza a diretiva local de cliente SMS. Vamos examiná-la mais de perto.

Sobre a diretiva local do SMS Advanced Client
Recursos de programação
  • Introdução ao Windows PowerShell Ótimas informações elementares para qualquer um que esteja pensando em começar a usar o Windows PowerShell
  • Fórum Technet sobre a personalização do SMS usando diretivas locais Aplicativo baseado em MOF sobre a diretiva local do SMS Advanced Client
  • Criando o seu primeiro cmdlet
  • Como criar um snap-in do Windows PowerShell
  • NAP (Proteção de Acesso à Rede) para Windows Server 2008
  • Guia do programador do Windows PowerShell Para aqueles que desejam mais informações sobre a criação de cmdlets, snap-ins, hosts e outra forma de ajuda à programação para Windows PowerShell
  • Guias passo a passo do Windows Server 2008 Beta 3

Todos os SMS 2003 Advanced Clients funcionais possuem uma diretiva de configuração, basicamente uma lista de definições que orienta seus vários componentes. Todas as definições de clientes, coleção de inventário e de distribuição de software (entre outras) estão incluídas nessas diretivas de configuração. As próprias diretivas são criadas no servidor do site e entregues ao Advanced Client por meio do SMS management point.
O corpo real de uma diretiva do SMS é similar a um arquivo MOF (Managed Object Format), já que contém um conjunto de instâncias que será compilado nos namespaces \\.\root\CCM WMI (Instrumentação de Gerenciamento do Windows®) no Advanced Client. Os vários outros agentes lerão essas definições, localizadas no namespace \\.\root\ccm\policy\machine\requestedconfig. Quando estiver aplicando a diretiva local via MOF, entretanto, você só poderá compilar um MOF em uma única máquina e ele terá de ser executado de forma local (ou ainda, quando você estiver conectado diretamente na máquina). Mas o WMI, por causa de sua natureza distribuída, pode ser acessado tanto local como remotamente, o que significa uma variedade maior de opções de auxílio para os administradores do SMS. Isso significa que você pode se conectar ao WMI em uma máquina remota tão facilmente como se conecta ao WMI em sua máquina local, dados os direitos administrativos adequados.
A diretiva de cliente SMS consiste na configuração de vários componentes de cliente, mas também pode incluir instruções para a execução de conteúdo de pacote de software. Assim como a Diretiva de Grupo do Active Directory®, a diretiva do SMS 2003 Advanced Client obtida de um SMS management point deve ser substituída pela diretiva local de cliente SMS. Não é possível substituir todas as partes de uma diretiva, mas algumas propriedades realmente interessantes podem ser substituídas. Isso oferece aos administradores do SMS um grau de controle maior sobre a configuração e sobre as operações do SMS Client, já que permite exceções à configuração padrão aplicada ao site SMS.
Veja o exemplo de um ambiente seguro e consolidado, onde os administradores do SMS gerenciam os servidores e as estações de trabalho como clientes de um único site primário SMS. Nesse ambiente imaginário, uma diretiva de segurança poderia declarar que a permissão do usuário deve ser solicitada antes que técnicos de suporte possam obter o controle remoto de sua máquina. Obviamente isso será um problema caso os técnicos queiram utilizar o controle remoto para se conectar aos servidores: tipicamente, nenhum usuário fica conectado nos servidores e, portanto, não há ninguém para conceder permissão ao controle remoto. Por meio da aplicação cuidadosa da diretiva local, no entanto, o requisito de permissão de usuário pode ser substituído em clientes específicos. Provavelmente, você pode imaginar dezenas de outras circunstâncias em que a diretiva local do SMS pode ser útil em conceder uma exceção à configuração de um agente de cliente SMS específico.

Por dentro do snap-in do Windows PowerShell
Depois que já estiver mais familiarizado com os aspectos básicos do Windows PowerShell, você poderá fazer adições ao código-fonte fornecido com esta coluna para expandir o que pode ser feito com a diretiva local de cliente SMS a partir da linha de comando. Existem atributos específicos que devem ser aplicados a uma classe antes de serem expostos ao Windows PowerShell. Você precisa decidir qual será a função do cmdlet e que ação deve ser executada. Isso é conhecido como emparelhamento "Verbo-Substantivo". Alguns verbos comuns vistos no Windows PowerShell são Add, Get e Set. A parte do substantivo descreve o objeto sobre o qual você deseja agir. Normalmente, os cmdlets possuem parâmetros declarados em uma classe Cmdlet como propriedades públicas de vários tipos. Por fim, a função ProcessRecord é o principal local onde você fará a maior parte do seu trabalho. A Figura 1 mostra um modelo genérico que você pode usar em seus próprios cmdlets.
Figure 1 Modelo de cmdlet (Close Figure 1)
[Cmdlet( "Verb", "Noun", SupportsShouldProcess = true )]
public class Verb_Noun : PSCmdlet
{
  [Parameter( ValueFromPipeline = true, ValueFromPipelineByPropertyName = true,
    HelpMessage = "Parameter" )]
  [ValidateNotNullOrEmpty]
  [Alias( "param" )]
  public string Parameter
  {
    get { return MyParameter; }
    set { MyParameter = value; }
  }
  private string MyParameter;

  protected override void ProcessRecord( )
  {
    //Do your stuff here!
  }
}
Depois de compilar seu snap-in, você o registrará no Windows PowerShell incluindo uma classe em seu projeto que possua o atributo RunInstaller definido, além de algumas propriedades específicas. Consulte o código-fonte que acompanha este artigo para obter informações mais específicas. Para registrar o seu snap-in, você precisará usar a ferramenta InstallUtil.exe incluída no Microsoft® .NET Framework. A Figura 2 mostra a sintaxe usada no registro do seu snap-in. Observe que, no Windows Vista®, esta é uma operação que requer a elevação de privilégios e, portanto, você terá de abrir o Windows PowerShell com a opção "Executar como administrador" ou usar os PowerToys de elevação de script para Windows Vista (que podem ser baixados de technetmagazine.com/issues/2007/06/UtilitySpotlight).
Figure 2 Instalando o snap-in a partir do Windows PowerShell (Close Figure 2)
PS> set-alias installutil $env:windir\Microsoft.NET\Framework\v2.0.50727\installutil
PS> installutil C:\MySMSTools\SMS2003PowerShellSnapinSample.dll
Microsoft (R) .NET Framework Installation utility Version 2.0.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.
Running a transacted installation.
...
The transacted install has completed.
A próxima etapa é descobrir se o seu snap-in é reconhecido pelo Windows PowerShell. Use o cmdlet Get-PSsnapin com o parâmetro Registered para que o Windows PowerShell resuma os snap-ins carregados no momento, seguidos por uma lista de snap-ins registrados e que estão para ser adicionados. O seu snap-in deve ser encontrado nesta lista:
PS> Get-PSsnapin -registered
Agora você pode adicionar o snap-in do Windows PowerShell ao shell usando o cmdlet Add-Pssnapin, como a seguir:
PS> add-pssnapin SMS2003PowerShellSnapinSample
Se a operação tiver êxito, você será capaz de executar os cmdlets em seu snap-in do Windows PowerShell.
Para ver todos os cmdlets disponibilizados por qualquer snap-in do Windows PowerShell, basta especificar o snap-in em particular com o cmdlet Get-Command, passando o nome do seu snap-in como o valor do parâmetro PSsnapin. O snap-in de exemplo que acompanha esta coluna exibe seis cmdlets, incluindo o modelo do cmdlet Verb-Noun, como mostra a Figura 3.
Figura 3 Exibindo os cmdlets em um snap-in
Figura 3 Exibindo os cmdlets em um snap-in
No código-fonte de exemplo, escrevi ajuda somente para o cmdlet Get-SMSServerConnection para demonstrar como ele é criado. Se quiser expandir a ajuda, depois você terá um exemplo em que poderá se basear, no arquivo XML. A Figura 4 mostra a saída da ajuda.
Figure 4 Saída do Get-Help de exemplo (Close Figure 4)
PS > get-help Get-SMSServerConnection

NAME
  Get-SMSServerConnection

SYNOPSIS
  This cmdlet establishes a connection to the specified SMS primary site server using your current credentials. An object of type "SMSProvider" is returned through the pipeline.

SYNTAX
  Get-SMSServerConnection [-SMSServerName] [<string>] [<CommonParameters>]

DETAILED DESCRIPTION
  This Cmdlet makes a connection to the specified SMS primary site server. An object of type "SMSProvider" is returned. The "SMSProvider" object is not serializable and is used only to forward on through the pipeline to other cmdlets.

RELATED LINKS
Agora que você já viu como instalar o snap-in do Windows PowerShell, como descobrir que comandos estão presentes nele e como obter ajuda em um cmdlet típico, vamos começar a usar os cmdlets. Para mostrar uma lista de todas as coleções em um servidor de site primário SMS, utilize o seguinte comando:
PS > Get-SMSServerConnection -server MYSMSSERVER | Get-Collections | Format-Table Name
Observe o pipeline. Ele é uma parte fundamental do funcionamento do Windows PowerShell e é uma ferramenta muito poderosa. No Windows PowerShell, é possível fazer quase tudo em somente uma linha. O cmdlet Get-SMSServerConnection estabelece uma conexão com o servidor SMS. Uma vez que o cmdlet Get-Collections possui um único parâmetro de entrada do tipo retornado por Get-SMSServerConnection, você pode simplesmente passar a saída de Get-SMSServerConnection para Get-Collections. É dessa forma que o pipeline funciona e é um bom exemplo de como você pode passar objetos complexos de um cmdlet para outro. Também é possível armazenar objetos em variáveis e, se você estiver fazendo isso em um script do Windows PowerShell, poderia se parecer com o código a seguir:
$SMS = Get-SMSServerConnection
   -server MYSMSSERVER
Get-Collections -SMSServerProvider $SMS
A saída pode ser um pouco difícil de ler sem alguma boa formatação da saída, já que Get-Collections retorna um objeto do tipo SMSCollections (que é, basicamente, uma matriz de objetos do tipo SMSCollection). Em resumo, não é uma exibição muito bonita, até que você filtre as coleções em que não está interessado em ver ou formate a exibição em uma tabela somente com as propriedades desejadas. Faça isso passando a saída do cmdlet Get-Collections pelo pipeline para o cmdlet Format-Table, que pode exibir somente as propriedades especificadas. Por exemplo, você pode acrescentar | Format-Table Name, Members.
Ah, mas existe uma forma melhor de mostrar todos os membros de uma determinada coleção e, neste exemplo, é Get-CollectionMembers. Esse cmdlet retorna uma matriz de cadeias de caracteres que representa o nome de cada membro da coleção. Como você já deve ter percebido, esse é um ótimo candidato para a passagem pelo pipeline para o próximo cmdlet.
Até este ponto, não houve uma diretiva local de SMS Advanced Client — somente conexões ao servidor de site primário SMS e a enumeração de coleções e de membros de coleção. Mais dois cmdlets foram incluídos neste snap-in do Windows PowerShell de exemplo, Enable-SoftwareDistribution e Disable-SoftwareDistribution, respectivamente. É aí que entra em cena a diretiva local de cliente SMS. Esses dois últimos cmdlets manipulam a diretiva local de cliente SMS para o componente do agente do cliente de distribuição de software do SMS Advanced Client. Como você poderia esperar por causa da parte verbal do cmdlet, Disable substitui a diretiva local de cliente que especifica que o agente do cliente de distribuição de software também deve ser desabilitado. Da mesma forma, o verbo Enable remove todas as substituições de diretiva local de cliente, fazendo com que o agente de cliente de distribuição de software volte ao seu estado normal, definido pela diretiva do SMS gerenciada pelo SMS management point. A Figura 5 mostra um exemplo de uma linha do Windows PowerShell que coloca uma substituição de diretiva local de cliente SMS no agente de cliente de distribuição de software que impõe a desabilitação de todos os membros da coleção personalizada dos sistemas Windows Server 2003. A linha que remove toda a diretiva local de cliente SMS e substitui o agente de cliente de distribuição de software na mesma coleção também é listada. Os cmdlets Disable-SoftwareDistribution e Enable-SoftwareDistribution também podem ser usados por conta própria, se você tiver somente algumas máquinas em que deseja manipular a diretiva local de cliente SMS.
Figure 5 Montando os cmdlets — exemplos (Close Figure 5)
PS >Get-SMSServerConnection -server MYSMSSERVER | Get-Collections | where-object {$_.Name -eq "Windows Server 2003 Systems"} | Get-CollectionMembers | Disable-SoftwareDistribution
PS >
PS > Get-SMSServerConnection -server MYSMSSERVER | Get-Collections | where-object {$_.Name -eq "Windows Server 2003 Systems"} | Get-CollectionMembers | Enable-SoftwareDistribution
PS >
PS >Disable-SoftwareDistribution –hosts SMSCLIENT1, SMSCLIENT2, SMSCLIENT3
PS >
PS >Enable-SoftwareDistribution –hosts SMSCLIENT1, SMSCLIENT2, SMSCLIENT3

Próximas etapas
O código-fonte de exemplo que vem com este artigo pode oferecer a você um bom ponto de partida para a aplicação de substituições de diretiva local de cliente SMS a grupos de computadores. Este exemplo só aborda o agente de cliente de distribuição de software do SMS e a propriedade Enabled. Os outros agentes de cliente possuem mais propriedades que você pode substituir da mesma forma. Agora que você possui um ponto de partida em comum, a próxima etapa lógica é examinar outras partes da diretiva local de cliente SMS. Pense nos grupos de sistemas gerenciados que podem ser bons candidatos para as substituições de diretiva local de cliente SMS e quais faria sentido usar. Uma última observação: é uma boa prática saber no que você está se metendo e, portanto, teste tudo com cuidado em um ambiente de laboratório.

Don Brown é engenheiro-chefe de campo sênior da Microsoft e vem trabalhando e oferecendo suporte ao SMS (quer dizer, SCCM) há muito, muito tempo. Entre em contato com ele pelo email donbrown@microsoft.com.


 The Cable Guy: Logon sem fio &#250;nico
The Cable Guy
Logon sem fio único
Joseph Davies

As conexões sem fio já estabelecidas e que precisam de autenticação em uma rede privada podem acrescentar uma camada extra de desafio tanto para o usuário quanto para o administrador. Um cliente sem fio baseado no Windows, sendo membro de um domínio Active Directory, deve realizar uma autenticação com base no padrão IEEE 802.1X para obter uma
conexão sem fio protegida e um logon do domínio. Como a autenticação pode envolver credenciais de usuário ou do computador e os logons do domínio dependem da conectividade de rede, os problemas surgem durante a configuração da ordem na qual as autenticações serão realizadas e durante a especificação das credenciais a serem usadas. Tudo isso pode ter impacto sobre os logons do domínio e fazer com que sejam solicitadas as credenciais de um usuário várias vezes.
Felizmente, o logon sem fio único no Windows Vista® permite que você especifique que a autenticação IEEE 802.1X para Wi-Fi Protected Access 2 (WPA2)-Enterprise, WPA-Enterprise e a autenticação 802.1X com Wireless Equivalency Privacy (WEP) ocorram antes do processo de logon do usuário. Isso permite que você resolva problemas de logon do domínio em configurações específicas. O logon único sem fio integra diretamente a autenticação sem fio à experiência de logon do Windows®, o que resulta em usuários mais felizes no geral. Por essas razões, pretendo abordar neste mês os recursos do logon único sem fio, como configurá-lo e como ele funciona durante o processo de logon do usuário.

Informações gerais do logon único
Um cliente sem fio do Windows pode realizar a autenticação na rede sem fio usando apenas as credenciais do computador ou do usuário, ou uma combinação de ambos. Quando usa apenas as credenciais do computador, o Windows realiza a autenticação 802.1X antes de exibir a tela de logon do Windows. Isso dá ao computador cliente sem fio um acesso prévio a recursos de rede como, por exemplo, controladores de domínio do Active Directory®.
Quando usa apenas as credenciais do usuário, o Windows sem logon único realiza a autenticação 802.1X após a conclusão do processo de logon. A Figura 1 mostra a inicialização e a linha do tempo de logon nesse cenário.
Figura 1 Linha do tempo durante o uso apenas das credenciais do usuário para autenticação sem fio
Figura 1 Linha do tempo durante o uso apenas das credenciais do usuário para autenticação sem fio
As conseqüências de usar apenas as credenciais do usuário para autenticação sem fio são de que um usuário não consegue fazer um logon do domínio inicial em um computador porque não há credenciais armazenadas localmente em cache para a conta em questão e não existe nenhuma conectividade com o controlador de domínio para autenticar novas credenciais de logon. Além disso, haverá falha em algumas operações de logon do domínio porque não há nenhuma conectividade com os controladores de domínio do Active Directory no momento. Haverá falha em scripts de logon, em atualizações da Diretiva de Grupo e do perfil de usuário, o que resulta em erros no log de eventos do Windows.
Quando usa uma combinação de credenciais do usuário e do computador, o Windows realiza uma autenticação 802.1X usando as credenciais do computador antes de exibir a tela de logon do Windows. Após o logon do usuário, o Windows realiza outra autenticação 802.1X usando as credenciais do usuário. Algumas infra-estruturas de rede usam LANs virtuais (VLANs) diferentes para computadores autenticados com credenciais do computador e para computadores que usam credenciais do usuário. Se a autenticação na rede sem fio que está usando credenciais do usuário e a opção para a VLAN autenticada por usuário ocorrerem depois do processo de logon do usuário, o cliente sem fio do Windows não terá acesso a recursos de rede na VLAN autenticada por usuário como, por exemplo, controladores de domínio do Active Directory, durante o processo de logon do usuário. Mais uma vez, isso acarreta falha nas operações de logon do domínio.
Outro problema ocorre quando a autenticação sem fio com credenciais do usuário utiliza um conjunto diferente de credenciais de segurança em relação às credenciais de logon do usuário. Para essas configurações, o Windows solicita credenciais de usuário adicionais quando a autenticação sem fio começa, o que pode ser confuso.
O recurso de logon único do Windows Vista foi desenvolvido para resolver os problemas dos logons de domínio, VLANs separadas autenticadas por computador e por usuário, além de solicitar ao usuário credenciais diferentes em momentos distintos. Com o logon único, os administradores de rede podem especificar se a autenticação sem fio com credenciais do usuário ocorre antes do processo de logon. Quando as credenciais do usuário são necessárias ao logon do usuário e à autenticação sem fio são diferentes, todas as credenciais obrigatórias são solicitadas e obtidas na tela de logon do Windows.
Com o logon único, um cliente sem fio do Windows Vista pode ser configurado para realizar a autenticação na rede sem fio usando as credenciais do usuário antes do processo de logon. A Figura 2 mostra a nova inicialização e a linha do tempo de logon.
Figura 2 Linha do tempo quando a autenticação na rede usando credenciais do usuário ocorre antes do logon do usuário
Figura 2 Linha do tempo quando a autenticação na rede usando credenciais do usuário ocorre antes do logon do usuário
Isso possibilita configurações que usem apenas as credenciais do usuário ou uma combinação das credenciais do usuário e do computador com VLANs separadas sem que haja perda de funcionalidade. Como o cliente sem fio tem conectividade de rede ou conectividade com a VLAN autenticada por usuário antes do início do processo de logon do usuário, as operações de logon do domínio podem ser concluídas com êxito. Por exemplo, consulte "Adicionando um cliente sem fio do Windows Vista a um domínio" em microsoft.com/technet/network/wifi/vista_bootstrap_wireless.mspx.
Com base na configuração do perfil sem fio, o logon único consolida os campos de entrada para as credenciais do usuário da autenticação sem fio e os adiciona à tela de logon do Windows. Por isso, todas as credenciais do usuário para logon e autenticação sem fio que usam credenciais do usuário são fornecidas por ele simultaneamente.
Os métodos do protocolo EAP (Extensible Authentication Protocol) escritos para a nova arquitetura EAPHost no Windows Vista podem usar a API de suporte a EAP Pre-Logon Authentication Provider (PLAP) para incluir os campos de entrada necessários à autenticação na tela de logon do Windows. Para obter mais informações, consulte API SSO e PLAP em msdn2.microsoft.com/bb530584.
Como exemplo de uma sessão de logon único, considere um cliente sem fio do Windows Vista configurado para realizar a autenticação usando apenas as credenciais do usuário, além de um nome de usuário e senha, tanto para o logon do domínio quanto para a autenticação 802.1X. Quando o usuário pressiona Ctrl+Alt+Del na tela inicial do Windows Vista, o logon único determina que a autenticação 802.1X deve ocorrer antes do logon do usuário. Quando o usuário digita seu nome e senha, o logon único realiza primeiramente a autenticação na rede sem fio baseada no usuário e, em seguida, exibe uma mensagem indicando estar se conectando à rede sem fio pelo nome. Após a autenticação sem fio, o Windows Vista realiza o logon do usuário e exibe a área de trabalho.

Configurando o logon único
Nos bastidores
Para acrescentar algo ao que você sabe sobre o processo de autenticação sem fio, vejamos mais detalhadamente o que acontece quando o usuário tenta fazer logon ativamente. Quando um usuário pressiona Ctrl+Alt+Del para logon em um cliente sem fio que esteja executando o Windows Vista, as seguintes etapas são executadas:
  1. A Configuração Automática sem Fio determina o perfil de rede sem fio a ser usado. Caso o cliente sem fio já tenha realizado a autenticação com êxito usando as credenciais do computador, é usado o perfil de rede sem fio conectado atualmente. Caso o perfil sem fio esteja configurado para realizar a autenticação apenas com credenciais do computador, nenhuma autenticação sem fio adicional com credenciais do usuário é necessária. As etapas de 2 a 6 pressupõem que o perfil sem fio selecionado esteja configurado para realizar a autenticação com credenciais do usuário, tenha o logon único habilitado e que a configuração Executar logo após o logon do usuário esteja selecionada.
  2. O usuário digita suas credenciais para o logon e a autenticação sem fio (se necessário) e inicia o logon do usuário.
  3. O Windows exibe uma mensagem para o usuário informando estar tentando se conectar ao nome da rede sem fio.
  4. O Windows tenta realizar uma autenticação na rede usando as credenciais do usuário. Caso as caixas de diálogo adicionais Permitir a serem exibidas durante a configuração do logon único estejam habilitadas e o tipo de EAP precise exibi-las ao usuário, o Windows exibe essas caixas de diálogo. Caso não ocorra com êxito durante o atraso máximo da conectividade (em segundos), a autenticação sem fio é abandonada. Caso a configuração Esta rede usa VLANs diferentes para autenticação com credenciais de máquina e de usuário esteja selecionada, o Windows realiza uma renovação DHCP da configuração do endereço IP do adaptador de rede sem fio quando a autenticação sem fio é bem-sucedida.
  5. O Windows realiza o processo de logon do usuário.
  6. O Windows exibe a área de trabalho.
Caso a configuração Executar logo após o logon do usuário esteja selecionada, o Windows executa as etapas na seguinte ordem: 1, 2, 5, 3, 4, 6.

Para habilitar e configurar o logon único, você pode usar a extensão da Diretiva de Grupo Diretivas da Rede sem Fio (IEEE 802.11) e definir as configurações de segurança avançadas para um perfil sem fio de uma diretiva do Windows Vista. Para obter mais informações sobre isso, consulte "Configurações da Diretiva de Grupo sem fio para Windows Vista" em technetmagazine.com/issues/2007/04/CableGuy.
Na caixa de diálogo Configurações de Segurança Avançadas, selecione Habilitar Logon Único para a rede e configure as opções do logon único conforme necessário. A Figura 3 mostra um exemplo do logon único habilitado com as configurações padrão.
Figura 3 Configurações padrão do logon único
Figura 3 Configurações padrão do logon único
Há configurações de logon único para realizar a autenticação sem fio 802.1X antes ou logo após o processo de logon do usuário e especificar a espera pela autenticação 802.1X a ser concluída antes do início do processo de logon do usuário. Também é possível indicar se caixas de diálogo devem ser exibidas além da consolidação dos campos de entrada na tela de logon do Windows. Por exemplo, caso um tipo de EAP queira que o usuário confirme o certificado enviado do serviço RADIUS (Remote Authentication Dial-in User Service) durante a autenticação, o tipo de EAP pode exibir a caixa de diálogo.
Também é possível especificar se o cliente sem fio deve iniciar uma renovação do protocolo DHCP (Dynamic Host Configuration Protocol) da configuração TCP/IP do adaptador sem fio após a realização da autenticação baseada no usuário. Selecione essa opção caso haja VLANs separadas para clientes sem fio autenticados baseados no computador e no usuário e essas VLANs sejam sub-redes IPv4 ou IPv6 diferentes.
Depois de criar o perfil sem fio que contém as configurações de logon único dentro da diretiva, você também pode configurar clientes sem fio do Windows Vista exportando o perfil como um arquivo XML e importando este perfil XML nos clientes sem fio do Windows Vista.
Para criar um perfil sem fio XML de logon único, crie um perfil sem fio com as configurações de logon único apropriadas. Na guia Geral da diretiva sem fio do Windows Vista, clique no perfil sem fio com as configurações de logon único e clique em Exportar. Quando solicitados, especifique o nome do arquivo XML e seu local.
Para usar o perfil XML de logon único na configuração de outro cliente sem fio do Windows Vista, importe o perfil XML usando o comando:
netsh wlan add profile filename=
    "[FileName].xml"
Para determinar se um perfil sem fio tem o logon único habilitado, use:
netsh wlan show profile=[ProfileName]
As configurações de logon único estão listadas na seção "Configurações de segurança" do comando netsh wlan show profile e no texto dos eventos de conexão sem fio no log de eventos do Windows. Também é possível usar o snap-in Visualizar eventos para visualizar os eventos na pasta Microsoft\Windows\WLAN-AutoConfig dos logs Aplicativos e Serviços de origem "WLAN-AutoConfig" e identificações de evento 13001, 13002, 13003 e 13004.
Você encontrará mais informações na página Rede sem fio em microsoft.com/wifi. E consulte a barra lateral "Nos bastidores" para obter mais detalhes sobre o processo de logon único.

Joseph Davies é redator técnico da Microsoft, ensina e escreve sobre assuntos relacionados a sistemas de rede do Windows desde 1992. Ele tem cinco livros publicados pela Microsoft Press e é autor da coluna mensal da TechNet Magazine, The Cable Guy.


 Notas de Pesquisa: Uso da computa&#231;&#227;o de alto desempenho no combate ao HIV
Notas de Pesquisa
Uso da computação de alto desempenho no combate ao HIV
Kristin Firth e Mia Matusow

Que imagem que vem à mente quando você pensa em pessoas realizando uma pesquisa médica? Você imagina homens e mulheres de jaleco branco manipulando tubos de ensaio e microscópios? Ou talvez uma equipe de químicos em uma universidade ou empresa farmacêutica? Certamente, há imagens reais comuns ao campo de pesquisas médicas, mas elas representam apenas
um aspecto do campo. Na verdade, as pesquisas médicas são realizadas em locais bem distintos.
Você ficará surpreso com a participação da Divisão de Pesquisa da Microsoft no desenvolvimento de uma vacina contra o vírus da imunodeficiência humana (HIV). O mais incrível é que a Microsoft está fazendo isso sem usar maçarico de laboratório. O local se parece com um escritório comum, com mesas de trabalho e vários PCs.
Afinal, qual é a função da Microsoft nesta pesquisa? O pessoal de jaleco branco – os cientistas de várias universidades e centros de pesquisa, incluindo o Mass General em Boston, a Universidade de British Columbia, a Universidade de Washington, o Fred Hutchinson Cancer Research Center e a Murdoch University na Austrália – coleta um grande volume de dados em seus projetos. O grupo eScience da Divisão de Pesquisa da Microsoft — que consiste em seis pessoas, a maioria delas localizada em Redmond, WA (e uma pessoa no Novo México) — ajuda os pesquisadores a processar e analisar esses dados. A Divisão de Pesquisa da Microsoft começou a se envolver neste projeto em 2003. Hoje, o grupo eScience colabora com os cientistas em diversos projetos sobre assuntos que afetam a sociedade. A equipe trabalha junto a cientistas externos, criando soluções personalizadas para projetos, manipulando números e analisando resultados.
Em um projeto de alta prioridade, a Microsoft está ajudando a analisar dados relativos aos padrões de mutação do HIV. David Heckerman, MD, PhD, pesquisador sênior da Microsoft, explica que o HIV sofre mutações rápidas quando atacado pelo sistema imunológico de uma pessoa infectada. "Estamos desenvolvendo um estudo para tentar determinar as mutações do HIV em resposta ao sistema imunológico do hospedeiro. Para fazer isso, estamos buscando correlações entre o tipo de sistema imunológico de um indivíduo e as seqüências de proteína HIV que o infectam".
Cientistas utilizam amostras de pessoas infectadas com HIV para determinar seus tipos de sistema imunológico e as seqüências de HIV. É nesse momento que a manipulação de números entra em cena. O estudo busca correlações entre 3 mil aminoácidos HIV e centenas de tipos de sistemas imunológicos em vários indivíduos. "Criamos testes estatísticos que geram correlações mais confiáveis, com um número reduzido de falsos valores positivos e negativos", diz Carl Kadie, PhD, principal engenheiro de desenvolvimento de software de pesquisas da Microsoft. "Contudo, esses testes exigem grande potência computacional, e quanto mais tópicos incluirmos, melhor. A idéia é executar milhões de simulações para revelar as correlações mais confiáveis".

Uso do HPC para combater o HIV
Alguns anos atrás, limitações de processamento dificultavam esforços de pesquisa. Contando com apenas seis computadores, os pesquisadores da Microsoft envolvidos neste projeto não tinham poder de processamento suficiente para executar a análise em tempo adequado. Eles levariam um ano inteiro para analisar apenas 200 sujeitos, pois precisariam verificar todas as posições do genoma da vacina e os diferentes tipos imunológicos. Mesmo que os pesquisadores dispusessem de 20 computadores para dedicar a essa análise, ainda enfrentariam a dificuldade de conseguir executar manualmente testes em cada um dos 20 computadores, recebendo 20 conjuntos de resultados separados, e precisariam de outro programa (e também de mais tempo) para tabular os conjuntos de resultados separados. Eles precisariam de muito tempo para gerenciar vários trabalhos, coletar o resultado parcial e realizar todas as demais tarefas individuais. Então, eles recorreram ao grupo HPC (processamento de alto desempenho) da Microsoft.
Em 2006, os pesquisadores implementaram o Windows® Compute Cluster Server 2003. Essa solução do HPC ofereceu aos pesquisadores uma forma simples de aproveitar o poder do trabalho conjunto de vários computadores. Basicamente, o Windows Compute Cluster Server permite a distribuição do trabalho em nós do servidor executados em paralelo. A tarefa de distribuir dados entre nós, gerenciar os dados e combinar os resultados é totalmente automatizada. A solução inclui procedimentos de configuração, um conjunto de ferramentas de gerenciamento e um programador de trabalhos integrados.
Finalmente, esta solução permitiu resolver os problemas técnicos mais significativos: a capacidade computacional deixou de ser limitada, e o processo de distribuição de trabalho e gerenciamento de dados foi totalmente automatizado.

A configuração
Para a Divisão de Pesquisa da Microsoft, a abordagem do cluster de computadores foi uma grande vantagem. O Windows Compute Cluster Server 2003 é ideal para projetos envolvendo aplicativos que executam a mesma operação repetidas vezes. Por exemplo, quando é possível acelerar a análise e a solução de problemas através da execução de tarefas em paralelo. Contudo, deve-se lembrar que a implantação dessa solução exige grande capacidade computacional de alto desempenho, especialmente em termos de potência e esfriamento. Isso envolve o emprego de vários servidores que costumam ser executados com 100% de utilização da CPU por várias semanas.
Os próximos passos são determinar o tamanho de cluster acessível para a organização e seu local de armazenamento. Se um ambiente já for baseado em Windows, com um Active Directory® ativo, administradores terão a infra-estrutura necessária para instalar, implantar e suportar um cluster. Em ambientes onde o Active Directory não está em uso, são necessárias algumas etapas adicionais de configuração.
Decida também como deseja prover nós no cluster de computação. Isso significa que você precisa escolher as ferramentas que acompanham o Windows Compute Cluster Server 2003 ou suas próprias técnicas de implantação interna. Implante o próprio Windows Compute Cluster Server 2003 junto com os aplicativos de software a serem executados no cluster. Também é preciso definir o acesso do usuário ao cluster para que usuários possam se conectar ao cluster e submeter trabalhos. Isso pode ser feito através da interface gráfica de usuário incluída ou das interfaces de linha de comando.
O Windows Compute Cluster Server 2003 é um sistema operacional de 64 bits. (A arquitetura típica de um ambiente Windows Compute Cluster Server 2003 é ilustrada na Figura 1.) Quando esta coluna estava sendo escrita (junho de 2007), a Divisão de Pesquisa da Microsoft estava executando vários aplicativos diferentes em um cluster criado em 326 servidores do 25 IBM eServer. Cada um desses servidores apresenta dois processadores AMD Opteron executados a 2.6 GHz.
Figura 1 Como aproveitar o poder do Windows Compute Cluster Server 2003
Figura 1 Como aproveitar o poder do Windows Compute Cluster Server 2003
Após implantar o Windows Compute Cluster Server, o grupo atualizou o aplicativo utilizado para executar a correlação genética a ser executada no cluster. A complexidade da implantação de aplicativos para clusters de computadores pode variar. Os próprios aplicativos influenciam na quantidade de programação necessária.
Primeiramente, o grupo utilizou as ferramentas criadas no Windows Compute Cluster Server para definir rapidamente uma IU genérica. Mas essa foi apenas uma correção rápida. O grupo logo criou seu próprio aplicativo Web personalizado, que permite maior flexibilidade e suporta a opção de expor alguns nós de cluster a cientistas localizados fora da Microsoft. Na realidade, a Microsoft faz parte do Open Grid Forum e alguns dos clusters do Centro de Pesquisa da Microsoft estão disponíveis a usuários de outras universidades ao redor do mundo, permitindo que pesquisadores colaborem uns com os outros e compartilhem a carga de trabalho.
Além das interfaces gráficas de usuário, o Windows Compute Cluster Server também suporta operações de linha de comando, permitindo que usuários gravem scripts. E ele oferece APIs sofisticadas que podem ser usadas para gravar programas que interagem diretamente com o programador de trabalhos do Windows Compute Cluster - uma técnica que o Centro de Pesquisa da Microsoft decidiu utilizar.

Como obter resultados
Graças ao uso de computadores de alto desempenho, o grupo eScience da Divisão de Pesquisa da Microsoft está fazendo enormes progressos na corrida para desenvolver uma vacina contra o HIV. "Graças aos computadores de alto desempenho, conseguimos compreender melhor as coisas", diz Heckerman. "Vários dos grupos externos com os quais temos colaborado agora utilizam nossas técnicas estatísticas e compartilham suas descobertas. Como resultado, cientistas já estão apresentando novas hipóteses para teste. Antes, levaríamos um ano para obter resultados para cada etapa do processo. Agora, isso leva apenas um dia".
Antes do Windows Compute Cluster Server, os métodos utilizados pela Divisão de Pesquisa da Microsoft seriam impraticáveis em função do tempo necessário para executar a análise. Segundo Kadie: "O Windows Compute Cluster Server nos permite executar 50 trabalhos, cada um com 200 mil itens, no mesmo tempo que gastaríamos para executar 1 trabalho".
Agora que o grupo eScience possui vários recursos de computação disponíveis, ele pode realizar testes com várias execuções em dados simulados. As execuções nos dados simulados são essenciais para determinar os resultados em dados reais relevantes. Quanto maior o número de simulações, mais confiáveis serão os resultados.

Lições aprendidas
É claro que a Divisão de Pesquisa da Microsoft se beneficiou da utilização do Windows Compute Cluster Server, mas o relacionamento é simbiótico por natureza. Desenvolvedores do grupo de Computação de Alto Desempenho, que estão trabalhando em uma segunda versão do Windows Compute Cluster Server, continuam a aprender muito com os comentários fornecidos pelo grupo eScience.
O grupo HPC, em especial, aprendeu muito sobre a alocação de recursos, ao monitorar e analisar o comportamento do cluster da Divisão de Pesquisa da Microsoft para determinar a melhor forma de equilibrar recursos do cluster entre vários usuários. Por exemplo, neste projeto, um usuário costuma criar um trabalho de cada vez, com uma média de 50 tarefas associadas a cada trabalho. O usuário submete o trabalho e o gerenciador de trabalhos do Windows Compute Cluster aloca recursos suficientes para gerenciar todas as 50 tarefas. Para fazer isso, ele logo declara que todos os nós disponíveis no cluster devem trabalhar nas tarefas. Este cenário não deve ser problemático em ambientes de um único usuário, mas ele se torna um problema em ambientes com múltiplos usuários, onde é muito importante que projetos tenham um progresso simultâneo.
No momento, quando 10 das 50 tarefas de trabalho são concluídas, 10 servidores não são liberados. O gerenciador de trabalhos aguarda a conclusão de todas as 50 tarefas do trabalho antes de liberar os servidores para resolver outro trabalho. Desenvolvedores do HPC estão trabalhando agora para descobrir uma forma de realocar recursos ao concluir cada tarefa, e não o trabalho inteiro.
A Divisão de Pesquisa da Microsoft também recorreu ao grupo HPC para ajudar a resolver problemas específicos relativos à forma em que os pesquisadores desejavam utilizar o Windows Compute Cluster Server. Notadamente, os pesquisadores desejavam configurar a segurança para que credenciais do usuário se propagassem automaticamente do Web front-end para o cluster de computadores. A solução era trabalhar no Microsoft® .NET Framework e estender a autenticação de formulários ASP.NET para que o aplicativo Web pudesse fornecer os nós de cluster com credenciais completas de usuário, cada vez que um usuário submetesse um trabalho.
Agora os membros da equipe eScience da Divisão de Pesquisa da Microsoft e seus colegas do mundo inteiro podem se concentrar nas partes mais importantes de seus trabalhos, deixando todas as tarefas relativas a processamento e gerenciamento de dados para os computadores. "Como resultado, podemos avançar como equipe", diz Heckerman. "Estamos conseguindo ultrapassar os limites em termos do conhecimento sobre o HIV, com grande avanço no combate à doença".

Kristin Firth e Mia Matusow, ambas da Blue Line Writing & Editing, passaram a última década criando conteúdo estratégico para organizações empresariais nos setores público e privado em três continentes.


 Windows PowerShell: Escrevendo express&#245;es regulares
Windows PowerShell
Escrevendo expressões regulares
Don Jones

192.168.4.5. \\Server57\Share. johnd@contoso.com. Você não tem dúvidas ao reconhecer esses três itens como sendo um endereço IP, um caminho UNC (Universal Naming Convention) e um endereço de email. O seu cérebro reconhece os formatos. Quatro agrupamentos de dígitos, barras invertidas, o símbolo @ e as demais pistas indicam quais tipos de dados essas cadeias de
caracteres representam. Raciocinando um pouquinho, você reconhece rapidamente que apenas 192.168 não é um endereço IP válido, que 7\\Server2\\Share não é um UNC válido e que joe@contoso também não é um endereço de email válido.
Infelizmente, os computadores precisam trabalhar um pouco mais para poder "compreender" formatos complicados como esse. É onde entram as expressões regulares. Uma expressão regular é uma cadeia de caracteres, escrita com uma linguagem especial de expressão regular, que ajuda um computador a identificar as cadeias de um determinado formato – como, por exemplo, um endereço IP, um UNC ou um endereço de email. Uma expressão regular bem escrita tem a possibilidade de permitir que um script Windows PowerShellTM aceite como válidos ou rejeite como inválidos dados incompatíveis com o formato especificado por você.

Estabelecendo uma correspondência simples
O operador –match do Windows PowerShell compara uma cadeia de caracteres com uma expressão regular, ou regex, e retorna Verdadeiro ou Falso, dependendo da correspondência da cadeia em relação a regex. Um regex muito simples não precisa sequer conter nenhuma sintaxe especial – bastarão caracteres literais. Por exemplo:
"Microsoft" –match "soft"
"Software" –match "soft"
"Computers" –match "soft"
Quando executadas no Windows PowerShell, as duas primeiras expressões retornam Verdadeiro e a terceira, Falso. Em cada uma delas, uma cadeia é seguida do operador –match, seguido, por sua vez, por um regex. Por padrão, um regex flutuará em uma cadeia de caracteres até encontrar uma correspondência. Os caracteres "soft" podem ser encontrados tanto em Software quanto em Microsoft, mas em posições diferentes. Também observe que, por padrão, um regex não diferencia maiúsculas de minúsculas – "soft" é encontrado em "Software", apesar da letra S em maiúscula.
Mas caso isso seja necessário, um operador diferente, –cmatch, oferece uma comparação de regex diferenciando maiúsculas de minúsculas, como:
"Software" –cmatch "soft"
Essa expressão retorna Falsa, já que a cadeia de caracteres "soft" não corresponde a "Software" em uma comparação que diferencia maiúsculas de minúsculas. Observe que o operador –imatch também está disponível como uma opção explícita que não diferencia maiúsculas de minúsculas, embora esse seja o comportamento padrão de –match.

Curingas e repetidores
Um regex pode conter alguns caracteres curinga. Um ponto final, por exemplo, corresponde a uma instância de qualquer caractere. Um ponto de interrogação corresponde a zero ou a uma instância de qualquer caractere. Estes são alguns exemplos de ilustração:
"Don" –match "D.n" (True)
"Dn" –match "D.n" (False)
"Don" –match "D?n" (True)
"Dn" –match "D?n" (True)
Na primeira expressão, como o ponto final significa exatamente um caractere, a correspondência é Verdadeira. Já na segunda, como o ponto final não encontra o caractere necessário à inclusão, a correspondência é Falsa. O ponto de interrogação, como mostrado na terceira e na quarta expressões, pode corresponder a um único caractere desconhecido ou a nenhum caractere. Por fim, no quarto exemplo, a correspondência é Verdadeira porque tanto "D" quanto "n" são encontrados sem que haja um caractere entre eles. Por isso, como o ponto de interrogação pode ser considerado um espaço fixo para um caractere opcional, a correspondência continua sendo Verdadeira, mesmo que nenhum caractere seja exibido nessa posição.
Um regex também reconhece os símbolos * e + como repetidores. Eles precisam acompanhar um ou mais caracteres. O * corresponde a zero ou mais e + corresponde a um ou mais dos caracteres especificados. Estes são alguns exemplos:
"DoDon" –match "Do*n" (True)
"Dn" -match "Do*n" (True)
"DoDon" -match "Do+n" (True)
"Dn" -match "Do+n" (False)
Observe que * e + correspondem a "Do", e não apenas a "o". Isso porque esses repetidores foram criados para corresponder a uma série de caracteres, e não apenas a um caractere.
E caso seja necessária uma correspondência ao ponto final, *, ? ou aos próprios símbolos +? Basta precedê-los com uma barra invertida, que é um caractere de escape regex:
"D.n" -match "D\.n" (True)
Observe que isso é diferente do caractere de escape do Windows PowerShell (o apóstrofo invertido), embora ele siga a sintaxe regex padrão do setor.

Classes de caractere
Uma classe de caractere é uma forma mais abrangente de curinga, que representa um grupo inteiro de caracteres. O Windows PowerShell reconhece algumas classes de caractere. Por exemplo:
  • \w corresponde a qualquer caractere da palavra, o que significa letras e números.
  • \s corresponde a qualquer caractere de espaço em branco como, por exemplo, tabulações, espaços etc.
  • \d corresponde a qualquer caractere de dígito.
Também há classes de caractere negativas: \W corresponde a qualquer caractere que não seja uma palavra, \S corresponde a caracteres que não sejam espaços em branco e \D corresponde a tudo que não seja um dígito. Essas classes podem ser seguidas por * ou + para indicar se várias correspondências são aceitáveis. Estes são alguns exemplos:
"Shell" -match "\w" (True)
"Shell" -match "\w*" (True)
Cmdlet do mês
O cmdlet Write-Debug é muito prático para escrever objetos (como, por exemplo, cadeias de texto) no pipeline Debug. Mas testar esse cmdlet no shell pode ser um tanto desapontador, porque parece que o cmdlet não está fazendo nada.
O truque é que o pipeline Debug é desativado por padrão – a variável $DebugPreference é definida como "SilentlyContinue". No entanto, defina-a como "Continue", e tudo o que você enviar usando Write-Debug será exibido no console em texto amarelo. Trata-se de uma forma perfeita para adicionar código de rastreamento aos scripts, o que lhe permite acompanhar a execução de um script complexo. A cor amarela ajuda você a diferenciar o rastreamento da saída normal do script; além disso, é possível desativar as mensagens de depuração a qualquer momento sem que seja preciso remover todas as instruções Write-Debug. Basta definir $DebugPreference = "SilentlyContinue" novamente, e o texto da depuração será suprimido.

Embora ambas as expressões retornem Verdadeiro, elas correspondem a coisas bem diferentes. Felizmente, existe uma forma de ver o que o operador –match está pensando na realidade: sempre que uma correspondência é estabelecida, um caractere especial chamado $matches é preenchido com os resultados da correspondência – ou seja, qualquer caractere da cadeia para o qual o operador encontrou uma correspondência no regex. A variável $matches retém os resultados até que seja estabelecida outra correspondência positiva usando o operador –match. A Figura 1 mostra a diferença entre as duas expressões que acabei de apresentar a você. Como você pode ver, \w encontrou uma correspondência para "S" em "Shell" e \w* de repetição estabeleceu uma correspondência com a palavra inteira.
Figura 1 Que diferença um * pode fazer
Figura 1 Que diferença um * pode fazer

Grupos, intervalos e tamanhos de caracteres
Um regex também pode conter grupos ou intervalos de caracteres, entre colchetes. Por exemplo, [aeiou] significa que qualquer um dos caracteres incluídos – a, e, i, o ou u – é uma correspondência aceitável. [a-zA-Z] indica que qualquer letra do intervalo a-z ou A-Z é aceitável (mesmo que você estivesse usando o operador –match que diferencia maiúsculas de minúsculas, apenas a-z ou A-Z seria o suficiente). Por exemplo:
"Jeff" -match "J[aeiou]ff" (True)
"Jeeeeeeeeeeff" -match "J[aeiou]ff" (False)
Também é possível especificar um número mínimo e máximo de caracteres usando chaves. {3} indica que você deseja exatamente três instâncias do caractere especificado, {3,} significa que você deseja pelo menos três ou mais e {3,4} indica que você deseja pelo menos três, mas não mais que quatro. Esta é a forma ideal de criar um regex para endereços IP:
"192.168.15.20" -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" (True)
Esse regex quer quatro grupos de dígitos com entre um e três dígitos cada, todos separados por um ponto final literal. Mas considere este exemplo:
"300.168.15.20" -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" (True)
Isso mostra as limitações de um regex. Embora a formatação da cadeia de caracteres seja semelhante a um endereço IP, é claro que não se trata de um endereço IP válido. Um regex é incapaz de determinar se os dados são efetivamente válidos; ele só consegue determinar se eles parecem estar corretos.

Parar o float
Solucionar problemas de um regex pode ser um pouco confuso. Por exemplo, aqui está um regex que testa um caminho UNC no formato \\Server2\Share:
"\\Server2\Share" -match "\\\\\w+\\\w+" (True)
Aqui, a leitura até do próprio regex está difícil porque todas as barras invertidas literais que eu desejo testar precisam ter um escape com uma segunda barra invertida. Embora pareça funcionar bem, isso não acontece na realidade:
"57\\Server2\Share" -match "\\\\\w+\\\w+" (True)
Este segundo exemplo é claramente (pelo menos para mim e para você) um caminho UNC inválido, muito embora o regex tenha aceitado isso sem problemas. Por quê? Lembre-se de que, por padrão, um regex flutua. Este regex basicamente procura duas barras invertidas, uma ou mais letras e números, outra barra invertida e mais letras e números. Esse padrão existe na cadeia de caracteres – com os dígitos a mais no início, o que o torna um UNC inválido. O truque é informar ao regex para começar a correspondência no início da cadeia, sem flutuação. Eu posso fazer algo assim:
"57\\Server2\Share" -match "^\\\\\w+\\\w+" (False)
O caractere ^ indica o local em que a cadeia de caracteres começa. Com esse acréscimo, há uma falha no caminho UNC inválido porque o regex procura os dois primeiros caracteres como barras invertidas e, nesse caso, eles não são.
Da mesma forma, o símbolo $ pode ser usado para indicar o final de uma cadeia. Isso não seria muito útil no caso de um caminho UNC porque este pode conter segmentos de caminho adicionais como, por exemplo, \\Server2\Share\Folder\File. No entanto, tenho certeza de que há muitos casos em que você gostaria de especificar o final de uma cadeia de caracteres.

Ajuda com expressões regulares
No Windows PowerShell, o tópico da ajuda about_regular_expressions oferece assistência básica de sintaxe relacionada à linguagem regex, mas alguns recursos online podem fornecer ainda mais informações. Por exemplo, um dos meus sites favoritos, www.RegExLib.com, oferece uma biblioteca gratuita de expressões regulares que foram escritas com várias finalidades como contribuições dadas pelas pessoas que o visitam. É possível pesquisar usando palavras-chave como, por exemplo, "e-mail" ou "UNC", para localizar rapidamente um regex que atenda à sua necessidade – ou pelo menos ofereça um bom começo. Caso pretenda criar um bom regex, você pode contribuir com ele para a biblioteca de forma que as outras pessoas também possam usá-lo.
Eu também gosto do RegexBuddy (www.RegexBuddy.com). Trata-se de uma ferramenta de baixo custo que oferece um editor gráfico de regex. RegexBuddy facilita a montagem de um regex complexo, e essa ferramenta também simplifica o teste de um regex para garantir que ele aceite corretamente cadeias de caracteres válidas e rejeite as inválidas. Outros vários desenvolvedores de software também criaram editores de regex gratuitos, shareware e comerciais, além de testadores, que os usuários certamente considerarão úteis.

Usando expressões regulares
Você deve estar se perguntando por que usaria um regex na vida real. Imagine que você esteja lendo informações de um arquivo CSV e as usando na criação de novos usuários no Active Directory®. Se o arquivo CSV for gerado por outra pessoa, você precisará validar se os dados contidos nele estão corretos. Um regex é perfeito para a tarefa. Um regex simples como, por exemplo, \w+, pode confirmar se os nomes e os sobrenomes não contêm nenhum caractere ou símbolo especial, enquanto algo um pouco mais rebuscado pode confirmar se os endereços de email estão de acordo com o seu padrão corporativo. Por exemplo, você poderia usar:
"^[a-z]+\.[a-z]+@contoso.com$"
Esse regex exige que um endereço de email esteja na forma don.jones@contoso.com, em que os nomes e os sobrenomes só podem conter letras e devem estar separados por um ponto final. A propósito, os endereços de email são as cadeias de caracteres mais complexas para se escrever um regex. Se puder restringir o escopo a um padrão corporativo específico, você terá mais facilidade nele.
Não se esqueça das âncoras inicial e final (^ e $), que garantem que não haja nada após contoso.com e também que nada preceda os caracteres que formam o nome do usuário.
Na verdade, usar esse regex no Windows PowerShell é muito simples. Pressupondo que a variável $email contenha o endereço de email lido no arquivo CSV, isto deverá verificar se ele é válido ou não:
$regex = "^[a-z]+\.[a-z]+@contoso.com$"
If ($email –notmatch $regex) {
  Write-Error "Invalid e-mail address $email"
}
Nesse exemplo, você aprendeu um novo operador. -notmatch retorna Verdadeiro caso a cadeia de caracteres não corresponda ao regex fornecido. (Também há um –cnotmatch para comparações diferenciando maiúsculas de minúsculas.)
Há muito mais sobre expressões regulares do que eu abordei aqui – classes de caractere adicionais, mais operações avançadas e até mesmo um operador ou dois. E ainda há o tipo de objeto [regex] para o qual o Windows PowerShell dá suporte. No entanto, o que eu abordei nessa rápida visão geral da sintaxe regex deve ser o suficiente para você começar. Sinta-se à vontade para me visitar em www.ScriptingAnswers.com caso você precise de ajuda em meio a um regex especialmente confuso.

Don Jones é editor colaborador da TechNet Magazine e co-autor de Windows PowerShell: TFM (SAPIEN Press). Ele é professor de Windows PowerShell (www.ScriptingTraining.com) e pode ser contatado pelo site ScriptingAnswers.com.


 Ei, Equipe de Scripts!: Gerenciamento de desktop do al&#233;m
Ei, Equipe de Scripts!
Gerenciamento de desktop do além
A Equipe de Scripts da Microsoft
Faça download do código deste artigo: HeyScriptingGuy2007_11.exe (151KB)

Por conta de um incrível apelo popular, achamos que deveríamos fazer algo um pouco diferente neste mês: em vez de falarmos sobre scripts de administração do sistema, começaremos – deixa para música de suspense – contando uma história de fantasmas!
Observação: tudo bem, então, tecnicamente, se quiséssemos mesmo fazer algo diferente neste mês, começaríamos falando mesmo sobre mudanças nos scripts de administração do sistema. Então, apenas acompanhe a gente, certo? Obrigado!
Há muitos anos, morreu uma das tataravós do script. Pouco tempo após seu enterro em um caixão de madeira simples, o tataravô começou a ter pesadelos terríveis nos quais sua amada esposa tentava sair desesperadamente do túmulo. Após seguidos pesadelos e súplicas repetidas, ele finalmente convenceu as autoridades locais a fazer a exumação do corpo. Quando o caixão foi aberto, todos ficaram horrorizados ao ver que as unhas da tataravó tinham sido entortadas para trás e que o caixão estava cheio de arranhões!
Tudo bem, a história pode não ser toda verídica; na verdade, quanto mais pensamos nela, mais percebemos que ela não tem nada de real. No entanto, fica uma lição muito importante. Não temos a menor idéia de qual seja, mas que ela deixa, ah, deixa.
Um momento, agora, sim, lembramos! Os caixões foram originalmente criados para proteger a pessoa morta dos elementos naturais e para ajudar a impedir a decomposição do corpo. Infelizmente, eles têm uma conseqüência indesejada: possibilitam, mesmo que em teoria, que você enterre uma pessoa viva e tenha a certeza de que ela jamais conseguirá sair. Como mostra claramente a história da tataravó do script, mesmo os planos mais perfeitos podem acabar em tragédias e em pessoas sendo enterradas vivas! (Deixa para a música de suspense mais uma vez.)
Observação: a menos, é claro, que você opte pelo Improved Burial Case, invenção de Franz Vester por volta de 1860. O caixão incluía um barbante amarrado a um sino que permanecia acima do solo; se houvesse um enterro prematuro, bastaria o "finado" tocar o sino e pedir ajuda. O Improved Burial Case também contava com uma escada retrátil, embora nós não saibamos claramente como uma escada retrátil ajudaria a pessoa a sair de um caixão enterrado a sete palmos da terra. Se você fosse enterrado acima da garagem de alguém, aí é claro que uma escada dessas seria muito útil. Caso contrário...
Acontece algo (no que se refere aos planos perfeitos que levam a desastres) bastante semelhante com os firewalls de Internet. (Bem, quase isso.) Os firewalls foram originalmente criados para manter afastadas as pessoas mal-intencionadas: eles bloqueiam o tráfego de entrada da rede, o que ajuda a manter hackers e invasores longe dos computadores. Isso é ótimo, mas – assim como o problema de ser enterrado vivo – também há uma conseqüência indesejada aqui: os firewalls também podem manter afastadas as pessoas bem-intencionadas. Isso fica ainda mais evidente no caso do WMI (Instrumentação de Gerenciamento do Windows®), que depende do DCOM para realizar tarefas administrativas em computadores remotos. Os firewalls tendem a bloquear todo o tráfego DCOM de entrada, algo que dificulta muito (se não torna praticamente impossível) gerenciar programaticamente os computadores na Internet. Na verdade, sem abrir portas adicionais no firewall, o que o torna mais vulnerável a hackers e crackers, isso é muito difícil. A menos, claro, que você opte pelo WinRM: Gerenciamento Remoto do Windows (escada retrátil não incluída).

O que é o Gerenciamento Remoto do Windows?
De acordo com o SDK do WinRM (msdn2.microsoft.com/aa384426), o Gerenciamento Remoto do Windows é "a implementação Microsoft do WS-Management, um protocolo amigável a firewalls com base no protocolo SOAP padrão, que possibilita a interoperação entre hardwares e sistemas operacionais de fornecedores diferentes". Impressionante, não? Como não iremos abordar os detalhes do protocolo WS-Management na coluna deste mês, nós recomendamos a leitura do SDK do WinRM para obter detalhes. Por enquanto, tudo o que nos interessa é a disponibilidade do WinRM no Windows Server® 2003 R2, no Windows Vista® e no Windows Server 2008, além de que ele permita a você gerenciar computadores pela Internet. O WinRM faz isso usando a porta 80, uma porta de serviços da Internet padrão que a maioria dos firewalls deixa aberta. (Porém, a porta usada pelo WinRM e o mecanismo de transporte padrão, HTTP, podem ser alterados conforme a necessidade.)
Nós também não perderemos tempo na coluna deste mês abordando como instalar e configurar o WinRM. Já há muitas informações disponíveis para ajudá-lo a fazer isso (msdn2.microsoft.com/aa384372). Mas vamos parar um momento para enfatizar um ponto importante: caso você queira usar o WinRM para recuperar as informações de um computador remoto (que, é claro, é o motivo principal de uso do WinRM inicialmente), o WinRM deve estar em execução tanto no computador local quanto no computador remoto.
O que isso significa? Bem, isso significa que, se não tiver atualizado os computadores cliente para o Windows Vista (digamos que não!) ou os servidores para o Windows Server 2003 R2 ou o Windows Server 2008, você não achará o WinRM tão útil assim, pelo menos não agora. No entanto, talvez seja desnecessário dizer que esse não deve ser o caso amanhã. (E, é claro, presumindo-se que o firewall permita, sempre é possível usar o WMI e DCOM para gerenciar computadores remotos.)

Retornando todas as propriedades e instâncias de uma classe
Mas quem se importa com limitações e avisos de isenção de responsabilidade, certo? Em lugar dessa confusão toda, vejamos se conseguimos mostrar como escrever um script capaz de usufruir o WinRM. Coincidentemente, acabamos de criar um pequeno script simples que, usando o protocolo HTTP e a porta 80, se conecta a um computador chamado atl-fs-01.fabrikam.com e, em seguida, retorna informações completas sobre todos os serviços instalados no computador. Consulte a Figura 1 para ver o script em pleno funcionamento.
Figure 1 Componentes de projeto do Silverlight (Close Figure 1)

Arquivo | Descrição
CreateSilverlight.js | Este é um script JScript (em sua versão inicial, o Silverlight só dá suporte a scripts JScript) usado para especificar as configurações iniciais do Silverlight, inclusive o arquivo XAML para configurar a interface do usuário e os objetos gráficos.
SampleProject.js | Este é apenas um arquivo em branco no qual é possível agregar funções JScript.
Silverlight.js | O arquivo é usado para inicializar o controle Silverlight.
SampleProject.html | É onde ocorre toda a diversão. SampleProject.html é apenas um arquivo HTML que inclui códigos para a leitura em três arquivos .js. Ele também inclui um código para criar instâncias do controle Silverlight.
SampleProject.xaml | E para que serve isso? Para saber, você precisará voltar ao texto principal desta coluna.
Figure 1 Listando serviços em um computador remoto (Close Figure 1)
strComputer = "atl-fs-01.fabrikam.com"

Set objWRM = CreateObject("WSMan.Automation")
Set objSession = objWRM.CreateSession("http://" & strComputer)

strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"

Set objResponse = objSession.Enumerate(strResource)

Do Until objResponse.AtEndOfStream
    DisplayOutput(objResponse.ReadItem)
Loop

Sub DisplayOutput(strWinRMXml)
    Set xmlFile = CreateObject("MSXml2.DOMDocument.3.0")
    Set xslFile = CreateObject("MSXml2.DOMDocument.3.0")
    xmlFile.LoadXml(strWinRMXml)
    xslFile.Load("WsmTxt.xsl")
    Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub
Como você pode ver, começamos atribuindo o nome DNS do computador (atl-fs-01.fabrikam.com) a uma variável chamada strComputer. Também poderíamos criar a conexão usando o endereço IP do computador (ou até mesmo o endereço IPv6). Por exemplo:
strComputer = "192.168.1.1"
Depois de atribuirmos um valor a strComputer, nós criamos uma instância do objeto WSMan.Automation e chamamos o método CreateSession para se conectar ao computador remoto, neste caso, usando o protocolo HTTP (exatamente como dissemos que faríamos):
Set objSession = objWRM.CreateSession _
    ("http://" & strComputer)
Como observamos, queremos retornar informações sobre os serviços instalados no computador remoto. Além disso e, pelo menos para esse primeiro exemplo, queremos informações sobre todas as propriedades de todos os serviços. O que tudo isso significa? Isso significa que precisamos especificar um URI que nos ligue à classe Win32_Service do computador remoto:
strResource = _
  "http://schemas.microsoft.com" & _
  "/wbem/wsman/1/wmi/root/cimv2" & _
  "/Win32_Service"
Certo, não se trata do melhor URI que você já viu. (Mas, pensando bem, não sabemos se nós já vimos algum bom URI.) Porém, felizmente, grande parte do URI é clichê; tudo com o que você precisa se preocupar é o caminho do WMI bem no final:
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service
Isso deve ser bem simples. E se você quisesse se conectar à classe root/cimv2/Win32_Process? Aí, bastaria modificar o caminho do URI de acordo:
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Process
Interessado na classe root/default/SystemRestore? Bem, mais uma vez, basta modificar a classe do URI, tomando cuidado para especificar o namespace padrão (e não cimv2):
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/SystemRestore
E assim por diante... Também é um pouco constrangedor que você precise incluir a parte http://schemas.microsoft.com/wbem/wsman/1/wmi do URI, mas...
Neste ponto, estamos prontos para obter alguns dados. Para isso, basta chamarmos o método Enumerate, passando a variável strResource como sendo o único parâmetro do método:
Set objResponse = _
  objSession.Enumerate(strResource)
Essa linha de código realmente preencherá objResponse com as informações sobre os serviços instalados no computador atl-fs-01? Pode apostar que sim. No entanto, diferentemente dos scripts WMI padrão, você não obtém uma série de objetos, cada qual com propriedades e métodos de propriedade próprios. Na verdade, você receberá um antigo blob XML grande que se assemelha um pouco ao que vê na Figura 2.
Figure 2 Cores legais (Close Figure 2)
<Canvas
 xmlns="http://schemas.microsoft.com/client/2007"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 Width="800"
 Height="300">

 <Canvas.Background>
 <LinearGradientBrush>
 <GradientStop Color="Blue" Offset="0.0" />
 <GradientStop Color="Black" Offset="1.0" />
 </LinearGradientBrush>
 </Canvas.Background>

</Canvas>
Figure 2 Antigo blob XML grande (Close Figure 2)
<p:Win32_Service xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service" xmlns:ci
m="http://schemas.dmtf.org/wbem/wscim/1/common" xsi:type="p:Win32_Service_Type"
xml:lang="en-US"><p:AcceptPause>false</p:AcceptPause><p:AcceptStop>false</p:Acce
ptStop><p:Caption>Windows Media Center Service Launcher</p:Caption><p:CheckPoint
>0</p:CheckPoint><p:CreationClassName>Win32_Service</p:CreationClassName><p:Desc
ription>Starts Windows Media Center Scheduler and Windows Media Center Receiver
services at startup if TV is enabled within Windows Media Center.</p:Description
><p:DesktopInteract>false</p:DesktopInteract><p:DisplayName>Windows Media Center
Caso você seja um especialista em XML, não há segredos; qualquer um que esteja familiarizado com XML deve ser capaz de analisar e processar essas informações sem muitos problemas (ainda que, nas palavras do SDK do WinRM, elas não estejam no "formato legível"). Mas e se você não for um especialista em XML? Nesse caso, há duas opções. Uma é esperar o próximo mês, quando mostraremos alguns truques sobre como trabalhar com XML do WinRM. E a segunda é fazer o que fizemos em nosso script de exemplo: empregar a transformação XSL instalada com o WinRM.

Transforma-o-quê XSL?
Transformação XSL não é nada além de um modelo que descreve como um arquivo XML deve ser exibido. Uma abordagem completa dos arquivos XSL vai além do que podemos fazer na coluna deste mês – por isso, mesmo uma análise superficial deles ultrapassa até onde é possível ir aqui. Por essa razão, nós não tentaremos explicar como o WsmTxt.xsl (o nome da transformação interna) realmente funciona. Na verdade, nós apenas mostraremos como é possível usá-la no script.
Quando você chama o método Enumerate, o WinRM envia um fluxo de dados XML. A forma mais fácil de trabalhar com esses dados é definindo um loop Do Until que continue em execução até que você chegue ao final do fluxo de dados. É isso o que fazemos aqui:
Do Until objResponse.AtEndOfStream
    DisplayOutput(objResponse.ReadItem)
Loop
Como é possível ver, dentro do nosso loop nós chamamos uma sub-rotina DisplayOutput. Quando chamamos essa sub-rotina, passamos o valor do método ReadItem do fluxo como sendo o parâmetro da sub-rotina. (Como toda essa abordagem implica, o fluxo XML é enviado novamente em partes separadas, e não em um blob de dados grande. Já o nosso script lê os dados XML parte por parte, ou um item por vez.)
Enquanto isso, a sub-rotina DisplayOutput é semelhante ao seguinte:
Sub DisplayOutput(strWinRMXml)
  Set xmlFile = _
    CreateObject("MSXml2.DOMDocument.3.0")
  Set xslFile = _
    CreateObject("MSXml2.DOMDocument.3.0")
  xmlFile.LoadXml(strWinRMXml)
  xslFile.Load("WsmTxt.xsl")
  Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub
Resumidamente, começamos criando duas instâncias do objeto MSXml2.DOMDocument.3.0. Carregamos o fluxo de dados XML (strWinRMXML) em um objeto e, em seguida, o arquivo XSL (WsmTxt.xsl) em outro objeto. Neste ponto, podemos chamar o método TransformNode para usar as informações contidas no arquivo XSL a fim de formatar e exibir os dados obtidos do fluxo XML.
Sim, é um pouco confuso mesmo. Mas ao menos a saída (ainda que esteja longe de ser perfeita) fica mais fácil de ser lida (consulte a Figura 3).
Figure 3 Texto de pintura (Close Figure 3)
<TextBlock
 Name="Test"
 FontSize="40"
 FontFamily="Georgia"
 FontWeight="Bold"
 Canvas.Top="20"
 Canvas.Left="20"
 Text="The TechNet Script Center">

 <TextBlock.Foreground>
 <SolidColorBrush Name="test_brush" Color="red"/>
 </TextBlock.Foreground>

</TextBlock>
Figure 3 Uma versão mais organizada do XML (Close Figure 3)
Win32_Service
    AcceptPause = false
    AcceptStop = true
    Caption = User Profile Service
    CheckPoint = 0
    CreationClassName = Win32_Service
    Description = This service is responsible for loading and unloading user profiles. If this service is stopped or disabled, users will no longer be able to successfully logon or logoff, applications may have problems getting to users' data, and components registered to receive profile event notifications will not receive them.
Como dissemos, isso é bom, mas não necessariamente ótimo, o que já é motivo suficiente para conferir a coluna no mês que vem, quando mostraremos algumas formas para que você manipule a saída XML sozinho.

Retornando as instâncias e as propriedades selecionadas de uma classe
Nem é preciso dizer que tudo isso é muito legal, exceto por um aspecto: isso talvez não reflita totalmente a maneira com que você costuma fazer o seu trabalho. Sim, haverá momentos em que você desejará retornar todas as propriedades de todas as instâncias de uma classe; porém, também haverá situações (talvez em maior número) em que você desejará retornar apenas as propriedades ou as instâncias selecionadas de uma classe. Por exemplo, talvez você queira retornar apenas as informações sobre os serviços em execução, algo que costuma fazer em um script WMI convencional usando um código semelhante a este:
Set colItems = objWMIService.ExecQuery _
  ("Select * From Win32_Service " & _
   "Where State = 'Running'")
Isso é bom. Mas como você modificará a cadeia de caracteres Resource para que ela seja o equivalente a isso?
Bem, honestamente, você não modificará a cadeia de caracteres Resource para que ela seja o equivalente à instrução ExecQuery. Certamente será preciso modificar a cadeia Resource, mas você também precisará fazer outras coisas.
Com isso em mente, vejamos a Figura 4. Trata-se de um script WinRM que retorna informações sobre os serviços em execução em um computador (e não todos os serviços instalados nele).
Figure 4 Truques de TextBlock (Close Figure 4)
<TextBlock.Triggers>
 <EventTrigger RoutedEvent=
     "TextBlock.Loaded">
 <BeginStoryboard>
 <Storyboard>
 <DoubleAnimation
 Storyboard.TargetName="Test"
 Storyboard.TargetProperty="Opacity"
 From="0.0" To="1.0"
 Duration="0:0:5" />
 </Storyboard>
 </BeginStoryboard>
 </EventTrigger>
</TextBlock.Triggers>
Figure 4 Descobrindo os serviços em execução (Close Figure 4)
strComputer = "atl-fs-01.fabrikam.com"

Set objWRM = CreateObject("WSMan.Automation")
Set objSession = objWRM.CreateSession("http://" & strComputer)

strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
strFilter = "Select * From Win32_Service Where State = 'Running'"
strDialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"

Set objResponse = objSession.Enumerate(strResource, strFilter, strDialect)

Do Until objResponse.AtEndOfStream
    DisplayOutput(objResponse.ReadItem)
Loop

Sub DisplayOutput(strWinRMXml)
    Set xmlFile = CreateObject("MSXml2.DOMDocument.3.0")
    Set xslFile = CreateObject("MSXml2.DOMDocument.3.0")
    xmlFile.LoadXml(strWinRMXml)
    xslFile.Load("WsmTxt.xsl")
    Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub
À primeira vista, ele pode parecer totalmente idêntico ao primeiro script WinRM que mostramos a você; no entanto, há algumas diferenças muito importantes. Para ter uma idéia, observe o valor que atribuímos à cadeia de caracteres Resource:
strResource = _
  "http://schemas.microsoft.com" & _
  "/wbem/wsman/1/wmi/root/cimv2/*"
Observe que, ao escrever uma consulta filtrada, nós não especificamos o nome real da classe (Win32_Service) com a qual queremos trabalhar; na verdade, nós apenas nos conectamos ao namespace (root/cimv2) no qual ela reside. Basta se lembrar de acrescentar o asterisco (*) no final. Se você não fizer isso, haverá falha no script com a mensagem "... o nome da classe deve ser '*' (star)", o que quer dizer apenas ser preciso tornar * o nome da classe.
Além disso, também precisamos definir Filter e Dialect:
strFilter = _
  "Select * From Win32_Service " & _
  "Where State = 'Running'"
strDialect = _
  "http://schemas.microsoft.com" & _
  "/wbem/wsman/1/WQL"
Filter deve ser fácil o suficiente para adivinhar; é onde colocamos a nossa consulta WQL (Windows Management Instrumentation Query Language) ("Select * From Win32_Service Where State = 'Running'"). Já Dialect é a linguagem de consulta usada durante a criação de Filter. No momento, só há uma linguagem de consulta permitida: WQL. No entanto, Dialect deve ser especificado, ou haverá falha no script com a observação de que "não há suporte para ... o dialeto de filtro".
Observação: curiosamente, a mensagem de erro sugere que você remova Dialect ao chamar o método Enumerate. Essa é uma recomendação que você não deve seguir. Durante uma consulta filtrada, Dialect deve ser especificado e ser WQL. Ponto final.
A única outra alteração que precisamos fazer ocorre quando chamamos o método Enumerate. Neste ponto, precisamos passar as variáveis que representam Filter (strFilter) e Dialect (strDialect), bem como a variável que representa Resource (strResource):
Set objResponse = _
  objSession.Enumerate _
  (strResource, strFilter, strDialect)
Faça uma tentativa e veja o que acontece.
Agora, que tal retornar apenas as propriedades selecionadas de uma classe? Por exemplo, vamos supor que você esteja interessado em retornar apenas Name e DisplayName de todos os serviços em execução em um computador. O que fazer?
Bem, nesse caso, você pode tentar manipular o XML para que apenas Name e DisplayName sejam exibidos. Embora possível, isso é certamente um pouco confuso. Uma forma mais fácil de fazer isso é especificar apenas essas propriedades durante a atribuição de Filter.
strFilter = _
  "Select Name, DisplayName " & _
  "From Win32_Service " & _
  "Where State = 'Running'"
Faça isso, e tudo o que você terá são Name e DisplayName de cada serviço, assim:
XmlFragment
    DisplayName = Windows Event Log
    Name = EventLog

XmlFragment
    DisplayName = COM+ Event System
    Name = EventSystem
Tudo bem, a formatação está muito simples. (Qual é o problema com esse XmlFragment?) Mais uma razão para conferir a coluna do mês que vem.

Aguarde
Com um pouco de sorte, isso deve ser o suficiente para que você seja apresentado ao maravilhoso e selvagem mundo do WinRM. É claro que não poderíamos encerrar uma coluna sobre o WinRM sem mencionar os "necrotérios de espera" que já foram muito comuns em toda a Alemanha. Nas cidades com necrotérios de espera, os cadáveres não eram enterrados imediatamente. Na verdade, eles eram colocados em salas aquecidas com vários barbantes e fios amarrados aos dedos de suas mãos e de seus pés. A idéia, obviamente, era para que, ao menor sinal de movimento, um alarme fosse disparado e fosse prestada ajuda imediata. Os corpos eram mantidos nesses necrotérios até que ficasse evidente que não havia mais esperanças para essas pessoas e que elas jamais voltariam a fazer algum movimento.
Agora que você tocou no assunto, um necrotério de espera é muito semelhante a ser integrado à Equipe de Scripts, não é? Claro, ninguém jamais ressuscitou em nenhum dos necrotérios de espera, mas as pessoas atribuídas à Equipe de Scripts...

O desafio do script do Dr. Scripto
Em junho de 2007, a Equipe de Scripts participou da conferência Tech•Ed 2007 em Orlando, na Flórida. Não contentes em apenas participar da conferência, decidimos nos divertir um pouco. Mais ainda, achamos que todos também deveriam se divertir um pouco. Com isso em mente, nós levamos o Dr. Scripto's Fun Book, um livreto cheio de quebra-cabeças relacionados a scripts e várias outras informações. Nós nos juntamos à TechNet Magazine – o que significa que pedimos a eles um cantinho do seu estande no Expo Hall – e distribuímos Fun Books para todos os que passavam pelo local.
Como aconteceu, o Fun Book foi um item bastante popular (talvez não tanto quanto os bonecos bobblehead do Dr. Scripto, mas chegou perto). O pessoal bacana e esperto da TechNet Magazine, vendo mais uma chance de aproveitar o sucesso da Equipe de Scripts (já que a própria equipe jamais pareceu ser capaz de aproveitar seu próprio sucesso), pediu para que nós criássemos alguns quebra-cabeças para eles. Quando Jean Ross, da Equipe de Scripts, se virou apenas por alguns instantes, Greg Stemp, também da Equipe, disse: "mas é claro que criaremos!" E aqui vamos nós: o desafio do script do Dr. Scripto. Aproveite.

Scripts para soltar
Nesse quebra-cabeça, todas as letras na seção superior estão embaralhadas e formam um script (em VBScript). Mas não se preocupe, pois você não precisa desembaralhar tudo; na verdade, basta desembaralhar uma coluna por vez. As letras em cada coluna da seção superior preenchem os espaços vazios na mesma coluna da seção inferior. Por exemplo:
Como você pode ver, na coluna 1 nós temos as letras S, C e T. Essas três letras se encaixam na grade abaixo em alguma ordem desconhecida. Mas quando todas elas são soltas na ordem correta, a grade inferior – vista da esquerda para direita – se torna algo lógico. Veja a solução:
É possível ver que as letras S, C e T da coluna 1 são movidas na ordem T, S e C. E elas são as primeiras letras das palavras que formam "The Script Center". O quebra-cabeça real é um pouco mais difícil porque, bem, é maior e por conta do resultado final ser um script completo.
Dica: o script final começa com um caminho completo para um arquivo, é analisado e exibe apenas o nome do arquivo.
Boa sorte!

O desafio do script do Dr. Scripto
Resposta: Scripts para soltar, novembro de 2007
Neste quebra-cabeça, você precisa soltar os caracteres de uma coluna nas caixas corretas abaixo para que as linhas inferiores criem um script. Eis aqui o script autônomo:
name = "C:\Scripts\Test.txt"
arr = Split(name, "\")
index = Ubound(arr)
Wscript.Echo "Filename: " _
& arr(index)
Ele fica assim na grade do quebra-cabeça:

A Equipe de Scripts da Microsoft trabalha para a — bem, é empregada da — Microsoft. Quando não está jogando/treinando/assistindo beisebol (e diversas outras atividades), ela administra o Script Center da TechNet. Confira no site www.scriptingguys.com.


 Security Watch: Acesso seguro em qualquer lugar
Security Watch
Acesso seguro em qualquer lugar
John Morello

Uma das tendências evidentes da tecnologia atual é a existência de uma força de trabalho cada vez mais conectada e móvel. Muitas organizações têm pessoal que opera de escritórios distantes, trabalha à distância ou costuma viajar para visitar clientes. A autonomia desses usuários para acessar facilmente aplicativos e dados, independente do local, torna-os mais
produtivos. Entretanto, até recentemente, a possibilidade de acesso remoto seguro costumava implicar a instalação de software de cliente, a digitação de comandos ocultos e a demora na conexão.
Com o passar dos anos, surgiram várias abordagens que transformaram o acesso remoto em uma tecnologia mais simples e mais acessível. Por exemplo, o OWA (Outlook® Web Access) oferece uma forma simples, baseada em navegador, para usuários acessarem e-mails, calendário e contatos, sem as complexidades de uma VPN (Rede Virtual Privada) completa de Camada 3. Apesar de tecnologias como o OWA oferecerem uma parte importante de uma solução de "acesso em qualquer lugar", a maioria das organizações possuem vários aplicativos-chave que não permitem o mesmo tipo de experiência de navegador integrado. Nesses casos, soluções como os Serviços de Terminal oferecem um método eficaz de conceder aos usuários o acesso aos seus aplicativos de qualquer lugar.
No Windows Server® 2008, a Microsoft aperfeiçoou o recurso "pronto para usar" definido nos Serviços de Terminal. Os Serviços de Terminal agora incluem uma janela perfeita, o recurso de publicação por aplicativo chamado RemoteApp, a capacidade do driver de impressão universal no EasyPrint e um portal baseado em navegador chamado TS Web Access. Adicionalmente, e essencial para o cenário de acesso em qualquer lugar, o Windows Server 2008 também inclui o componente TS Gateway que oferece o encapsulamento SSL para o Protocolo RDP, permitindo que ele atravesse firewalls de forma fácil e segura, e dispositivos NAT (Conversão de endereços de rede). O recurso TS Gateway também é integrado a outra nova tecnologia no Windows Server 2008, a NAP (Proteção contra Acesso à Rede), para oferecer inspeção de integridade ao ponto de extremidade do cliente. A combinação de todos esses componentes levam as organizações a criar soluções que permitem aos usuários acessar seus aplicativos e dados de qualquer lugar com facilidade e segurança.
Esta coluna destaca os aspectos da rede e do design de segurança em uma solução de acesso em qualquer lugar, em vez de fornecer detalhes sobre o gerenciamento de componentes de Serviços de Terminal. Descreverei os métodos e práticas recomendadas para criar uma solução com base em tecnologia incluída no Windows Server 2008.

Qual é o problema de redes virtuais privadas de Camada 3?
Ao pensar em uma nova tecnologia, é importante compreender suas vantagens com base nas abordagens atuais; assim, você consegue avaliar com precisão o valor do novo modelo. No caso da VPN de Camada 3, em geral há dois problemas principais a serem resolvidos: segurança e facilidade de uso.
Pode parecer insensato listar a segurança como um problema em meio a tantas VPNs de Camada 3. Afinal, a VPN não tem por objetivo oferecer um encapsulamento seguro através da Internet? Para compreender melhor isso, vamos pensar no que você considera como possíveis ameaças da VPN. Isso não significa que dados transmitidos por essas VPNs correm o risco de interceptação ou violação; a maioria das VPNs de Camada 3 apresentam excelente criptografia do fluxo de dados. Você deve pensar nas ameaças oferecidas por máquinas remotas que têm total acesso a "todas as portas, todos os protocolos" da rede da sua empresa. O problema não são os fluxos de dados que VPNs de Camada 3 criptografam e transportam na rede. Os clientes remotos que se conectam a esses encapsulamentos é que podem colocar em risco sua rede interna. Lembre-se de que a maioria das empresas afetadas por malware como Slammer ou Blaster não foram infectadas por máquinas na sua rede interna, nem por hackers que atravessam seus firewalls. Em vez disso, a infestação ocorreu via trabalhadores remotos que se conectaram às suas redes em VPNs de máquinas infectadas. Quando essas VPNs criam conexões de Camada 3, totalmente roteadas, a máquina remota costuma ter o mesmo acesso (bom e ruim) a recursos internos que uma máquina localizada no chão do centro de dados.
Além disso, a operação de VPNs de Camada 3 costuma ser cara pois elas exigem instalação e configuração de software em máquinas que não são gerenciadas pelo grupo de TI de uma empresa. Por exemplo, a instalação de um cliente VPN na máquina principal de um usuário pode envolver a criação de pacotes de instalação personalizados, orientações detalhadas sobre instalação para o usuário e solução de conflitos em aplicativos na máquina do usuário. Além disso, custos de gerenciamento podem ser altos quando é necessário implantar novas versões do cliente ou quando há alteração nos dados de configuração (como a adição de um novo ponto de extremidade de VPN). Usuários costumam encarar o trabalho com esta VPN como uma experiência não-intuitiva. Como ela só oferece conexão de Camada 3, os aplicativos comerciais do usuário e seus dados não são facilmente acessáveis e visíveis.

Solução de problemas em Serviços de Terminal
Serviços de Terminal, e outras tecnologias VPN de Camada 7 ou de camada de aplicativo, resolvem esses dois problemas permitindo um maior controle sobre os recursos e protocolos que usuários podem acessar e tornando a experiência do usuário final bem mais simples e intuitiva do que antes.
Do ponto de vista da segurança, o recurso diferenciador mais importante entre uma abordagem VPN de Camada 3 e outra que utiliza Serviços de Terminal e TS Gateway é que a conexão à rede interna não é um pipeline totalmente aberto. Para ser mais específico, uma abordagem de Camada 3 cria uma interface virtual na máquina local com capacidade de roteamento total para a rede interna. Já a abordagem TS Gateway só permite que pacotes baseados em RDP atinjam a rede interna. Então, a superfície geral de ataque é muito reduzida e controles mais granulares podem ser aplicados dentro do RDP. Por exemplo, apesar de o RDP fornecer suporte original para redirecionamento de unidade, empresas podem configurar seus TS Gateways para integrá-los à NAP e não permitir a utilização desse recurso, a menos que a máquina remota possa provar que seu software antivírus estava atualizado.
Para usuários finais, a diferença mais óbvia entre uma VPN de Camada 3 e uma abordagem baseada em Serviços de Terminal é uma configuração bem mais simples (em geral, não há uma configuração), além do acesso mais fácil e intuitivo aos seus aplicativos e dados. Como o cliente de Conexão de Área de Trabalho Remota é incorporado ao Windows (e mantido atualizado através de tecnologias de serviço normal como o Windows® Update), em geral, não há software de cliente a ser instalado. Além disso, ao alavancar o TS Web Access, usuários podem visitar uma única URL para localizar seus aplicativos e dados. Basta clicar no aplicativo apropriado para iniciar o TS Gateway, encapsulando com segurança a conexão à Internet. Dessa forma, o aplicativo é enviado diretamente para a área de trabalho do usuário. Ou seja, o aplicativo terá a aparência e o comportamento de um aplicativo instalado localmente, inclusive com a capacidade de copiar, colar e minimizar a barra de tarefas. Ao tornar aplicativos e dados mais detectáveis e a configuração instantânea, uma abordagem baseada em Servidores de Terminal para acesso remoto consegue de fato aumentar a satisfação do cliente e reduzir custos de suporte.

Opções de arquitetura de rede
Há duas abordagens básicas de design de rede que podem ser utilizadas para disponibilizar um servidor TS Gateway na Internet. A primeira encaixa o TS Gateway na rede de perímetro entre dois firewalls de Camada 3/4. A segunda mantém o TS Gateway na rede interna e utiliza um firewall na camada do aplicativo (como Microsoft® ISA Server, Microsoft Intelligent Application Gateway ou diversas soluções de terceiros) para trabalhar sobre a rede de perímetro e inspecionar quadros HTTPS de entrada. Somente após a análise dessas sessões de entrada é que os pacotes são encaminhados ao servidor TS Gateway interno.
Se uma empresa só possui firewalls de Camada 3/4 com inspeção básica de pacote com monitoração de estado, o dispositivo TS Gateway pode ser colocado diretamente na rede de perímetro, conforme mostrado na Figura 1. Neste projeto, o firewall da Internet restringe a conectividade do TS Gateway para permitir que apenas tráfego HTTPS da Internet o alcance. Contudo, o firewall não inspeciona a camada de aplicativo desse tráfego; ele simplesmente encaminha o tráfego para o TS Gateway. Em seguida, o servidor TS Gateway extrai os quadros RDP dos pacotes HTTPS e os encaminha ao servidor back-end adequado. Esses servidores back-end costumam estar separados da rede de perímetro por um segundo firewall, configurado para permitir que quadros RDP do TS Gateway alcancem os servidores internos adequados.
Figura 1 Com um firewall de Camada 3/4, o TS Gateway é colocado na rede de perímetro
Figura 1 Com um firewall de Camada 3/4, o TS Gateway é colocado na rede de perímetro
Apesar de este cenário ser totalmente suportado e útil para várias empresas, ele possui duas grandes desvantagens. Primeiro, como o TS Gateway recebe tráfego diretamente da Internet, ele está exposto a um nível de risco relativamente maior de pessoas externas mal-intencionadas. Essas pessoas mal-intencionadas podem tentar atacar o gateway através da sessão SSL e, como o firewall front-end só verifica os cabeçalhos, e não as cargas, essas sessões alcançam o gateway. Isso não quer dizer que o TS Gateway é um componente vulnerável; ele passou pelo mesmo projeto e teste rigorosos de segurança que os demais produtos do Windows Server 2008. Entretanto, seu risco relativo é maior neste cenário simplesmente porque ele manipula tráfego não filtrado diretamente da Internet. A segunda grande desvantagem é o aumento na quantidade de tráfego que deve ser permitido entre o gateway e o firewall back-end. Para autenticar usuários, o TS Gateway precisa se comunicar com o Active Directory®. Para permitir essa comunicação, o firewall back-end deve ter exceções para uma maior variedade de portas e protocolos, e não apenas para o HTTPS. Esse nível maior de permissão de comunicação também representa um aumento de risco relativo do projeto.
Uma melhor abordagem para expor um TS Gateway à Internet é a utilização de um firewall de camada de aplicativo (Camada 7) para tratar de sessões HTTPS de entrada antes de elas alcançarem o gateway (ver Figura 2). Neste projeto, ainda podem existir os firewalls de Camada 3/4 tradicionais que constituem uma rede de perímetro. Em vez do TS Gateway, encontramos o firewall Camada 7 no perímetro. Quando o tráfego alcança o firewall de saída, esse firewall filtra tudo, exceto quadros HTTPS e, depois, encaminha esses quadros ao firewall camada 7. O firewall Camada 7 encerra a sessão SSL, inspeciona o conteúdo criptografado do fluxo, bloqueia o tráfego mal-intencionado e, depois, envia os quadros RDP através do firewall back-end para o TS Gateway. Observe que, se você quiser, o firewall Camada 7 também poderá criptografar novamente os quadros antes de enviá-los ao TS Gateway. Talvez esta abordagem não seja necessária na rede privada de uma empresa, mas ela pode ser muito útil em centros de dados hospedados ou redes compartilhadas.
Figura 2 Utilização de um firewall de camada de aplicativo com um dispositivo TS Gateway
Figura 2 Utilização de um firewall de camada de aplicativo com um dispositivo TS Gateway
Este projeto evita as duas desvantagens da solução anterior. Como o servidor TS Gateway só recebe tráfego inspecionado pelo firewall Camada 7, há menos risco de ataques pela Internet. O firewall Camada 7 deve filtrar esses ataques e enviar apenas tráfego limpo e inspecionado para o gateway.
A segunda grande vantagem dessa solução é o posicionamento do gateway em relação à rede interna. Como o tráfego proveniente da Internet é inspecionado pelo firewall Camada 7 antes de chegar ao gateway, ele pode permanecer na rede interna e ter acesso direto aos controladores de domínio para autenticação e hosts RDP para sessões de usuários. Além disso, o firewall back-end pode ter muito mais políticas restritivas. Em vez de permitir o tráfego de autenticação de RDP e diretório, ele simplesmente precisa permitir sessões RDP do firewall Camada 7 para o TS Gateway. A utilização de um firewall Camada 7 para realizar um front-end de implantação do TS Gateway oferece uma solução mais segura e mais fácil de gerenciar, dispensando a reformulação da rede de perímetro existente.

Integração NAP
Recursos dos Serviços de Terminal
  • Serviços de Terminal no Windows Server 2008
  • TechNet Forum sobre Serviços de Terminal do Windows Server 2008
  • Blog da equipe de Serviços de Terminal
  • Microsoft Intelligent Application Gateway 2007
  • NAP (Proteção de Acesso à Rede) para Windows Server 2008
  • Blog da NAP (Proteção de Acesso à Rede)
  • Guias passo a passo do Windows Server 2008 Beta 3

Apesar de um bom projeto de perímetro ser essencial para a solução de acesso em qualquer lugar, também é importante garantir a conformidade e a segurança dos dispositivos de ponto de extremidade. Como o RDP é um protocolo sofisticado, que permite vários tipos de redirecionamento de dispositivos, tais como sessões e impressoras RDP, é fundamental que os clientes conectados à sua solução atendam às políticas de segurança da sua empresa. Por exemplo, mesmo com uma topologia de rede segura, baseada em práticas recomendadas, como aquelas discutidas anteriormente, um usuário final conectado a um servidor de terminal de uma máquina sem segurança ainda pode acabar perdendo dados confidenciais ou tentando incluir arquivos mal-intencionados no servidor de terminal. Apesar de o nível de conectividade e os danos em potencial serem bem menores do que se o usuário estivesse se conectando através de uma VPN de Camada 3, convém gerenciar o risco de perda de dados e garantir a conformidade às políticas de TI.
A NAP (Proteção de Acesso à Rede) é uma nova tecnologia do Windows Server 2008 que permite controlar não apenas quem pode se conectar à rede, mas também os tipos de sistemas através dos quais essas pessoas podem fazer a conexão. Por exemplo, você pode utilizar a NAP para garantir que apenas máquinas com firewalls em execução e antivírus atualizado se conectem à rede. A NAP é uma solução extensível que abrange não apenas a rede interna da empresa, mas também usuários remotos, incluindo aqueles que se conectam através de VPNs de Camada 3 e os que se conectam através do TS Gateway. Ao integrar a NAP ao seu projeto de TS Gateway, você pode garantir que apenas os sistemas que atendam às políticas de segurança possam conectá-lo. Para obter mais detalhes sobre a NAP, consulte a coluna Security Watch na edição de maio de 2007 da TechNet Magazine, disponível online em technetmagazine.com/issues/2007/05/SecurityWatch.
A integração da NAP na implantação de um TS Gateway é um processo simples que envolve um único serviço adicional no design. Este serviço, o NPS (servidor de política de rede), pode ser instalado no próprio servidor TS Gateway ou em uma instância separada do sistema operacional. O TS Gateway MMC é utilizado para criar CAPs (Diretivas de Autorização de Conexão) que definem os recursos RDP permitidos para determinado estado de saúde. O servidor TS Gateway é configurado para verificar o NPS a cada nova tentativa de conexão e para encaminhar a SoH (Declaração de Integridade) para essa conexão ao NPS. O NPS compara a SoH às políticas e informa ao TS Gateway se a conexão deve ou não ser permitida, com base na integridade do cliente.
Conforme ilustrado na Figura 3, se um sistema incompatível não está configurado para utilizar o Windows Update, mas a política de segurança da empresa exige a habilitação de atualizações automáticas, quando um usuário tenta se conectar ao TS Gateway, sua máquina gera e encaminha uma SoH. Essa SoH informa algo como: "Meu firewall está ativado e meu antivírus está atualizado, mas as atualizações automáticas estão desativadas." O TS Gateway simplesmente encaminha essa SoH ao NPS (o TS Gateway não tem lógica para decodificar por si só a SoH) e o NPS compara a SoH às políticas definidas por seu administrador. Como as atualizações automáticas estão desativadas, o NPS determina que a conexão seguiu a política "incompatível" e informa ao TS Gateway que ele não deve permitir a conexão. O TS Gateway descarta a conexão e notifica ao usuário que a máquina não atendeu às políticas de segurança da empresa. O usuário adota a medida corretiva necessária (no caso, ativa as atualizações automáticas) e faz nova tentativa de conexão. Como resultado, é gerada uma nova SoH, o NPS determina a conformidade e o TS Gateway permite que a conexão prossiga.
Figura 3 Apenas sistemas compatíveis podem se conectar
Figura 3 Apenas sistemas compatíveis podem se conectar

Conclusão
O Windows Server 2008 inclui os fundamentos para uma solução de acesso seguro em qualquer lugar. O TS Gateway apresenta um método seguro para encapsular sessões de áreas de trabalho remotas através da Internet e oferece às empresas uma ótima opção de integração às redes existentes. As opções incluem o posicionamento do TS Gateway diretamente na rede de perímetro ou a utilização de um firewall de Camada 7, como o ISA Server ou o Intelligent Application Gateway, na sua frente. A NAP pode ser associada ao TS Gateway para acrescentar à solução recursos de inspeção de integridade do ponto de extremidade. As verificações de ponto de extremidade permitem que empresas garantam não apenas que conexões remotas sejam geradas por usuários válidos, mas também que elas sejam geradas por máquinas que seguem as políticas de segurança da TI. Quando associadas, essas tecnologias oferecem às empresas recursos de acesso remoto com operação mais segura e mais eficaz, e isso permite aos usuários finais ter experiências melhores. Saiba mais sobre o assunto explorando os sites listados na barra lateral "Recursos de Serviços de Terminal".

John Morelloestá na Microsoft desde 2000. Como consultor sênior, criou soluções de segurança para empresas da lista Fortune 100 e para agências federais civis e militares. Atualmente, ele é gerente de programas sênior do grupo Windows Server e trabalha em tecnologias de acesso em qualquer lugar. Leia o blog da equipe dele em blogs.technet.com/WinCAT.


 Os arquivos da &#225;rea de trabalho: A verdade sobre a desfragmenta&#231;&#227;o
Os arquivos da área de trabalho
A verdade sobre a desfragmentação
Wes Miller

Enquanto houver discos rígidos, haverá fragmentação de disco. Para manter o bom funcionamento dos seus sistemas, procure desfragmentá-los regularmente. Isso o faz lembrar daquela conversa com seu dentista sobre a importância do uso do fio dental? Pois é, a desfragmentação também deve fazer parte da sua rotina.
A menos que seu computador esteja jogado em um canto qualquer e desligado, ele ficará cada vez mais fragmentado. Daqui a pouco, mostrarei como isso ocorre, mas primeiro vamos conhecer um pouco da história da desfragmentação.

A desfragmentação e o Windows NT
O Windows NT® não tinha um utilitário interno de desfragmentação e, na época, acreditava-se que ele não era necessário. Afinal, o NTFS foi criado visando a otimização, e ele não foi tão afetado pela fragmentação quanto um volume semelhante de FAT. Mas, com o tempo, até mesmo o desempenho do NTFS pode ser afetado devido ao posicionamento de arquivos aquém do ideal. Isso deu origem a um mercado próspero de ferramentas de desfragmentação de terceiros. Um dos produtos mais conhecidos entre os profissionais de TI era o Executive Software, da Diskeeper (hoje Diskeeper Corporation). Quando o Windows 2000 incorporou a funcionalidade de desfragmentação, a Microsoft licenciou a tecnologia do Executive Software. A funcionalidade de desfragmentação do Windows® 2000 estava disponível no seu próprio snap-in (dfrg.msc) do MMC (Microsoft® Management Console). Para chamá-lo, bastava clicar em um volume ou executar manualmente o defrag.exe da linha de comando. Apesar de não dispor de uma programação e só ter uma linha de comando restrita, muitos profissionais de TI conseguiam criar scripts funcionais para automatizar a desfragmentação através desta versão interna. O defrag.exe no Windows XP e no Windows Server® 2003 foi um avanço em relação à versão anterior, mas oferecia automatização limitada, ou seja, ainda exigia a criação de um script.
Vários fornecedores, inclusive a Winternals Software (meu empregador anterior), produziam software para atender à demanda de desfragmentação em empresas. A maioria desses produtos funcionavam da mesma forma, com um console centralizado, um agente de algum tipo que reside em sistemas de clientes (às vezes, o tempo todo; outras vezes, apenas sob demanda), e uma estrutura para indicar quando e como ocorre uma tarefa de desfragmentação.
O Windows Vista® segue a tendência de desfragmentação de um único sistema, além de otimizar o desfragmentador e incluir opções como a desfragmentação de pequenos fragmentos de arquivos (64MB ou menor). Isso agiliza a desfragmentação, mas deixa vários fragmentos de arquivos maiores no disco. O próprio mecanismo de desfragmentação é mais poderoso no Windows Vista e no Windows Server 2008 do que nas versões anteriores do Windows. Ele também é executado automaticamente e não requer programação manual. Mas se você comanda uma empresa de grande porte ou deseja otimizar seus sistemas de uma forma que, por padrão, a desfragmentação não oferece, talvez precise adquirir licença de um software de terceiros. Como nas versões anteriores, talvez você encontre dificuldade para desfragmentar um volume em que a compactação NTFS esteja ativada e tenha sido amplamente utilizada. Nesse caso, uma ferramenta de terceiros também pode ser útil.

Como ocorre a fragmentação?
A fragmentação ocorre porque os arquivos mudam com o tempo. O ideal é que os arquivos do próprio Windows não mudem. Ou, pelo menos, que eles não mudem tantas vezes - apenas com as instalações do pacote de serviços e das atualizações de software. Caso contrário, os arquivos do sistema permanecem relativamente constantes. Após uma grande atualização, como a instalação de um pacote de serviços, a fragmentação ocorre naturalmente pois, em geral, não é possível substituir o local dos arquivos atualizados em disco. E talvez seja necessário reinicializar a máquina para que eles sejam atualizados, o que resulta em mais fragmentação.
Arquivos e dados do usuário (e o registro do Windows), por outro lado, estão sujeitos a constantes mudanças. Ações como ler, gravar, editar, copiar e excluir arquivos o tempo todo levam a um grande volume de fragmentação, especialmente quando a unidade atinge sua capacidade máxima.
Para visualizar isso, imagine um disco bem organizado, em que arquivos ocupem espaço de forma contígua, sem espaço entre eles. Digamos que você abra um arquivo, edite-o e, depois, tente salvá-lo. Se o arquivo ficar maior, o Windows precisará salvar o arquivo inteiro em outro local do disco (digamos, após o arquivo N) ou salvar os novos dados após o arquivo N. Isso significa que o arquivo 2 agora está fragmentado. Se você editar o arquivo 1, terá dois arquivos fragmentados. Se repetir esse procedimento várias vezes, seu sistema acabará fragmentado demais e a unidade precisará fazer uma busca em diversos locais para acessar um único arquivo. Com arquivos de bancos de dados grandes, arquivos de disco rígido extensos para tecnologias de computação virtual, e grandes volumes de vídeo e áudio armazenados em média no disco, é normal que ocorra a fragmentação. É claro que o tamanho cada vez maior dos discos rígidos atuais reduz o problema de fragmentação, mas não o elimina completamente. E laptops mais antigos, com discos rígidos menores, terão capacidade de resposta cada vez menor, inicialização cada vez mais lenta, e demorarão mais para abrir e salvar arquivos.
A principal preocupação não é necessariamente o nível de fragmentação do sistema, mas sim o nível de fragmentação de cada arquivo. Desde o aparecimento dos primeiros desfragmentadores de disco, com visuais multicoloridos, usuários pensaram: "Gostaria de ter uma barra sólida de cores". Mas, na verdade, essa é a última coisa que você poderia desejar. Alguns produtos tentam fazer com que seus discos pareçam dois blocos – um colorido (dados do arquivo) e outro que costuma ser branco (espaço livre). Infelizmente, esta é uma das piores coisas que você pode fazer com um disco quando sua intenção é minimizar a freqüência e o custo da desfragmentação. Se, ao fazer mais edições em um arquivo, você compactar todos os dados do arquivo na parte frontal do disco e remover grande parte do espaço livre, precisará gravar todas essas edições no final dos dados do arquivo. Então, ao desfragmentar dessa forma, na verdade você causou a fragmentação, começando pela próxima edição de arquivo. Em vez de gerar dois blocos de dados de arquivo bem organizados, uma boa desfragmentação resulta em uma imagem que não é necessariamente perfeita. Para obter um exemplo, veja a Figura 1 que mostra meu sistema de teste antes da desfragmentação. Depois, veja a Figura 2 que mostra o mesmo sistema após a completa desfragmentação pelo Windows.
Figura 1 Minha unidade antes da desfragmentação
Figura 1 Minha unidade antes da desfragmentação
Figura 2 Minha unidade após a desfragmentação
Figura 2 Minha unidade após a desfragmentação
Observe que o Windows não se concentra na fragmentação dos arquivos no disco, mas sim na fragmentação de cada arquivo separado (veja a Figura 3 para obter a seção do relatório de desfragmentação em Arquivos mais fragmentados, antes da desfragmentação deste sistema).
Figura 3 Relatório de desfragmentação
Figura 3 Relatório de desfragmentação
Como resultado, mesmo após a desfragmentação, o Windows mostra um conjunto de dados de arquivos totalmente compactados na parte frontal do disco. Observe também o grande trecho com dados destacados em verde nas Figuras 1 e 2. Esse trecho corresponde ao arquivo de paginação do Windows, sobre o qual discutiremos em breve. Se a hibernação estiver ativada no seu sistema Windows, ela também aparecerá em uma desfragmentação.

A desfragmentação periódica é essencial
Assim como o hábito de passar o fio dental, é importante se lembrar de executar a desfragmentação. A desfragmentação periódica se torna ainda mais fundamental em sistemas que são utilizados com freqüência, como servidores, pois, se você aguardar, o processo poderá ser demorado, e seu servidor poderá ficar indisponível ou deixar de responder (pois a desfragmentação pode ser demorada e determinadas fases da desfragmentação podem exigir muito da CPU).
Nem mesmo os melhores desfragmentadores online conseguem desfragmentar tudo. Por exemplo, nem sempre eles desfragmentam arquivos abertos ou bloqueados (tais como arquivos de paginação ou arquivos de registro) e devem trabalhar em função do arquivo de hibernação, caso exista (que é tão grande quanto a RAM em uso no seu sistema). Para otimizar arquivos bloqueados, consulte a seção que aborda truques de desfragmentação.
É importante compreender os mitos e fatos associados à desfragmentação. A Figura 4 e a Figura 5 listam alguns tópicos comuns abordados em discussões sobre desfragmentação e explicam as chances reais de tais problemas ocorrerem.
Figure 5 Mitos sobre a desfragmentação (Close Figure 5)

Mito | Probabilidade
Há falhas nos sistemas. | Improvável – Falhas costumam ocorrer em função de problemas no driver ou no hardware (corrupção de memória, problemas térmicos que causam reinicializações ou falhas no disco devido ao abuso térmico no disco).
Os aplicativos falham. | Improvável – Assim como ocorre no sistema inteiro, um aplicativo bem projetado não costuma falhar devido à fragmentação; então, a menos que essa seja a real causa, não pressuponha que a fragmentação esteja provocando isso.
Há corrupção de registro. | Improvável (ver justificativa anterior) – A fragmentação não causa nem leva à corrupção de registro.
A desfragmentação deve resultar em uma barra sólida em qualquer representação visual do disco. | Improvável – procure não espremer todos os arquivos no sistema, a menos que pretenda especificamente incluir imagens no sistema, com a ferramenta de criação de imagens baseada em setores, que não exclui espaço livre, nem faz reduções ou divisão de partições. Mova os arquivos para a frente do disco; caso contrário, a consolidação agressiva de arquivos levará a uma maior fragmentação.
Figure 4 Preocupações comuns sobre a desfragmentação (Close Figure 4)

Preocupação | Probabilidade
O desempenho do sistema é afetado. | Alta – Depende especificamente da utilização do sistema.
A recuperação de arquivos excluídos acidentalmente pode se tornar difícil ou impossível. | Alta – A maioria das ferramentas de recuperação de arquivos depende da heurística (para determinar os tipos de dados) e da proximidade do cluster de arquivos. Arquivos espalhados resultam em uma operação de recuperação mais complexa ou impossível.
A desfragmentação do sistema será cara. | Média – Há uma correlação direta entre o nível de utilização do sistema e o nível de alteração dos arquivos no sistema com o tempo. Se os usuários editarem muito os arquivos, mas só os salvarem em compartilhamentos do servidor, por exemplo, você não encontrará muita degradação com o tempo.
O disco será danificado. | Baixa – Pouco provável. Novamente, quanto mais você abusa de um sistema (deixe-o ligado,com os discos ativados o tempo todo, ao editar, modificar ou excluir arquivos), maior é a probabilidade. Mas, com o tipo de hardware atual, é provável que isso não ocorra, em função da edição de arquivos.

A desfragmentação como parte da sua infra-estrutura
Procure fazer a desfragmentação periódica em todos os seus sistemas. Você pode utilizar o desfragmentador interno do Windows ou buscar opções de terceiros. Basicamente, é importante saber quanta engenharia você empregará. O Windows XP e as versões posteriores permitem que você adicione o defrag.exe, conforme mostrado no artigo Scheduled Task—the Knowledge Base em support.microsoft.com/kb/555098. Observe que a desfragmentação do laptop vem acompanhada de algumas considerações especiais. Você quer desfragmentar o sistema de um usuário quando ele está ligado, preferencialmente via corrente alternada, mas não quer utilizar a CPU ou ciclos de disco enquanto um usuário móvel está tentando concluir um trabalho. Infelizmente, contudo, quando um usuário móvel não está trabalhando no seu sistema, é bem provável que ele esteja desconectado da corrente alternada, em espera ou hibernação (desligado do ponto de vista de gerenciamento de energia e Tarefas Agendadas). Na Winternals (e, provavelmente, em qualquer outro local), passamos muito tempo tentando projetar um cenário de usuário móvel ideal. Se você estiver empregando o Windows Vista, que utiliza o desfragmentador interno e Tarefas Programadas, a consciência da potência será bem melhor do que em versões anteriores e, provavelmente, essa será uma boa solução. Caso contrário, talvez seja necessário recorrer a uma solução de terceiros para sistemas móveis. Algumas dessas soluções de fato disparam uma tarefa de desfragmentação, permitindo que você detecte onde, quando (e com que freqüência) e por quanto tempo ela foi executada.
Além de cenários móveis, você tem interesse na fragmentação fora do sistema de arquivos. Em geral, você não precisa se preocupar com esse tipo de coisa quando utiliza a área de trabalho ou sistemas móveis. Mas servidores, o Microsoft Exchange, o SQL ServerTM ou outros armazenamentos de dados podem exigir suas próprias desfragmentações. Nesses casos, você precisa decidir se isso deve ser feito antes ou após a desfragmentação de um sistema de arquivos.
Se estiver utilizando um desfragmentador de terceiros, certifique-se de que ele utilize a API de desfragmentação do Windows. Desde o Windows NT 4.0, o Windows possui sua própria API de desfragmentação para evitar a perda inesperada de dados. Por exemplo, quando você está transferindo um arquivo e seu sistema perde a potência, a última coisa que você deseja é a transferência de um fragmento incompleto, que pode resultar na perda de dados ou até mesmo em um sistema não inicializável.
Finalmente, se você estiver empregando uma tecnologia de computação virtual, talvez queira considerar como gerencia a desfragmentação de seus discos virtuais. Eles estão tão propensos à fragmentação quanto um eixo físico e, em muitos casos, isso pode ser mais problemático devido às restrições de tamanho. Além disso, se sua solução de virtualização permite reduzir discos ou partições, talvez você precise desfragmentar primeiro para liberar espaço (ou, pelo menos, reduzir a duração de uma operação de redução).

Ferramentas adicionais
Acho que você já deve ter percebido que a desfragmentação é uma função importante e valiosa. Mesmo que você não utilize uma ferramenta de terceiros para a própria desfragmentação, talvez pense em empregar uma ferramenta de Mark Russinovich chamada PageDefrag, que pode ser obtida no site de ferramentas Microsoft Sysinternals (ver microsoft.com/technet/sysinternals/FileAndDisk/PageDefrag.mspx). Conforme dito anteriormente, não é possível desfragmentar um arquivo de página do Windows enquanto o Windows está online. Na verdade, o mesmo vale para arquivos de registro do Windows e para os registros de eventos. O PageDefrag permite que você desfragmente esses arquivos bloqueados antes de o Windows concluir a inicialização e bloquear esses arquivos, através de um pequeno driver. Para utilizá-lo, basta executar o PageDefrag e definir que ele seja executado na próxima reinicialização ou a cada reinicialização. Quando o sistema é reinicializado (no ponto do processo de reinicialização em que você já deve ter visto uma verificação de disco), ele desfragmenta os arquivos especificados na lista (ver a Figura 6).
Figura 6 Arquivos a serem desfragmentados no PageDefrag
Figura 6 Arquivos a serem desfragmentados no PageDefrag
Quando o PageDefrag é concluído, o sistema termina a reinicialização normalmente. Para mais informações sobre o PageDefrag, leia o que Lance Whitney escreveu sobre ele na instalação de setembro do Destaque de utilitário (ver technetmagazine.com/issues/2007/09/UtilitySpotlight). Observe que o PageDefrag só tem suporte no Windows NT 4.0, no Windows 2000, no Windows XP e no Windows Server 2003. No momento, ele não tem suporte no Windows Vista.
Além do PageDefrag, há outra ferramenta disponível no Sysinternals chamada Contig, que permite desfragmentar manualmente um arquivo específico (ver microsoft.com/technet/sysinternals/FileAndDisk/Contig.mspx). Isso pode ser útil quando não é possível desfragmentar um arquivo específico através de uma tarefa de desfragmentação comum ou quando ele se torna fragmentado (mas o restante do volume não ficou tão fragmentado).
O Contig também desfragmenta um diretório inteiro ou subdiretórios através de curingas. Observe a seguir um exemplo em que todos os arquivos são desfragmentados no diretório Windows, independente da sua localização.
Contig –s c:\Windows\*.*
A aplicação da opção –v faz a operação ser executada no modo detalhado; –q faz a operação ser executada no modo silencioso.

Wes Miller é gerente de desenvolvimento da Pluck (www.pluck.com) em Austin, no Texas. Ele já trabalhou na Winternals Software, em Austin, e na Microsoft, como gerente de programas e gerente de produtos do Windows. Ele pode ser contatado pelo email technet@getwired.com.


 Anota&#231;&#245;es de campo: O ‘Cod’ de Conduta
Anotações de campo
O ‘Cod’ de Conduta
Betsy Aoki

Às vezes, aquilo de que você precisa pode não ser um servidor maior ou uma base de usuário mais bem preparada para não precisar ser chamado para um problema bem na hora em que você estava saindo para o final de semana. Às vezes, o problema não é gerenciar o código; você precisa é de um bom peixe grande.
Há um ano, eu estava trabalhando com a geração de relatórios de abuso do site do Live QnA (qna.live.com). Nós operávamos os botões Excluir e monitorávamos o site contra ataques bobos e mau comportamento. Tínhamos ferramentas internas. Tínhamos diretivas externas. Enfrentamos alguns malucos que tentaram sabotar nossas perguntas com conteúdo maldoso.
Nessa época, eu estava exausta. Afinal, a saúde comunitária do site era minha responsabilidade. Era eu que ajudava a criar o código de conduta para a definição do tom do site. Eu era a Gatekeeper e tinha que fazer todo mundo se COMPORTAR.
Exceto que eles não faziam isso. Pessoas são pessoas — e isso quer dizer que elas são capazes das maiores traições e dos maiores atos de bondade — e o que eu queria não incluía o fato de alguém chamar outro usuário de retardado ou não.
Assim, em um sábado eu estava sentada em minha cozinha pensando no código de conduta que estava defendendo. Enquanto brincava com minha caneta, tive uma daquelas idéias brilhantes que chegam de repente. E se não houvesse um código de conduta, mas a figura de um bacalhau que o representasse (em inglês, trocadilho entre as expressões “code of conduct” {código de conduta} e “cod of conduct” {bacalhau de conduta})? E, se fosse assim, como seria esse bacalhau? Bem, eu cresci na Nova Inglaterra, onde comíamos bacalhau. Bacalhau branco, escamoso e tedioso. Eu queria ser capaz de repreender e elogiar minha associação ao QnA com o tom prosaico e depreciativo de um bacalhau. Nada mais de simplesmente martelar o botão Excluir, que nos últimos tempos eu fazia com uma freqüência muito grande, mas com o humor mordaz que faria alguém rir mesmo jurando não passar dos limites novamente. Dessa forma, Norbert, o Cod of Conduct, nasceu. Pensei em dar-lhe um cachimbo, mas depois imaginei que a gravata borboleta era o suficiente.
O ‘Cod’ de Conduta
O ‘Cod’ de Conduta
Carreguei o meu desenho do peixe em um novo LiveID, dei a ele um nome de usuário do QnA e Norbert, o ‘Cod’ de Conduta do QnA, estava pronto para trabalhar. Saiba que nem sempre ele era eu. Algumas vezes, outro membro da equipe assumiu a personalidade de Norbert e repreendeu os cafajestes. Quem é o ‘Cod’ de Conduta? Consulte go.microsoft.com/fwlink/?LinkId=99044. O ‘Cod’ de Conduta magoa as outras pessoas? Consulte go.microsoft.com/fwlink/?LinkId=99045.
Os membros da comunidade do QnA o acolheram como, digamos, o peixe se atira n'água. Eles o desafiaram, intimaram e ficaram irritados com ele. Ele instruiu os novatos, repreendeu aqueles que pensavam que podiam sair das trevas para a luz e ofereceu uma forma jovial de examinar as regras além de simplesmente ler uma página da Web densa e cheia de termos legais.
Regras — sejam a política da empresa, a lei da selva ou a ordem do pique-esconde no playground — dependem da boa vontade das pessoas que sentem os efeitos de sua imposição. Como uma pessoa de TI ou desenvolvedor de sites de comunidades, você pode criar ferramentas que ajudam na imposição das regras, mas, algumas vezes, a melhor ferramenta para o trabalho será algo que virá de sua própria personalidade ou do senso de humanidade coletivo da tribo. Em vez de engenharia técnica, um pouco de polidez na engenharia social poderá ser mais eficiente. Ou, talvez, em nosso caso, saliva, polidez e um peixe.

Betsy Aoki é gerente de programa de comunidade da equipe do Xbox da Microsoft. Suas delicadas neuroses são avidamente expressas em seus emails, postagens em blogs e, espera-se, no XNA Framework.


 Segredos do Windows: O paradoxo do sistema de arquivos
Segredos do Windows
O paradoxo do sistema de arquivos
Raymond Chen

Se você examinar o seu disco rígido, provavelmente notará um bom número de arquivos de sistema operacional espalhados pelo diretório raiz da unidade de inicialização. Se olhar para esses arquivos mais de perto, você notará um tema: boot.ini, NTLDR e NTDETECT.COM são arquivos de inicialização fundamentais e hiberfil.sys é o arquivo de hibernação. Todos esses arquivos estão envolvidos nos primeiros estágios cruciais da inicialização do sistema operacional ou, no caso de hiberfil.sys, da volta da hibernação, e precisam estar na raiz da unidade de inicialização. Por que eles não podem ser movidos para outro lugar?
Um colega meu, Adrian Oney, explicou: para ler os arquivos de inicialização fora do disco, você precisa de um driver de sistema de arquivos, mas ele está no disco, que você não poderá ler até carregar o driver de sistema de arquivos. Essa não, uma sinuca de bico!
O círculo vicioso é quebrado ao termos um driver de sistema de arquivos em miniatura nos arquivos de inicialização fundamentais. Esse driver em miniatura sabe o suficiente para localizar arquivos no diretório raiz e carregá-los na memória. Por sua vez, esses arquivos podem levantar o sistema operacional até um ponto onde o driver de sistema de arquivos verdadeiro possa assumir o controle e procurar pelos arquivos em lugares muito mais interessantes, como os subdiretórios.
A hibernação segue um padrão similar. Hibernar o sistema operacional significa despejar todo o conteúdo da memória no arquivo de hibernação; restaurar da hibernação exige jogar esse arquivo de volta na memória e fingir que nada aconteceu. Novamente, existe um outro problema do tipo o ovo ou a galinha: para carregar o arquivo de hibernação, você precisa do driver de sistema de arquivos, mas ele está no arquivo de hibernação. Se você mantiver o arquivo de hibernação no diretório raiz da unidade de inicialização, o driver de sistema de arquivos em miniatura poderá ser usado.
Aqueles que já usaram versões anteriores do MS-DOS® conhecem bem essa restrição do local dos arquivos de inicialização do sistema operacional. O antigo comando SYS transformava um tedioso disquete em um disquete inicializável mágico. No entanto, se o disquete já contivesse dados, havia uma boa chance de a conversão falhar, já que as primeiras versões do MS-DOS exigiam que os arquivos de inicialização ocupassem locais específicos do disquete para que o setor de inicialização pudesse localizá-los. Versões posteriores do MS-DOS relaxaram esses requisitos aperfeiçoando o carregador de inicialização mas, mesmo com a nova versão, os arquivos do sistema ainda precisavam ficar no diretório raiz.
Um cliente perguntou: "Posso mover o arquivo de hibernação para um subdiretório?" Afinal, por que a localização desse arquivo é importante? As ACLs no arquivo seriam as mesmas a despeito de sua localização. Mas esse pessoal queria colocá-lo em uma unidade diferente da unidade de inicialização e foi informado de que não poderia fazer isso. Eles não entenderam o porquê dessa restrição e, por fim, experimentaram uma alternativa: bem, se eu puder pelo menos movê-lo para um subdiretório, poderei criar um diretório e transformá-lo em uma junção que aponte ao local onde eu realmente desejo colocar o arquivo de hibernação. Viva, consegui realocar o arquivo de hibernação!
É claro que o driver de sistema de arquivos em miniatura não compreende os pontos de montagem, já que eles significam conversar com o serviço de gerenciamento de discos, e, no momento da inicialização do sistema, o computador ainda nem carregou o sistema operacional ainda, muito menos algum serviço avançado bacana que sabe como mapear letras de unidades para caminhos ARC; e mesmo que você, de alguma forma, execute o serviço, ainda terá de encontrar drivers de dispositivo para os outros discos rígidos e carregar os drivers de sistema de arquivos correspondentes.
É só uma questão de tempo antes de alguém solicitar uma forma de colocar o arquivo de hibernação em uma junção DFS.

Raymond Chen, The Old New Thing, e o livro homônimo (Addison-Wesley, 2007), tratam da história do Windows e da programação Win32. Seu nome na Web 2.0 é Raymond, ou talvez Chester.