PowerShell: Zugriff auf MySQL-Datenbank

Mit der PowerShell auf eine MySQL-Datenbank zuzugreifen ist eigentlich recht einfach, da vorhandene .NET-Klassen in der PowerShell verwendet werden können. Man benötigt nur die entsprechenden Klassen für den MySQL-Zugriff. Das ist in meinem Fall der MySQL Connector/Net 5.1. Die früheren Versionen funktionieren mit meiner Datenbank nicht (MySQL-Version 5.0):

Error connecting to the server: Unable to connect to any of the specified MySQL hosts.

Der Download ist zwar eine MSI-Datei, man benötigt aber lediglich die MySql.Data.dll aus dem Verzeichnis Binaries\.NET 2.0, nachdem die Installation abgeschlossen ist. Diese muss im selben Verzeichnis liegen, wie das folgende Script. Alternativ kann man auch in Zeile 5 einen konstanten Pfad angeben.

  1. # the connection string used to connect to the database
  2. $connString = "Server=localhost;Uid=benutzer;Pwd=password";
  3. #
  4. # get the script’s execution path
  5. $myPath = Split-Path -Parent $MyInvocation.MyCommand.Path;
  6. #
  7. # load MySQL driver and query database
  8. [void][system.reflection.Assembly]::LoadFrom($myPath + "\MySQL.Data.dll");
  9. $conn = New-Object MySql.Data.MySqlClient.MySqlConnection;
  10. $conn.ConnectionString = $connString;
  11. $conn.Open();
  12. $command = New-Object MySql.Data.MySqlClient.MySqlCommand;
  13. $command.Connection = $conn;
  14. $command.CommandText = "SELECT * FROM table";
  15. $reader = $command.ExecuteReader();
  16. while($reader.Read())
  17. {
  18.   write-host $reader.GetString(0);
  19. }

Über uns Stefan

Polyglot Clean Code Developer

3 Kommentare

  1. Auch ganz gut ist dieser Artikel (http://www.idera.com/richardsworld/post/Getting-MySql-Results-with-PowerShell.aspx).

    Geht einen anderen Weg zum Datenauslesen (nutzt MySQL.DataAdapter).

  2. Pingback:Rolands Erinnermich » Blog Archiv » Lessons learn Powershell 1.0

  3. Ein sehr schönes und komplettes Beispiel, danke, das war sehr hilfreich!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax