Introdução


Em alguns de nossos scripts vamos precisar de informações que estão em um servidor de banco de dados, pensando nisso é importante sabermos manipularmos conexões com bancos de dados utilizando Powershell.

Nesse artigo vou mostrar códigos utilizados para efetuar leitura, edição e outras ações em servidor MySQL e MSSQL, além de um script pronto para execução de Insert, Select, Delete e outros comandos em ambas plataformas.

MSSQL


Para conexões com MSSQL utilizamos objetos do tipo System.Data.SqlClient.SqlConnection, podemos criar o objeto com seguinte comando.

$sql = new-object System.Data.SqlClient.SqlConnection;


Agora podemos analisar as propriedades dele com o cmdlet Get-Member

$sql | Get-Member

Vamos começar preenchendo a propriedade ConnectionString, com os dados da conexão.

$server = "localhost"
$user = "sa"
$password = "Pa$$w0rd"
$database = "TESTE_DB"
$sql.ConnectionString=“server=$server;user id=$user;password=$password;database=$database;pooling=false”

Após criarmos a conexão precisamos criar um objeto do tipo System.Data.SqlClient.SqlCommand para colocarmos o comando que vamos executar.

$sqlCmd = New-Object System.Data.SqlClient.SqlCommand

Também vamos precisar ter a string do comando que vamos executar

$Comando = “select  * from tabela

Agora precisamos atribuir o comando que criamos e a conexão ao objeto $sqlCmd

$sqlCmd.CommandText = $comando
$sqlCmd.Connection = $sql

Feito isso temos o objeto $sqlCmd pronto para a execução, iniciamos então abrindo a conexão e executando o comando.

$sql.open()
$sqlReader = $sqlcmd.ExecuteReader()

Agora temos que verificar os itens retornados, eles ficam dentro do $sqlReader no método Read, então executamos o código a baixo para retornar os itens.

while($sqlReader.Read()){
$sqlReader[0]
}

Devemos notar que o $sqlReader é um vetor, em cada uma das posições do vetor vai representar uma das colunas retornadas pelo select, caso queiramos a segunda coluna trocamos o [0] por [1].

Após isto não podemos esquecer de fechar a conexão com o banco.

$sql.Close()

Caso nosso interesse seja um insert, delete ou outro comando que não seja de leitura, utilizamos o ExecuteNonQuery ao invés do ExecuteReader.

$sqlReader = $sqlCmd.ExecuteNonQuery()

MySQL via PowerShell


Para utilizarmos o MySQL no Powershell é necessário termos uma DLL chamada MySql.Data.dll, que vem pode ser baixada no site do MySQL ( ela vem junto ao cliente MySQL )
Primeiro temos que carregar a DLL para nossa sessão Powershell.

[void][system.reflection.Assembly]::LoadFrom(“C:\MySql.Data.dll”)

Todo processo é muito semelhante ao do MSSQL, porém os objetos utilizados para criação da connection string e dos comandos muda.
Para criarmos a connection string utilizamos:

$sql = new-object MySql.Data.MySqlClient.MySqlConnection;
$server = "localhost"
$user = "root"
$password = "Pa$$w0rd"
$database = "TESTE_DB"
$sql.ConnectionString=“server=$server;user id=$user;password=$password;database=$database;pooling=false”

Então para executarmos o comando criamos o objeto de comando referente ao MySQL.

$sqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand

O resto do processo permanece o mesmo.

Script pronto!


Você pode baixar um script pronto que fiz com funções para efetuar as conexões na Gallery Script,
http://gallery.technet.microsoft.com/scriptcenter/Executando-comandos-MSSQL-7a8b9a14 

Referências


Esse artigo foi desenvolvido com base no conhecimento adquerido na execução de projetos de automatização.

Este artigo foi originalmente publicado por:
Matheus Kamphorst | Blog: http://howtoserver.com