Izvajanje poizvedb MySQL iz PowerShell-a

Ena od zanimivih lastnosti PowerShell je možnost povezovanja z bazami podatkov na oddaljenih strežnikih, vključno z MySQL. Tako lahko neposredno s konzole PowerShell dostopate do tabel MySQL za dostop do podatkov. V tem članku si bomo ogledali primere povezovanja na MySQL iz skripta Powershell in ukaze za branje in zapisovanje podatkov v tabele baz podatkov. Za povezavo s strežnikom MySQL bomo potrebovali poseben MySQL .NET Connector, ki ga je mogoče prenesti neposredno s uradne spletne strani MySQL..

V času pisanja je zadnja različica priključka Connector / Net 6.9.8

Opomba. Ni potrebno namestiti celotne različice MySQL .NET Connector, dovolj bo kopirati datoteko knjižnice MySql.Data.dll v sistem.

Prenesite datoteko mysql-connector-net-6.9.8.msi in namestite MySQL .NET Connector v minimalni konfiguraciji.

Na strežniku MySQL najprej ustvarite bazo podatkov, s katero bomo delali. Vse strežbe na strežniku DBMS izvajamo iz ukaza vrstice MySQL CLI (razpravljali smo prej), vendar lahko uporabite grafiko phpmyadmin ali katero koli drugo pripomoček.

Ustvarite bazo podatkov aduser:

mysql> CREATE BATABASE aduser;

Na strežniku MySQL ustvarite ločenega uporabnika s pravico do daljinske povezave z bazo podatkov aduserja. Temu uporabniku bomo dali pravico do daljinske povezave z bazo podatkov z naslova IP 10.10.1.95

mysql> PODELI VSE PRIVILEGE NA aduserju. * DO posh@'10.10.1.95 'IDENTIFIKIRANI s' P @ ssw0rd 'Z MOŽNIM MOŽNOSTI MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX__PER_HOUR 0 MAX__PER_HOUR 0 MAX__PER_HOUR 0 MAX__PER_HOUR 0 MAX__KONOX

Izberite ustvarjeno bazo podatkov:

mysql> USE aduser;

In ustvarite preprosto tabelo s tremi polji: identifikator, uporabniško ime v AD-ju in njegov e-poštni naslov.

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

Vrnili se bomo k strežniku, s katerega se bomo povezali v bazo MySQL. Recimo, da želimo, da tabela vsebuje vsa imena in e-poštne naslove uporabnikov AD. Te podatke lahko dobite z ukaznim ukazom Get-ADUser..

Naslednji Powershell skript se poveže z bazo in ji napiše seznam uporabnikov in e-poštnih sporočil, prejetih od AD-ja.

Set-ExecutionPolicy RemoteSigned
# povezujemo knjižnico MySql.Data.dll
Add-Type-Path 'C: \ Program Files (x86) \ MySQL \ MySQL Connector Net 6.9.8 \ Sklopi \ v4.5 \ MySql.Data.dll'
# Povezovalni niz DB, strežnik je ime strežnika, uid je mysql ime uporabnika, pwd je geslo, baza podatkov je ime baze podatkov na strežniku
$ Connection = [MySql.Data.MySqlClient.MySqlConnection] @ ConnectionString = 'strežnik = 10.10.1.13; uid = posh; pwd = P @ ssw0rd; baza podatkov = aduser'
$ Connection.Open ()
$ sql = Nov objekt MySql.Data.MySqlClient.MySqlCommand
$ sql.Connection = $ povezava
# ustvari seznam uporabnikov z imeni in e-poštnimi naslovi
Uvozni modul aktivni imenik
$ UserList = Get-ADUser -SearchBase 'OU = Uporabniki, OU = London, DC = contoso, DC = en' -filter *-ime lastnosti, EmailAddress
ForEach ($ uporabnik v $ UserList)

$ uname = $ user.Name;
$ uemail = $ user.EmailAddress;
# napišite podatke o vsakem uporabniku v tabelo baze podatkov
$ sql.CommandText = "VSTAVITE V uporabnike (ime, e-poštni naslov) VALUES ('$ uname', '$ uemail')"
$ sql.ExecuteNonQuery ()

$ Reader.Zaprite ()
$ Connection.Zaprite ()

Naslednji skript se uporablja za branje predhodno napisanih podatkov v tabeli baze podatkov in njihovo prikazovanje v konzoli PowerShell. Iz baze podatkov smo ugotovili vrednosti polj z uporabniškimi imeni in njihovimi poštnimi naslovi:

Set-ExecutionPolicy RemoteSigned
Add-Type-Path 'C: \ Program Files (x86) \ MySQL \ MySQL Connector Net 6.9.8 \ Sklopi \ v4.5 \ MySql.Data.dll'
$ Connection = [MySql.Data.MySqlClient.MySqlConnection] @ ConnectionString = 'strežnik = 10.10.1.13; uid = posh; pwd = P @ ssw0rd; baza podatkov = aduser'
$ Connection.Open ()
$ MYSQLCommand = Nov objekt MySql.Data.MySqlClient.MySqlCommand
$ MYSQLDataAdapter = Nov objekt mojSql.Data.MySqlClient.MySqlDataAdapter
$ MYSQLDataSet = Nov objektni sistem.Data.DataSet
$ MYSQLCommand.Connection = $ povezava
$ MYSQLCommand.CommandText = 'IZBERI * od uporabnikov'
$ MYSQLDataAdapter.SelectCommand = $ MYSQLCommand
$ NumberOfDataSets = $ MYSQLDataAdapter.Fill ($ MYSQLDataSet, "podatki")
foreach ($ DataSet v $ MYSQLDataSet.tables [0])

piši gostitelj "Uporabnik:" $ DataSet.name "E-pošta:" $ DataSet.email

$ Connection.Zaprite ()

V naslednjih člankih bomo obravnavali primer uporabe baze podatkov MySQL za zbiranje in shranjevanje informacij iz dnevnikov dogodkov Windows:

  • Sledenje in zapisovanje v bazo podatkov o izbrisanih datotekah v omrežnih imenikih v skupni rabi