Primeiro Script:
Este script retorna um TypeName: System.__ComObject#{c2bfb780-4539-4132-ab8c-0a8772013ab6} que é um Objeto Com.

Segundo Script:
O segundo retorna um PSObject, (Custom Object) .formatado TypeName: System.Management.Automation.PSCustomObject

Tá mas qual a diferença de cada um?
No primeiro script (mais rápido), trabalhamos com o que chamamos de objeto vivo, ou seja, todas as propriedades, metodos, type information são preservados. Ex Se eu usar o get-process, posso usar os métodos dele para matar um processo.
No segundo script, o objeto de output está formatado. É mais lento, mas ocupa menos RAM e o somente as custom properties são preservadas. Este método é interessante caso você queira mesclar valores de objetos diferentes em uma unica saida.
Qual é o melhor ? Aquele que se adapta a sua necessidade. Então se eu quiser ver os SP, hot fix..enfim todo os updates do servidor 1
1: Get-Updates Server1

Vamos escalar ? Server1,Server2,Server3 | get-updates
ou então salvar os servidores em um txt

e usar o cmdet get-content
get-content c:/temp/servers.txt | get-updates
E pra mandar pra um txt?
get-content c:/temp/servers.txt | get-updates | out-file c:/servers/audit.txt
Obs: No caminho para o .txt não deixe de utilizar a barra de separação de diretório normal.
Agora vamos mandar pra uma tabela do SQL Server?
Vamos usar duas funções do meu amigo e mentor Chad Miller, a Write-DataTable e a Out-DataTable (abaixo terá o llink com todas as funções)
Para gravar no SQL Server, sem ter que ir linha a linha, primieramente temos que formatar a saida do objeto para um data table e depois importar (se você ver o codigo da Write-DataTable perceberá que usa Bulk Insert).
Primeiramente vamos criar a tabela no sql server:
e então vamos ao codigo final usando o segundo exemplo:
Inserindo somente um servidor

Escalando no Código…

Escalando para .txt…

É isso ai galera pra quem ainda acha que DBA não tem que saber PowerShell.
Com 3 linhas eu escalo pra 1000 servidores.
Te desafio a fazer em menos 🙂
Obs: Baixe o script completo no meu Skydrive
LaerteJunior
#PowershellLifeStyle

