Executando comandos MySQL e MSSQL no Powershell
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 = ""
$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 = ""
$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