首页
看点啥
插画图片
首页 科技看点 PowerShell连接SQL SERVER数据库进行操作的实现方式代码实用指南

PowerShell连接SQL SERVER数据库进行操作的实现方式代码实用指南

2026-09-04 0

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“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()↵
您可能感兴趣的文章:
  • Powershell访问SQL Server数据库代码实例
  • powershell常用命令分类
  • powershell玩转SQL SERVER所有版本的方法
喜欢(0)

上一篇

电视剧《戈德堡一家第一季》剧情说明

电视剧《戈德堡一家第一季》剧情说明

下一篇

一文教会你用正则表达式校验日期时间格式实用指南

猜你喜欢