Една от интересните характеристики на 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:
- Проследяване и запис в базата данни информация за изтрити файлове в споделени мрежови директории