PowerShell连接SQL SERVER数据库进行操作的实现代码

 更新时间:2020年6月30日 23:52  点击:1902

核心代码

#配置信息
$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()↵

[!--infotagslink--]

相关文章

  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • MySQL性能监控软件Nagios的安装及配置教程

    这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
  • PostgreSQL判断字符串是否包含目标字符串的多种方法

    这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
  • PostgreSQL TIMESTAMP类型 时间戳操作

    这篇文章主要介绍了PostgreSQL TIMESTAMP类型 时间戳操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-26
  • 详解Mysql中的JSON系列操作函数

    新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下...2016-08-23
  • Powershell实现编写和运行脚本

    本文为那些对学习 Windows PowerShell 命令行和脚本编写环境感兴趣的系统管理员提供了资源。也请告诉我们本网站如何才能对您更有用处。...2020-06-30
  • postgresql 实现多表关联删除

    这篇文章主要介绍了postgresql 实现多表关联删除操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-02
  • Postgresql 如何选择正确的关闭模式

    这篇文章主要介绍了Postgresl 如何选择正确的关闭模式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-18
  • 深入研究mysql中的varchar和limit(容易被忽略的知识)

    为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql中遇到的一些commen sense类型的问题。 ...2015-03-15
  • postgresql数据添加两个字段联合唯一的操作

    这篇文章主要介绍了postgresql数据添加两个字段联合唯一的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • mysql的3种分表方案

    一、先说一下为什么要分表:当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1...2014-05-31
  • Vscode上使用SQL的方法

    这篇文章主要介绍了Vscode上使用SQL的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-26
  • Windows服务器MySQL中文乱码的解决方法

    我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • PostgreSQL 字符串处理与日期处理操作

    这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • postgresql重置序列起始值的操作

    这篇文章主要介绍了postgresql重置序列起始值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-04
  • Centos5.5中安装Mysql5.5过程分享

    这几天在centos下装mysql,这里记录一下安装的过程,方便以后查阅Mysql5.5.37安装需要cmake,5.6版本开始都需要cmake来编译,5.5以后的版本应该也要装这个。安装cmake复制代码 代码如下: [root@local ~]# wget http://www.cm...2015-03-15
  • SQL Server中执行动态SQL

    本文详细讲解了SQLServer中执行动态SQL的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-05-19
  • 用VirtualBox构建MySQL测试环境

    宿主机使用网线的时候,客户机在Bridged Adapter模式下,使用Atheros AR8131 PCI-E Gigabit Ethernet Controller上网没问题。 宿主机使用无线的时候,客户机在Bridged Adapter模式下,使用可选项里唯一一个WIFI选项,Microsoft Virtual Wifi Miniport Adapter也无法上网,故弃之。...2013-09-19