Mengeksekusi Pertanyaan MySQL dari PowerShell

Salah satu fitur menarik dari PowerShell adalah kemampuan untuk terhubung ke database di server jarak jauh, termasuk MySQL. Dengan demikian, langsung dari konsol PowerShell, Anda dapat mengakses tabel MySQL untuk mengakses data. Pada artikel ini, kita akan melihat contoh menghubungkan ke MySQL dari skrip Powershell dan perintah untuk membaca dan menulis data dalam tabel database. Untuk terhubung ke server MySQL, kita memerlukan MySQL .NET Connector khusus, yang dapat diunduh langsung dari situs web resmi MySQL..

Pada saat penulisan, versi konektor terbaru adalah Connector / Net 6.9.8

Catatan. Tidak perlu menginstal versi lengkap dari MySQL .NET Connector, itu akan cukup untuk menyalin file library MySql.Data.dll ke sistem.

Unduh file mysql-connector-net-6.9.8.msi dan instal MySQL .NET Connector dalam konfigurasi minimal.

Di server MySQL, pertama-tama buat basis data yang dengannya kami akan bekerja. Kami melakukan semua operasi pada server DBMS dari perintah baris MySQL CLI (dibahas sebelumnya), tetapi Anda dapat menggunakan grafik phpmyadmin atau utilitas lainnya.

Buat basis data aduser:

mysql> CREATE DATABASE aduser;

Di server MySQL, buat pengguna terpisah dengan hak untuk terhubung dari jarak jauh ke database aduser. Kami akan memberikan pengguna ini hak untuk terhubung dari jarak jauh ke database dari alamat IP 10.10.1.95

mysql> PEMBERI SEMUA HAK ISTIMEWA PADA PENGGUNA. * KE posh@'10.10.1.95 'DIIDENTIFIKASI OLEH' P @ ssw0rd 'DENGAN PEMBERIAN GRANT MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_UPER_CONNECT;

Pilih basis data yang dibuat:

mysql> USE aduser;

Dan buat tabel sederhana 3 bidang: pengidentifikasi, nama pengguna dalam AD dan alamat emailnya.

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

Kami akan kembali ke server dari mana kami akan terhubung ke database MySQL. Misalkan kita ingin tabel memuat semua nama dan alamat email pengguna AD. Informasi ini dapat diperoleh dengan menggunakan cmdlet Get-ADUser..

Skrip Powershell berikut terhubung ke database dan menulis daftar pengguna dan email yang diterima dari AD.

Set-ExecutionPolicy RemoteSigned
# we menghubungkan library MySql.Data.dll
Add-Type -Path 'C: \ Program Files (x86) \ MySQL \ MySQL Connector Net 6.9.8 \ Assemblies \ v4.5 \ MySql.Data.dll'
# DB connection string, server adalah nama server, uid adalah nama pengguna mysql, pwd adalah kata sandi, basis data adalah nama basis data di server
$ Connection = [MySql.Data.MySqlClient.MySqlConnection] @ ConnectionString = 'server = 10.10.1.13; uid = posh; pwd = P @ ssw0rd; database = aduser'
$ Connection.Open ()
$ sql = Objek-Baru MySql.Data.MySqlClient.MySqlCommand
$ sql.Connection = $ Connection
# buat daftar pengguna dengan nama dan alamat email
Direktori aktif Modul Impor
$ UserList = Get-ADUser -SearchBase 'OU = Pengguna, OU = London, DC = contoso, DC = en' -filter * -nama properti, EmailAddress
ForEach ($ pengguna dalam $ UserList)

$ uname = $ user.Name;
$ uemail = $ user.EmailAddress;
# tulis informasi tentang setiap pengguna dalam tabel database
$ sql.CommandText = "INSERT INTO users (Name, Email) VALUES ('$ uname', '$ uemail')"
$ sql.ExecuteNonQuery ()

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

Script berikut digunakan untuk membaca data yang sebelumnya ditulis ke tabel database dan menampilkannya di konsol PowerShell. Kami menyimpulkan dari database nilai-nilai bidang dengan nama pengguna dan alamat surat mereka:

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 = Objek Baru MySql.Data.MySqlClient.MySqlCommand
$ MYSQLDataAdapter = Objek Baru MySql.Data.MySqlClient.MySqlDataAdapter
$ MYSQLDataSet = New-Object System.Data.DataSet
$ MYSQLCommand.Connection = $ Connection
$ MYSQLCommand.CommandText = 'SELECT * dari pengguna'
$ MYSQLDataAdapter.SelectCommand = $ MYSQLCommand
$ NumberOfDataSets = $ MYSQLDataAdapter.Fill ($ MYSQLDataSet, "data")
foreach ($ DataSet dalam $ MYSQLDataSet.tables [0])

tulis-host "Pengguna:" $ DataSet.name "Email:" $ DataSet.email

$ Connection.Close ()

Dalam artikel berikut, kami akan mempertimbangkan contoh penggunaan database MySQL untuk mengumpulkan dan menyimpan informasi dari log peristiwa Windows:

  • Pelacakan dan perekaman dalam informasi database tentang file yang dihapus di direktori jaringan bersama