Powershell mysql
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Domaine | Accès base de données depuis PowerShell |
| Assembly | MySql.Data.dll (Connector/NET)
|
| Voir aussi | Powershell-fonctions |
PowerShell peut se connecter à une base MySQL via le connecteur .NET
MySql.Data.dll.
Installation du connecteur
- Télécharger le paquet MySQL Connector/NET depuis
http://dev.mysql.com/downloads/connector/net/ - Localiser
MySql.Data.dll(par défaut sous
C:\Program Files\MySQL\MySQL Connector Net\Binaries\.NET 2.0\MySql.Data.dll en 5.x
ou ...\Assemblies\v2.0\MySql.Data.dll en 6.x).
Fonctions de connexion et de requête
function mysql_connect([string]$ip, [string]$Login, [string]$Password, [string]$Database) {
$dbconnect = New-Object MySql.Data.MySqlClient.MySqlConnection
$dbconnect.ConnectionString = "server=$ip;user id=$Login;password=$Password;database=$Database;pooling=false"
$dbconnect.Open()
$global:db = $dbconnect
$dbconnect
}
function mysql_query([string]$Query, [MySql.Data.MySqlClient.MySqlConnection]$Db) {
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
if ($Db -eq $null) {
if ($global:db -eq $null) { throw "Pas de connexion spécifiée" }
else { $Db = $global:db }
}
if ($Db.State -ne "Open") {
# On ré-ouvre la connexion car elle peut être fermée
$Db.Open()
}
$sql.Connection = $Db
$sql.CommandText = $Query
$sql.ExecuteNonQuery()
}
$dbconnect = mysql_connect -Ip 192.0.2.10 -Login "root" -Password "MonMotDePasse" -Database "ma_base"
mysql_query -Query "insert into connexion VALUES (NULL, '$mavar_powershell', NOW())"
Variante avec DataSet
# Le lien se fait par
[void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")
# Variables de connexion
$serv = "adresse_serveur"
$port = "3306"
$user = "root"
$password = "MonMotDePasse"
$db = "ma_base"
# Création de l'instance, connexion à la base
$mysql = New-Object MySql.Data.MySqlClient.MySqlConnection("server=$serv;port=$port;uid=$user;pwd=$password;database=$db;Pooling=False")
$mysql.Open()
# Instanciation de la requête
$reqStr = "SELECT HOST FROM INVENTAIRE WHERE TYPE='WINDOWS' and ACTIF=1"
$liste_host = New-Object MySql.Data.MySqlClient.MySqlCommand($reqStr, $mysql)
# Data adapter et dataset pour traiter les données
$dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($liste_host)
$dataSet = New-Object System.Data.DataSet
$dataAdapter.Fill($dataSet, "resultat")
# Affichage du résultat
$res = $dataSet.Tables["resultat"] | Format-Table -HideTableHeaders | Out-String
# Fermeture de la connexion
$mysql.Close()
Voir aussi
- Powershell-fonctions — exemples de fonctions PowerShell