这篇文章主要介绍了PowerShell连接SQL SERVER数据库进行操作的实现代码,需要的朋友可以参考下

核心代码

#配置信息
$Database	= 'DemoDB'
$Server		= '"WIN-AHAU9NO5R6U\DOG"'
$UserName	= 'kk'
$Password	= '123456'

#创建连接对象
$SqlConn = New-Object System.Data.SqlClient.SqlConnection

#使用账号连接MSSQL
$SqlConn.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;user id=$UserName;pwd=$Password"

#或者以 windows 认证连接 MSSQL
#$SqlConn.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;Integrated Security=SSPI;"

#打开数据库连接
$SqlConn.open()

#执行语句方法一
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.connection = $SqlConn
$SqlCmd.commandtext = 'delete top(1) from dbo.B'
$SqlCmd.executenonquery()

#执行语句方法二
$SqlCmd = $SqlConn.CreateCommand()
$SqlCmd.commandtext = 'delete top(1) from dbo.B'
$SqlCmd.ExecuteScalar()

#方法三,查询显示
$SqlCmd.commandtext = 'select name,recovery_model_desc,log_reuse_wait_desc from sys.databases'
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$set = New-Object data.dataset
$SqlAdapter.Fill($set)
$set.Tables[0] | Format-Table -Auto 

#关闭数据库连接
$SqlConn.close()

下面是来自微软的官方帮助文档:Windows PowerShell:使用 PowerShell 处理数据库

您可以使用一些 Windows PowerShell 代码来配置您的数据库,以存储您所需的信息。

Don Jones

数据库是数据存储之王。 那么为什么不利用这些数据库,如 SQL Server 存储一些可以使您的生活更轻松的管理信息的呢? 您可以存储服务器名称、 Windows 版本、 服务包级别、 最后一个管理员登录、 这种东西。
它是与 Windows PowerShell,都是很容易,因为您可以使用它来本机访问 Microsoft 基础数据库功能。NET 框架。 这现在看上去不太像 Windows PowerShell 脚本和更多像一个 C# 程序。 不过,您所需要的代码是很容易模板。 你可以带我来你这里与几个次要的改变它适应几乎任何情况。

用于 SQL 脚本

让我们假设您有一个名为 SYSINFO 的 SQL Server 2008 数据库。 数据库已命名服务器的表。 该表已五列: 服务器名称、 用户名、 LastLogon、 原因和 SPVersion。 这可以是大多是简单的文本列的 varchar 类型。
然而,使 LastLogon 日期时间列。 它现在使用 SQL Server 设置为其默认值的函数。 这样,每次添加新行,它将包含当前日期和时间,而不需要您手动指定。 使原因列 varchar(MAX),如有必要,它可以包含文本,很多。
创建登录脚本在组策略对象 (GPO),将 GPO 链接到您的服务器所在的组织单位 (OU)。 每次有人登录到服务器运行该脚本时。 使用 Windows PowerShell 脚本,您可以在任何装有 Windows PowerShell 2.0 的计算机上的东西。 您需要确保您已经从 Windows Server 2008 R2 (或 Windows 7 远程服务器管理工具包或寄宿) 来编辑该 GPO 时有基于 Windows PowerShell 登录脚本选项的 GPO 模板。
这里是您需要的脚本。 请注意我使用 ↵ 来指示应在此按 enter 键。 仅按 enter 键时你来该符号,如果您希望它能正常工作 (您可以将复制的 HTML 使用符号 & crarr ; 实体):

$reason = Read-Host 'Reason are you logging on'↵
$reason.replace("'","''")↵

这两行提示有人为他们正在登录到服务器的原因 — — 这一点是相当重要的跟踪。 替换功能会将任何单引号替换使用两个单引号,确保我们稍后构建的 SQL 语句将正常工作。 这并不被为了故意 SQL 注入式攻击的防范。 毕竟,我们谈论受信任的管理员,正确吗?

此线将检索操作系统的信息:

$os = Get WmiInfo Win32_OperatingSystem↵

在这里重要的数据是服务器的名称和其当前的服务包版本。 您可能还需要 BuildNumber 属性,告诉您您正在处理的 Windows 版本。
此线加载的一部分。负责处理数据库的.NET 框架:

[assembly.reflection]::loadwithpartialname ('System.Data ') ↵

这些行创建新的数据库连接:

$conn = New-Object System.Data.SqlClient.SqlConnection↵
$conn.ConnectionString = "Data Source=SQLSERVER;Initial Catalog=SYSINFO;Integrated Security=SSPI;"↵

如果您不使用 SQL Server 2008,连接字符串可能会有点不同 (访问ConnectionStrings.com来查找各种不同的数据库的连接字符串示例):

$conn.open () ↵

现在该连接是打开并可供使用。

这两条线创建是我将使用 SQL 服务器发送查询的 SQL 命令。 我已经设置其连接属性设置为"打开",以便 Windows PowerShell 已实际发送命令的方式:

$cmd = New-Object System.Data.SqlClient.SqlCommand↵
$cmd.connection = $conn↵

这所有辛勤的工作。 它创建一个 SQL"插入"查询到数据库表中插入新行。 请注意我使用 – f 格式设置运算符将四条信息插入到查询。 信息入 {x} 占位符,它提供如下操作员的逗号分隔列表中的顺序相同:

$cmd.commandtext = "INSERT INTO servers (servername,username,spversion,reason) VALUES('{0}','{1}','{2}','{3}')" -f
$os.__SERVER,$env.username,$os.servicepackmajorversion,$reason↵

现在我会执行查询,并关闭数据库连接:

$cmd.executenonquery()↵
$conn.close()↵

请确保您关闭该连接或你得打你一顿头的后面的数据库管理员。 您将看到对ConnectionStrings.com,您可以访问大量的数据库。
如果您使用 SQL Server 以外,你得改改"OleDb"对象名称"SqlClient"部分。 此外,它已不推荐使用基于文件的数据库访问像。 为之一,以获取驱动程序,你得要上安装,访问您的服务器,这将是一个可怕的想法。 另一种,这些数据库的性能达不到您将需要为此工作好的水平。

如果你没有可以承载数据库的 SQL Server 实例,获取一份快递版安装的地方。 这足够低的这种技术将可能产生的交通。
很明显,您可以修改此做相当多的技术。 可以将列添加到数据库,并让您的脚本收集其他信息。 您需要做的一件事是精通 SQL 语言本身。 您不需要的大师,但你要能够编写基本的查询。
如果您需要上 (在此级别工作的几乎相同每个主要的数据库平台) 的 SQL 语言入门,签出这视频系列创建行业标准 SQL 语言提供了完整的教程。 它还包括像 SQL Server、 Oracle、 MySQL 平台之间的主要差异,等等。
这里是整个脚本:

$reason = Read-Host 'Reason are you logging on'↵
$reason.replace("'","''")↵
$os = Get-WmiInfo Win32_OperatingSystem↵
[assembly.reflection]::loadwithpartialname('System.Data')↵
$conn = New-Object System.Data.SqlClient.SqlConnection↵
$conn.ConnectionString = "Data Source=SQLSERVER;Initial Catalog=SYSINFO;Integrated Security=SSPI;"↵
$conn.open()↵
$cmd = New-Object System.Data.SqlClient.SqlCommand↵
$cmd.connection = $conn↵
$cmd.commandtext = "INSERT INTO servers (servername,username,spversion,reason) VALUES('{0}','{1}','{2}','{3}')" -f $os.__SERVER,$env.username,$os.servicepackmajorversion,$reason↵
$cmd.executenonquery()↵
$conn.close()↵
最新资讯
蔡文胜真的看好美图吗?

蔡文胜真的看好美图吗

仅凭蔡文胜这样的增持方式是不可能长久支撑美图股价的
中兴遭遇美国精确打击 缺芯的中国科技产业如何还击

中兴遭遇美国精确打击

中兴的主要产品是电信系统设备,其中最主要的就是无线基
让机器像人类一样多模态交互,会是物联网的胜负手吗?

让机器像人类一样多模

“AI of Things”在等待的,可能不仅是语音交互,而是耳目
第四季度苹果占全球手机利润86% iPhone X独占35%

第四季度苹果占全球手

Counterpoint数据显示,去年第四季度,全球手机市场的整体
别看软乎乎的!它们都是受宠的不正经机器人

别看软乎乎的!它们都是

甩开钢筋铁骨,机器人也开始玩软萌了。
聂卫平VS章文嵩是关公战秦琼? “等一等”算法才是大问题

聂卫平VS章文嵩是关公

聂卫平与章文嵩这场隔空论战,颇有一些“关公战秦琼”的
最新文章
PowerShell使用match操作符来筛选数组

PowerShell使用match

本文介绍PowerShell中使用match操作符,配合正则表达式
PowerShell 语音计算器实现代码

PowerShell 语音计算

带中文发音功能的计算器程序,支持鼠标和小键盘输入,支持
通过DNS TXT记录执行powershell

通过DNS TXT记录执行p

这篇文章主要介绍了通过DNS TXT记录执行powershell的
如何防范PowerShell代码注入漏洞绕过受限语言模式

如何防范PowerShell代

这篇文章主要介绍了如何防范PowerShell代码注入漏洞绕
PowerShell管道入门必看篇(管道例子大全)

PowerShell管道入门必

下面小编就为大家带来一篇PowerShell管道入门必看篇(
使用 powershell 创建虚拟机

使用 powershell 创建

Azure PowerShell 模块用于从 PowerShell 命令行或脚