הפעל שאילתות MySQL מ- PowerShell
אחת התכונות השימושיות של PowerShell היא ההזדמנות להתחבר למסדי נתונים בשרתים מרוחקים, כולל MySQL אלה. לכן, באפשרותך לטפל בטבלאות MySQL כדי לגשת לנתונים ישירות ממסוף PowerShell. במאמר זה, נעסוק בדוגמאות של חיבור ל- MySQL DB מסקריפט PowerShell וכמה פקודות לקריאה/כתיבה של הנתונים בטבלאות מסד נתונים. כדי להתחבר לשרת MySQL, אנחנו צריכים מחבר מיוחד - MySQL .NET Connector, אשר ניתן להוריד מהאתר הרשמי MySQL.
בזמן כתיבת מאמר זה, גרסת המחבר העדכנית ביותר הזמינה הייתה Connector/Net 6.9.9.
הערה. זה לא נדרש להתקין את הגירסה המלאה של MySQL .NET Connector, זה מספיק כדי להעתיק MySql.Data.dll למחשב.
הורד mysql-connector-net-6.9.9.msi והתקן את MySQL .NET Connector בתצורה המינימלית.
מראש, צור מסד נתונים לעבוד איתו בשרת MySQL שלך. כל הפעולות בשרת מסד הנתונים מבוצעות משורת הפקודה MySQL CLI, אך ניתן להשתמש בכלי גרפי phpmyadmin או בכל כלי מתאים אחר.
צור מסד נתונים של מודעות:
mysql> CREATE DATABASE aduser;בשרת MySQL, צור משתמש נפרד עם הרשאה להתחבר למסד הנתונים של Aduser מרחוק. הענק למשתמש זה הרשאה להתחבר למסד הנתונים מרחוק מכתובת ה- IP 10.1.1.195:
mysql>GRANT ALL PRIVILEGES ON aduser.* TO posh@'10.1.1.195' IDENTIFIED BY 'P@ssw0rd' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;בחר את מסד הנתונים שנוצר:
mysql> USE aduser;וליצור את הטבלה הפשוטה ביותר המורכבת מ 3 עמודות: מזהה, שם משתמש AD וכתובת דואר אלקטרוני.
mysql> CREATE TABLE users (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), email VARCHAR(100), PRIMARY KEY (ID));חזור לשרת, שממנו נתחבר למסד הנתונים MySQL. נניח שאנו רוצים שכל השמות וכתובות הדואר האלקטרוני של משתמשי AD יוצגו בטבלה. באפשרותך לקבל מידע זה באמצעות cmdlet Get-ADUser.
קובץ ה- script הבא של PowerShell מאפשר להתחבר למסד הנתונים ולכתוב את רשימת המשתמשים ואת הודעות הדואר האלקטרוני שלהם שהתקבלו מ- AD.
Set-ExecutionPolicy RemoteSigned
#connect the library MySql.Data.dll
Add-Type -Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.9\Assemblies\v4.5\MySql.Data.dll'
# database connection string, server — server name, uid - mysql user name, pwd- password, database — name of the database on the server
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'}
$Connection.Open()
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $Connection
#prepare a list of users from specific OU containing names and e-mail addresses
Import-Module activedirectory
$UserList=Get-ADUser -SearchBase ‘OU=Users,OU=Paris,DC=adatum,DC=com’ -filter * -properties name, EmailAddress
ForEach($user in $UserList)
{
$uname=$user.Name;
$uemail=$user.EmailAddress;
#write the information about each use to the database table
$sql.CommandText = "INSERT INTO users (Name,Email) VALUES ('$uname','$uemail')"
$sql.ExecuteNonQuery()
}
$Reader.Close()
$Connection.Close()קובץ ה-script הבא משמש לקריאת הנתונים שהוזנו בעבר למסד הנתונים ולהצגתם במסוף PowerShell. הצגנו את השדות המכילים את השמות וכתובות הדואר האלקטרוני של המשתמשים:
Set-ExecutionPolicy RemoteSigned
Add-Type -Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.9\Assemblies\v4.5\MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'}
$Connection.Open()
$MYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$MYSQLDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter
$MYSQLDataSet = New-Object System.Data.DataSet
$MYSQLCommand.Connection=$Connection
$MYSQLCommand.CommandText='SELECT * from users'
$MYSQLDataAdapter.SelectCommand=$MYSQLCommand
$NumberOfDataSets=$MYSQLDataAdapter.Fill($MYSQLDataSet, "data")
foreach($DataSet in $MYSQLDataSet.tables[0])
{
write-host "User:" $DataSet.name "Email:" $DataSet.email
}
$Connection.Close()
במאמרים הבאים, נשקול את המקרה של שימוש במסד נתונים MySQL כדי לאסוף ולאחסן מידע מיומני אירועים של Windows ( מעקב אחר מחיקת קבצים באמצעות מדיניות ביקורת ומסד נתונים MSSQL).



