从PowerShell运行MySQL查询
时间:2020-01-09 10:46:58 来源:igfitidea点击:
PowerShell的一项有用功能是可以连接到远程服务器(包括MySQL服务器)上的数据库。因此,我们可以寻址MySQL表以直接从PowerShell控制台访问数据。在本文中,我们将处理从PowerShell脚本连接到MySQL DB的示例,以及一些用于读取/写入数据库表中数据的命令。要连接到MySQL服务器,我们需要一个特殊的连接器MySQL .NET连接器,可以从MySQL的官方网站下载该连接器。
在撰写本文时,最新的可用连接器版本为Connector/Net 6.9.9.
注意不需要安装完整版本的MySQL .NET Connector,将MySql.Data.dll复制到计算机就足够了。
下载mysql-connector-net-6.9.9.msi并以最小配置安装MySQL .NET Connector。
选择创建的数据库:
mysql> USE aduser;
并创建由3列组成的最简单的表:ID,AD用户名和电子邮件地址。
mysql> CREATE TABLE users (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), email VARCHAR(100), PRIMARY KEY (ID));
返回到服务器,我们将从该服务器连接到MySQL数据库。假设我们希望在表中显示AD用户的所有名称和电子邮件地址。我们可以使用Get-ADUser cmdlet获取此信息。
以下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=IGI,DC=igift,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()