Powershell mysql

De wiki.nexiat.fr
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

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