Spouštění MySQL dotazů z PowerShell

Jednou ze zajímavých vlastností PowerShell je možnost připojení k databázím na vzdálených serverech, včetně MySQL. Přímo z konzoly PowerShell tak získáte přístup k tabulkám MySQL pro přístup k datům. V tomto článku se podíváme na příklady připojení k MySQL ze skriptu Powershell a příkazy pro čtení a zápis dat do databázových tabulek. Pro připojení k serveru MySQL potřebujeme speciální MySQL .NET Connector, který si můžete stáhnout přímo z oficiálního webu MySQL..

V době psaní je nejnovější verzí konektoru Connector / Net 6.9.8

Poznámka:. Není nutné instalovat plnou verzi MySQL .NET Connector, stačí zkopírovat soubor knihovny MySql.Data.dll do systému.

Stáhněte si soubor mysql-connector-net-6.9.8.msi a nainstalujte MySQL .NET Connector v minimální konfiguraci.

Na serveru MySQL nejprve vytvořte databázi, se kterou budeme pracovat. Všechny operace na serveru DBMS provádíme z příkazového řádku MySQL CLI (diskutováno výše), ale můžete použít grafiku phpmyadmin nebo jakýkoli jiný nástroj.

Vytvoření databáze uživatele:

mysql> CREATE DATABASE aduser;

Na serveru MySQL vytvořte samostatného uživatele s právem vzdáleně se připojit k databázi uživatele. Dáme tomuto uživateli právo vzdáleně se připojit k databázi z IP adresy 10.10.1.95

mysql> UDĚLTE VŠECHNY VÝSLEDKY NA OBCHODU * * K posh@'10.10.1.95 'IDENTIFIKOVANO' P @ ssw0rd 'S GRANTOVOU MOŽNOSTÍ MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNIONS 0;

Vyberte vytvořenou databázi:

mysql> USE aduser;

A vytvořte jednoduchou tabulku 3 polí: identifikátor, uživatelské jméno v AD a jeho e-mailovou adresu.

mysql> CREATE TABLE users (id INT NOT NULL AUTO_INCREMENT, jméno VARCHAR (100), email VARCHAR (100), PRIMARY KEY (ID));

Vrátíme se na server, ze kterého se připojíme k databázi MySQL. Předpokládejme, že chceme, aby tabulka obsahovala všechna jména a e-mailové adresy uživatelů služby AD. Tyto informace lze získat pomocí rutiny Get-ADUser..

Následující skript Powershell se připojí k databázi a zapíše do ní seznam uživatelů a e-mailů přijatých z AD.

Set-ExecutionPolicy RemoteSigned
# připojujeme knihovnu MySql.Data.dll
Add-Type -Path 'C: \ Program Files (x86) \ MySQL \ MySQL Connector Net 6.9.8 \ Assemblies \ v4.5 \ MySql.Data.dll'
# DB připojovací řetězec, server je název serveru, uid je mysql jméno uživatele, pwd je heslo, databáze je název databáze na serveru
$ Connection = [MySql.Data.MySqlClient.MySqlConnection] @ ConnectionString = 'server = 10.10.1.13; uid = posh; pwd = P @ ssw0rd; database = aduser'
$ Connection.Open ()
$ sql = Nový objekt MySql.Data.MySqlClient.MySqlCommand
$ sql.Connection = $ Connection
# vytvořit seznam uživatelů se jmény a e-mailovými adresami
Adresář importního modulu
$ UserList = Get-ADUser -SearchBase 'OU = Users, OU = London, DC = contoso, DC = en' -filter * -properties name, EmailAddress
ForEach ($ user v $ UserList)

$ uname = $ user.Name;
$ uemail = $ user.EmailAddress;
# zapsat informace o každém uživateli do databázové tabulky
$ sql.CommandText = "INSERT INTO users (Name, Email) VALUES ('$ uname', '$ uemail')"
$ sql.ExecuteNonQuery ()

$ Reader.Close ()
$ Connection.Close ()

Následující skript se používá ke čtení dat dříve zapsaných do databázové tabulky a jejich zobrazení v konzole PowerShell. Z databáze jsme odvodili hodnoty polí s uživatelskými jmény a jejich poštovními adresami:

Set-ExecutionPolicy RemoteSigned
Add-Type -Path 'C: \ Program Files (x86) \ MySQL \ MySQL Connector Net 6.9.8 \ Assemblies \ v4.5 \ MySql.Data.dll'
$ Connection = [MySql.Data.MySqlClient.MySqlConnection] @ ConnectionString = 'server = 10.10.1.13; uid = posh; pwd = P @ ssw0rd; database = aduser'
$ Connection.Open ()
$ MYSQLCommand = Nový objekt MySql.Data.MySqlClient.MySqlCommand
$ MYSQLDataAdapter = Nový objekt MySql.Data.MySqlClient.MySqlDataAdapter
$ MYSQLDataSet = New-Object System.Data.DataSet
$ MYSQLCommand.Connection = $ Connection
$ MYSQLCommand.CommandText = 'SELECT * od uživatelů'
$ MYSQLDataAdapter.SelectCommand = $ MYSQLCommand
$ NumberOfDataSets = $ MYSQLDataAdapter.Fill ($ MYSQLDataSet, "data")
foreach ($ DataSet v $ MYSQLDataSet.tables [0])

write-host "Uživatel:" $ DataSet.name "E-mail:" $ DataSet.email

$ Connection.Close ()

V následujících článcích budeme zvažovat příklad použití databáze MySQL ke shromažďování a ukládání informací z protokolů událostí systému Windows:

  • Sledování a zaznamenávání do databáze informací o smazaných souborech ve sdílených síťových adresářích