Infra - Windows Server

Utilizando pipes no Monad

Com este tutorial mostramos como utilizar pipes no Monad permitindo melhores resultados na administração de sistemas.

por Anderson Patricio



Autor: Anderson Patricio / José Rodas

Overview

O Monad como uma grande linguagem e poderoso shell fornece a possibilidade de usar pipes, que basicamente são aproveitar a saída de um comando com outro instrução.

Já possuímos isto no cmd.exe mas de forma mais simplista, um exemplo de que podemos utilizar:

netstat -an | find ":25"

Com isto estamos listando todas as portas abertar da máquina (netstat -an) e mostrando somente os resultados que tiverem a incidência do texto ":25".

No Monad isto é possível, iremos utilizar aqui alguns possíveis pipes, com isto podemos combinar um ou mais comandos trazendo a informação importante de forma mais fácil.

O que devemos saber é quando utilizamos esta técnica, a resposta do primeiro comando é utilizado pelo segundo e assim sucessivamente.

Bom para entendermos bem o conceito segue abaixo o primeiro exemplo e um dos mais comuns que é utilizar o cmdlet get-help <comando> por padrão ele mostra todo o help passando todo conteúdo na tela, utilizando pipe (|) mais more, conseguimos que a saída do primeiro cmdlet (get-help <comando>) seja feita de forma mais fácil para o administrador permitindo controlarmos o fluxo da informação.

get-help get-command | more

Pedimos ajuda com possibilidade de controlar a saída do help.

Utilizando Pipes..

Bom vamos ver a real funcionalidade do pipe, seguem os exemplos baseado em uma necessidade, o Administrador da rede quer uma listagem dos processos chamados svchost executados na máquina, mas o mesmo precisa no formato .txt para entregar para o seu "chefe", vamos utilizar o Monad para ajudarmos nesta árdua tarefa. Vamos fazer passo a passo para melhor entendimento

get-process

Bom, para listarmos os processos utilizamos o cmdlet get-process que lista todos os processos, conseguimos 33% da tarefa que o Administrador necessita.

get-process | where-object { $_.processname -eq "svchost" }

Agora que já sabemos o cmdlet para listar os processos precisamos saber somente os chamados svchost, então vamos utilizar o nosso primeiro pipe, utilizando where-object { $_.processname -eq "svchost" } onde toda saída do cmlet get-process será filtrado de forma que será apresentando somente os processos chamados svchost.

get-process | where-object { $_.processname -eq "svchost" } | out-file c:\anderson.txt

Bom conseguimos no comando anterior listar somente o necessário utilizando pipes, agora precisamos adicionar mais um pipe para jogar a saída do cmdlet get-process e filtrado pelo segundo cmdlet e utilizamos um terceiro cmdlet out-file c:\anderson.txt para jogar o conteúdo para o arquivo anderson.txt.

Visualizando a necessidade do administrador...

Ainda a partir do Monad digitamos notepad anderson.txt e será mostrado o que nos foi solicitado.

Conclusão

Com este tutorial mostramos como utilizar pipes no Monad permitindo melhores resultados na administração de sistemas.

Anderson Patricio

Anderson Patricio - Trabalha com informática desde 1995, é consultor Microsoft em projetos de Active Directory, Exchange e ISA pela Quattuor Informática em Porto Alegre.
Certificações: MCSE +M +S 2003, MCSE +M +S 2000, MCSA +M +S 2003, MCSA +M +S 2000
Blog: http://spaces.msn.com/members/andersonpatricio/