Um pouco de Powershell não faz mal a ninguém

Trabalho como Arquiteto de Integração de Dados para sistemas de Business Inteligence há muitos anos, e por este motivo acabei tendo contato com uma grande quantidade de ambientes.

Já trabalhei em sistemas Solaris, AIX, várias compilações de Linux como Red Hat, antigos Conectiva e Mandrake, SuSe, Ubuntu, etc. Trabalhei muito também com vários ambientes Windows, 2000, NT, Server 2003, 2008, etc.

Durante minhas atividades nos ambientes “Unix-like” fiquei rapidamente maravilhado com a flexibilidade e a capacidade de realizar todos os tipos de atividade usando Scripts Shell (korn, bash, etc), e reservo uma lembrança especial do Awk, pelo qual eu era meio fascinado.

Tive também oportunidade de trabalhar em ambientes Mainframe em alguns clientes, tendo algum contato com scripts JCL. E como se isso tudo já não bastasse também tive a oportunidade de fazer uma especialização em SyncSort e trabalhar com essa ferramenta. Nunca vi nada mais rápido em toda minha vida para tratar arquivos. Era tão rápido que valia a pena fazer todo o tratamento histórico da carga de um DataWarehouse em arquivos, e só carregar o final já “pronto” na base com truncate/insert. E estamos falando daqueles arquivos imensos de CDRs de uma grande Telecom.

Como vocês podem ver, trabalhar com scripts é sempre uma necessidade quando se faz Integração de Dados, pois quando se fala nesse tipo de Integração não estamos tratando apenas de Bancos de Dados, mas de uma infinidade de arquivos .txt, .csv, .xml, etc.

Evidentemente que eu sempre notei um contraste muito grande entre a magia que era possível executar usando scripts nos ambientes unix-like, contra as dificuldades de realizar operações simples em scripts .BAT nos ambientes Windows.

É claro que já tive que fazer muitos desses scripts, mas os adoradores dos .bats que me perdoem: programar em .bat é muito ruim. Isso me deixava decepcionado, pois era difícil me conformar com o fato de que não havia uma opção boa para se programar scripts em ambientes windows.

Tudo isso porque eu não conhecia o PowerShell!

O PowerShell fornece ao programador recursos poderosos, flexíveis e fáceis de usar, e pensando em ajudar a disseminar um pouco esse conhecimento eu resolvi colocar algumas coisas a mais sobre isso na nossa querida nuvem de informações.

Deseja lançar alguma informação na tela? Nada que um write-host não resolva. Precisa listar um diretório? Get-ChildItem nele.

Quer iniciar um Loop que lance na tela a palavra ‘Aguarde’ a cada 3 segundos? Que tal um while ($true) { clear-host; write-host “Aguarde”; sleep 3}?

Tenho utilizado o PowerShell como recurso de apoio para uma série de atividades, e a cada dia que passa me interesso mais por este recurso.

Me dê um exemplo!?!?

Eu posso ssentir você me pedindo isso, e aqui vai um ótimo exemplo pra você. Vamos pegar um dos tópicos mais básicos de toda e qualquer linguagem de programação, um laço While, e mostrar como ele seria feito nos dois casos.

Usando DOS/BATCH (.BAT)

Para realizar um laço while em scripts .bat, teríamos que fazer um bloco de comandos IF/GOTO.

echo off
SET /a vCont=0

:LOOP
IF %vCont%==10 GOTO END
echo Este é um laço While usando IF/GOTO (em .BAT! ARGH)
SET /a vCont=%vCont%+1
GOTO LOOP

:END
echo Fim!

Resultado:

While .BAT
While .BAT

Usando PowerShell

Agora vamos ver como faríamos a mesma coisa em Powershell.

while ($vCont -lt 10) { write-host "Este é um Laço While em Powershell!"; $vCont++ } write-host "Fim!"

Resultado:

While PS
While PS

Já posso ver um sorriso aparecendo em seu rosto! Percebeu a diferença? 😀

Acesse http://www.microsoft.com/powershell e conheça mais sobre esse recurso.

Bem-vindo ao maravilhoso mundo do PowerShell!