Izvršavanje MySQL upita iz PowerShell-a

Jedna od zanimljivih značajki PowerShell-a je mogućnost povezivanja s bazama podataka na udaljenim poslužiteljima, uključujući MySQL. Dakle, izravno s PowerShell konzole možete pristupiti MySQL tablicama za pristup podacima. U ovom ćemo članku pogledati primjere povezivanja na MySQL iz Powershell skripte i naredbe za čitanje i pisanje podataka u tablice baza podataka. Da bismo se povezali s MySQL serverom, trebat će nam poseban MySQL .NET Connector koji se može preuzeti izravno sa službenog MySQL web mjesta..

U trenutku pisanja teksta najnovija inačica priključka je Connector / Net 6.9.8

primjedba. Nije potrebno instalirati punu verziju MySQL .NET Connector, bit će dovoljno kopirati datoteku biblioteke MySql.Data.dll u sustav.

Preuzmite datoteku mysql-connector-net-6.9.8.msi i instalirajte MySQL .NET Connector u minimalnoj konfiguraciji.

Na MySQL poslužitelju najprije stvorite bazu podataka s kojom ćemo raditi. Sve operacije na DBMS poslužitelju izvodimo iz naredbe MySQL CLI (raspravljano ranije), ali možete koristiti phpmyadmin grafiku ili bilo koji drugi uslužni program.

Izradite bazu podataka adusera:

mysql> USTVARITE DATABASU aduser;

Na MySQL poslužitelju stvorite zasebnog korisnika s pravom na daljinsko povezivanje s bazom podataka adusera. Ovom ćemo korisniku dati pravo na daljinsko povezivanje s bazom podataka s IP adrese 10.10.1.95

mysql> PODELITE SVE PRIVILEGE NA adusera. * DO posh@'10.10.1.95 'IDENTIFIKIRANI' P @ ssw0rd 'SA GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX__PER_HOUR 0 MAX__PER_HOUR 0 MAX__KONERA

Odaberite kreiranu bazu podataka:

mysql> USE aduser;

I stvorite jednostavnu tablicu od 3 polja: identifikator, korisničko ime u AD-u i njegova adresa e-pošte.

mysql> CREATE TABLE korisnici (id INT NOT NULL AUTO_INCREMENT, ime VARCHAR (100), e-pošta VARCHAR (100), PRIMARY KEY (ID));

Vratit ćemo se na poslužitelj s kojeg ćemo se povezati u MySQL bazu podataka. Pretpostavimo da želimo da tablica sadrži sva imena i adrese e-pošte AD korisnika. Te se informacije mogu dobiti pomoću cmdleta Get-ADUser..

Sljedeća Powershell skripta povezuje se s bazom podataka i upisuje joj popis korisnika i e-poštu primljene od AD-a.

Set-ExecutionPolicy RemoteSigned
# povezujemo biblioteku MySql.Data.dll
Add-Type-Path 'C: \ Programske datoteke (x86) \ MySQL \ MySQL Connector Net 6.9.8 \ Skupštine \ v4.5 \ MySql.Data.dll'
# DB string veze, poslužitelj je ime poslužitelja, uid je mysql ime korisnika, pwd je lozinka, baza podataka je naziv baze podataka na poslužitelju
$ Connection = [MySql.Data.MySqlClient.MySqlConnection] @ ConnectionString = 'server = 10.10.1.13; uid = posh; pwd = P @ ssw0rd; baza podataka = aduser'
$ Veza.Otvorite ()
$ sql = Novi objekt MySql.Data.MySqlClient.MySqlCommand
$ sql.Connection = $ veza
# stvorite popis korisnika s imenima i adresama e-pošte
Uvoz-modul aktivni direktorij
$ UserList = Get-ADUser -SearchBase 'OU = Korisnici, OU = London, DC = contoso, DC = hr' -filter *-ime vlasništva, EmailAddress
ForEach ($ korisnik u $ UserList)

$ uname = $ user.Name;
$ uemail = $ user.EmailAddress;
# upišite podatke o svakom korisniku u tablicu baze podataka
$ sql.CommandText = "INSERT INTO korisnike (ime, e-pošta) VALUES ('$ uname', '$ uemail')"
$ sql.ExecuteNonQuery ()

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

Sljedeća skripta koristi se za čitanje podataka prethodno napisanih u tablici baze podataka i njihovo prikazivanje u PowerShell konzoli. Iz baze podataka smo zaključili vrijednosti polja s korisničkim imenima i njihovim adresama e-pošte:

Set-ExecutionPolicy RemoteSigned
Add-Type-Path 'C: \ Programske datoteke (x86) \ MySQL \ MySQL Connector Net 6.9.8 \ Skupštine \ v4.5 \ MySql.Data.dll'
$ Connection = [MySql.Data.MySqlClient.MySqlConnection] @ ConnectionString = 'server = 10.10.1.13; uid = posh; pwd = P @ ssw0rd; baza podataka = aduser'
$ Veza.Otvorite ()
$ MYSQLCommand = Novi objekt MySql.Data.MySqlClient.MySqlCommand
$ MYSQLDataAdapter = Novi objekt MySql.Data.MySqlClient.MySqlDataAdapter
$ MYSQLDataSet = Novi objektni sustav.Data.DataSet
$ MYSQLCommand.Connection = $ veza
$ MYSQLCommand.CommandText = 'ODABIR * od korisnika'
$ MYSQLDataAdapter.SelectCommand = $ MYSQLCommand
$ NumberOfDataSets = $ MYSQLDataAdapter.Fill ($ MYSQLDataSet, "podaci")
foreach ($ DataSet u $ MYSQLDataSet.tables [0])

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

$ Connection.Close ()

U sljedećim ćemo člancima razmotriti primjer korištenja MySQL baze podataka za prikupljanje i spremanje podataka iz dnevnika događaja Windows:

  • Praćenje i snimanje u bazu podataka o izbrisanim datotekama u mrežnim direktorijima