A MySQL lekérdezések végrehajtása a PowerShellről

A PowerShell egyik érdekes tulajdonsága a távoli szerverek adatbázisaihoz való kapcsolódás képessége, ideértve a MySQL-t is. Így közvetlenül a PowerShell konzolból hozzáférhet a MySQL táblákhoz az adatok eléréséhez. Ebben a cikkben példákat mutatunk be a MySQL-hez való kapcsolódásra egy Powershell-parancsfájlból és az adatbázis-táblákban szereplő adatok olvasására és írására szolgáló parancsokkal. A MySQL szerverhez való csatlakozáshoz szükségünk lesz egy speciális MySQL .NET csatlakozóra, amelyet közvetlenül a hivatalos MySQL webhelyről tölthetünk le..

Az írás idején a csatlakozó legújabb verziója a Connector / Net 6.9.8

megjegyzés. A MySQL .NET Connector teljes verzióját nem kell telepíteni, elegendő a MySql.Data.dll könyvtári fájl másolása a rendszerbe..

Töltse le a mysql-connector-net-6.9.8.msi fájlt és telepítse a MySQL .NET csatlakozót minimális konfigurációval.

A MySQL szerveren először hozzon létre egy adatbázist, amellyel együtt fogunk dolgozni. Az összes műveletet a DBMS kiszolgálón a MySQL CLI sorparancs segítségével hajtjuk végre (korábban tárgyaltuk), de használhatja a phpmyadmin grafikát vagy bármilyen más segédprogramot is.

Hozzon létre egy felhasználói adatbázist:

mysql> CREATE DATABASE aduser;

A MySQL szerveren hozzon létre egy külön felhasználót, amelynek joga van távolról csatlakozni a felhasználói adatbázishoz. Jogot adunk ennek a felhasználónak a távoli csatlakozásra az adatbázishoz a 10.10.1.95 IP-címről

mysql> MINDEN PRIVILÉGIÁT MEGADJA A felhasználói felületen. * TO posh@'10.10.1.95 '' AZONOSÍTVA 'P @ ssw0rd' 'JELENTÉSI OPCIÓKkal MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECT;

Válassza ki a létrehozott adatbázist:

mysql> USE aduser;

Készítsen 3 mezőből álló egyszerű táblát: azonosító, felhasználónév az AD-ben és e-mail címe.

mysql> A TÁBLÁZAT LÉTREHOZÁSA (ID INT NINCS AUTO_INCREMENT, név VARCHAR (100), e-mail VARCHAR (100), PRIMARY KULCS (ID));

Visszatérünk a szerverhez, ahonnan csatlakozunk a MySQL adatbázishoz. Tegyük fel, hogy azt akarjuk, hogy a táblázat tartalmazza az AD felhasználók összes nevét és e-mail címét. Ez az információ a Get-ADUser parancsmag segítségével érhető el..

A következő Powershell szkript csatlakozik az adatbázishoz, és felírja az AD-től kapott felhasználók és e-mailek listáját.

Set-ExecutionPolicy RemoteSigned
# összekapcsoljuk a MySql.Data.dll könyvtárat
Kiegészítő típus - 'C: \ Program Files (x86) elérési út: \ MySQL \ MySQL Connector Net 6.9.8 \ Összeállítások \ v4.5 \ MySql.Data.dll'
# DB kapcsolati karakterlánc, a szerver a szerver neve, uid a felhasználó mysql neve, pwd a jelszó, az adatbázis az adatbázis neve a szerveren
$ Connection = [MySql.Data.MySqlClient.MySqlConnection] @ ConnectionString = 'szerver = 10.10.1.13; uid = posh; pwd = P @ ssw0rd; adatbázis = használó'
$ Connection.Open ()
$ sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$ sql.Connection = $ kapcsolat
# létrehozza a felhasználók listáját névvel és e-mail címmel
Import-Modul aktív könyvtár
$ UserList = Get-ADUser -SearchBase 'OU = Felhasználók, OU = London, DC = contoso, DC = hu' -szűrő * -tulajdonos neve, EmailAddress
ForEach ($ felhasználó a $ felhasználói listában)

$ uname = $ user.Name;
$ uemail = $ user.EmailAddress;
# írjon információkat az egyes felhasználókról az adatbázis-táblában
$ sql.CommandText = "INSERT INTO felhasználók (név, e-mail) ÉRTÉKEK ('$ uname', '$ uemail')"
$ sql.ExecuteNonQuery ()

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

A következő szkript az adatbázis táblába korábban beírt adatok olvasására és a PowerShell konzolon történő megjelenítésére szolgál. Az adatbázisból kiszámítottuk a felhasználói névvel és a levelezési címmel ellátott mezők értékét:

Set-ExecutionPolicy RemoteSigned
Kiegészítő típus - 'C: \ Program Files (x86) elérési út: \ MySQL \ MySQL Connector Net 6.9.8 \ Összeállítások \ v4.5 \ MySql.Data.dll'
$ Connection = [MySql.Data.MySqlClient.MySqlConnection] @ ConnectionString = 'szerver = 10.10.1.13; uid = posh; pwd = P @ ssw0rd; adatbázis = használó'
$ Connection.Open ()
$ MYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$ MYSQLDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter
$ MYSQLDataSet = Új objektum System.Data.DataSet
$ MYSQLCommand.Connection = $ kapcsolat
$ MYSQLCommand.CommandText = 'SELECT * a felhasználókból'
$ MYSQLDataAdapter.SelectCommand = $ MYSQLCommand
$ NumberOfDataSets = $ MYSQLDataAdapter.Fill ($ MYSQLDataSet, "data")
foreach ($ DataSet a $ MYSQLDataSet.table-ban [0])

write-host "Felhasználó:" $ DataSet.name "E-mail:" $ DataSet.email

$ Connection.Close ()

A következő cikkekben példát veszünk a MySQL adatbázis felhasználására az információk gyűjtésére és tárolására a Windows eseménynaplóiból:

  • A megosztott hálózati könyvtárakban törölt fájlokkal kapcsolatos információk nyomon követése és rögzítése az adatbázisban