Vykonávanie MySQL dotazov z PowerShell

Jednou zo zaujímavých funkcií PowerShell je možnosť pripojenia k databázam na vzdialených serveroch vrátane MySQL. Preto priamo z konzoly PowerShell máte prístup k tabuľkám MySQL, aby ste získali prístup k údajom. V tomto článku sa pozrieme na príklady pripojenia k MySQL zo skriptu Powershell a príkazov na čítanie a zapisovanie údajov do databázových tabuliek. Na pripojenie k serveru MySQL potrebujeme špeciálny konektor MySQL .NET, ktorý si môžete stiahnuť priamo z oficiálnej webovej stránky MySQL..

V čase zápisu je najnovšou verziou konektora Connector / Net 6.9.8

poznámka. Nie je potrebné inštalovať plnú verziu MySQL .NET Connector, stačí skopírovať súbor knižnice MySql.Data.dll do systému.

Stiahnite si súbor mysql-connector-net-6.9.8.msi a nainštalujte MySQL .NET Connector v minimálnej konfigurácii.

Na serveri MySQL najprv vytvorte databázu, s ktorou budeme pracovať. Všetky operácie vykonávame na serveri DBMS pomocou príkazu MySQL CLI (už bolo uvedené vyššie), ale môžete použiť grafiku phpmyadmin alebo akýkoľvek iný nástroj..

Vytvorte databázu používateľov:

mysql> CREATE DATABASE aduser;

Na serveri MySQL vytvorte samostatného používateľa s právom na vzdialené pripojenie k databáze používateľov. Dáme tomuto používateľovi právo na vzdialené pripojenie k databáze z adresy IP 10.10.1.95

mysql> UDELITE VŠETKY VÝSLEDKY NA OBCHODNÍKA. * DO posh@'10.10.1.95 'IDENTIFIKOVANÉ PODĽA' P @ ssw0rd 'S MOŽNOSŤOU GRANTU MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNIONS 0;

Vyberte vytvorenú databázu:

mysql> USE Aduser;

A vytvorte jednoduchú tabuľku 3 polí: identifikátor, užívateľské meno v AD a jeho e-mailovú adresu.

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

Vrátime sa na server, z ktorého sa pripojíme k databáze MySQL. Predpokladajme, že chceme, aby tabuľka obsahovala všetky mená a e-mailové adresy používateľov AD. Tieto informácie je možné získať pomocou rutiny Get-ADUser..

Nasledujúci skript Powershell sa pripája k databáze a zapisuje do nej zoznam používateľov a e-mailov od AD.

Set-ExecutionPolicy RemoteSigned
# pripájame knižnicu MySql.Data.dll
Pridať typ -Path 'C: \ Program Files (x86) \ MySQL \ MySQL Connector Net 6.9.8 \ Assemblies \ v4.5 \ MySql.Data.dll'
# Prípojný reťazec DB, server je názov servera, uid je mysql meno používateľa, pwd je heslo, databáza je názov databázy na serveri
$ 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
# vytvoriť zoznam používateľov s menami a e-mailovými adresami
Adresár importované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;
# zapisuje informácie o každom užívateľovi do databázovej tabuľky
$ sql.CommandText = "INSERT INTO users (Name, Email) VALUES ('$ uname', '$ uemail')"
$ sql.ExecuteNonQuery ()

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

Nasledujúci skript sa používa na čítanie údajov predtým zapísaných do databázovej tabuľky a ich zobrazenie v konzole PowerShell. Z databázy sme odvodili hodnoty polí s užívateľskými menami a ich poštovými adresami:

Set-ExecutionPolicy RemoteSigned
Pridať typ -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 používateľov'
$ MYSQLDataAdapter.SelectCommand = $ MYSQLCommand
$ NumberOfDataSets = $ MYSQLDataAdapter.Fill ($ MYSQLDataSet, "data")
foreach ($ DataSet v $ MYSQLDataSet.tables [0])

write-host "User:" $ DataSet.name "Email:" $ DataSet.email

$ Connection.Close ()

V nasledujúcich článkoch zvážime príklad použitia databázy MySQL na zhromažďovanie a ukladanie informácií z denníkov udalostí systému Windows:

  • Sledovanie a zaznamenávanie do databázy informácií o odstránených súboroch v zdieľaných sieťových adresároch