Изпълнение на MySQL заявки от PowerShell

Една от интересните характеристики на PowerShell е възможността да се свързва към бази данни на отдалечени сървъри, включително MySQL. По този начин, директно от конзолата PowerShell, можете да получите достъп до MySQL таблици за достъп до данни. В тази статия ще разгледаме примери за свързване към MySQL от скрипт на Powershell и команди за четене и запис на данни в таблици на база данни. За да се свържем със MySQL сървъра, ще ни е необходим специален MySQL .NET Connector, който може да бъде изтеглен директно от официалния уебсайт на MySQL..

По време на писането, последната версия на конектора е Connector / Net 6.9.8

забележка. Не е необходимо да инсталирате пълната версия на MySQL .NET Connector, достатъчно е да копирате файла на библиотеката MySql.Data.dll в системата.

Изтеглете файла mysql-connector-net-6.9.8.msi и инсталирайте MySQL .NET Connector в минимална конфигурация.

На сървъра MySQL първо създайте база данни, с която ще работим. Извършваме всички операции на DBMS сървъра от командната линия MySQL CLI (обсъдена по-рано), но можете да използвате графиката на phpmyadmin или друга помощна програма.

Създайте база данни на aduser:

mysql> CREATE DATABASE aduser;

На MySQL сървъра създайте отделен потребител с право на отдалечена връзка с базата данни на aduser. Ще дадем на този потребител правото да се свърже дистанционно с базата данни от IP адреса 10.10.1.95

mysql> ПРЕДОСТАВЯТ ВСИЧКИ ПРИВИЛЕГИ НА aduser. * TO posh@'10.10.1.95 'ИДЕНТИФИЦИРАНИ ОТ' P @ ssw0rd 'С ГАРАНЦИОННА ОПЦИЯ MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX__PER_HOUR 0 MAX__PER_HOUR 0 MAX__CURN

Изберете създадената база данни:

mysql> USE aduser;

И създайте проста таблица от 3 полета: идентификатор, потребителско име в AD и неговия имейл адрес.

mysql> CREATE TABLE потребители (id INT НЕ NULL AUTO_INCREMENT, име VARCHAR (100), имейл VARCHAR (100), PRIMARY KEY (ID));

Ще се върнем към сървъра, от който ще се свържем с MySQL базата данни. Да предположим, че искаме таблицата да съдържа всички имена и имейл адреси на потребители на AD. Тази информация може да бъде получена с командлета Get-ADUser..

Следният скрипт на Powershell се свързва към базата данни и му пише списък с потребители и имейл, получени от AD.

Set-ExecutionPolicy RemoteSigned
# свързваме библиотеката MySql.Data.dll
Add-Type -Path 'C: \ Program Files (x86) \ MySQL \ MySQL Connector Net 6.9.8 \ Асембли \ v4.5 \ MySql.Data.dll'
# Низ за връзка на DB, сървърът е името на сървъра, uid е името на mysql на потребителя, pwd е паролата, базата данни е името на базата данни на сървъра
$ Connection = [MySql.Data.MySqlClient.MySqlConnection] @ ConnectionString = 'сървър = 10.10.1.13; uid = posh; pwd = P @ ssw0rd; база данни = aduser'
$ Connection.Open ()
$ sql = Нов обект MySql.Data.MySqlClient.MySqlCommand
$ sql.Connection = $ връзка
# създайте списък с потребители с имена и имейл адреси
Импорт-модул activedirectory
$ UserList = Get-ADUser -SearchBase 'OU = Потребители, OU = Лондон, DC = contoso, DC = en' -filter * -име на свойствата, имейл адрес
ForEach ($ потребител в $ UserList)

$ uname = $ user.Name;
$ uemail = $ user.EmailAddress;
# напишете информация за всеки потребител в таблицата на базата данни
$ sql.CommandText = "ВМЕСТЕТЕ В потребителите (име, имейл) VALUES ('$ uname', '$ uemail')"
$ sql.ExecuteNonQuery ()

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

Следният скрипт се използва за четене на данни, записани по-рано в таблицата на базата данни и показването им в конзолата PowerShell. Извадихме от базата данни стойностите на полетата с потребителски имена и техните пощенски адреси:

Set-ExecutionPolicy RemoteSigned
Add-Type -Path 'C: \ Program Files (x86) \ MySQL \ MySQL Connector Net 6.9.8 \ Асембли \ v4.5 \ MySql.Data.dll'
$ Connection = [MySql.Data.MySqlClient.MySqlConnection] @ ConnectionString = 'сървър = 10.10.1.13; uid = posh; pwd = P @ ssw0rd; база данни = aduser'
$ Connection.Open ()
$ MYSQLCommand = Нов обект MySql.Data.MySqlClient.MySqlCommand
$ MYSQLDataAdapter = Нов обект MySql.Data.MySqlClient.MySqlDataAdapter
$ MYSQLDataSet = Система за нов обект.Data.DataSet
$ MYSQLCommand.Connection = $ връзка
$ MYSQLCommand.CommandText = 'ИЗБЕРЕТЕ * от потребителите'
$ MYSQLDataAdapter.SelectCommand = $ MYSQLCommand
$ NumberOfDataSets = $ MYSQLDataAdapter.Fill ($ MYSQLDataSet, "данни")
foreach ($ DataSet в $ MYSQLDataSet.tables [0])

write-host "Потребител:" $ DataSet.name "Имейл:" $ DataSet.email

$ Connection.Close ()

В следващите статии ще разгледаме пример за използване на базата данни MySQL за събиране и съхраняване на информация от дневниците на събития на Windows:

  • Проследяване и запис в базата данни информация за изтрити файлове в споделени мрежови директории