前回、PowerShell から ODBC 経由で MySQL に接続しました。今回は Connector/NET を使用して PowerShell から MySQL に接続してみたいと思います。
環境は下記の通りです。
- PowerShell 2.0
- MySQL 5.1.42 x64
- Connector/NET 6.2.2
Connector/NET のダウンロードは下記のURLから行えます。
http://dev.mysql.com/downloads/connector/net/
今回ダウンロードしたのは、下記の内容等になります。
- Connector/NET 6.2.2 Windows (x86, 32-bit), ZIP Archive
ダウンロードしたZIPを解凍して出来た、mysql.data.msiファイルを実行してインストーラーを下図のような流れで走らせます。
※今回はデフォルト設定でインストールしています。

インストール終了後、下記のパスに「MySql.Data.dll」のdllファイルが存在することを確認します。
C:\Program Files (x86)\MySQL\MySQL Connector Net 6.2.2\Assemblies
※今回は、「MySql.Data.dll」ファイルを「C:\Temp」フォルダにコピーして利用しています。
■DLLのロード
DLLをロードするには下記のような感じでコマンドを入力します。
[void][System.Reflection.Assembly]::LoadFile("C:\Temp\MySql.Data.dll")
■MySqlConnection の作成
MySql.Data.MysqlClient.MySqlConnection を作成します。
$conn = New-Object MySql.Data.MysqlClient.MySqlConnection("userid=<MySQLに接続するユーザー名>;password=<パスワード>;Host=<MySQLをインストールしてあるPC名>;database=<接続するデータベース名>")
■MySqlCommand の作成
MySql.Data.MySqlClient.MySqlCommand を作成してSQL文を設定します。
■サンプル1
下記のサンプルでは、ローカルのMySQLに存在するDBの一覧を表示しています。
[void][System.Reflection.Assembly]::LoadFile("C:\Temp\MySql.Data.dll")
$connStr = "("userid=<MySQLに接続するユーザー名>;password=<パスワード>;host=localhost";
$cmd = "SHOW DATABASES"
$conn = New-Object MySql.Data.MysqlClient.MySqlConnection($connStr)
$sqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand($cmd, $conn)
$conn.Open()
$reader = $sqlCmd.ExecuteReader();
while($reader.Read()) {
write ("{0}" -f $reader[0])
}
$sqlCmd.Dispose()
$conn.Close()
$conn.Dispose()
■サンプル2
下記のサンプルでは、ローカルのMySQLにhogehogeという名前のDBを作成しています。
[void][System.Reflection.Assembly]::LoadFile("C:\Temp\MySql.Data.dll")
$connStr = "userid=<MySQLに接続するユーザー名>;password=<パスワード>;host=localhost";
$cmd = "CREATE DATABASE hogehoge"
$conn = New-Object MySql.Data.MysqlClient.MySqlConnection($connStr)
$sqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand($cmd, $conn)
$conn.Open()
$sqlCmd.ExecuteNonQuery() | Out-Null
$sqlCmd.Dispose()
$conn.Close()
$conn.Dispose()
サンプルについては例外処理を省略してあります。