Powershell 查询SQL数据库资料
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,豆子对SQL Server自带的sqlps模块并不熟悉。昨天发现Don Jones提供的一个SQL模块,理论上支持任何兼容ODBC Driver的数据库(MySQL, MSSQL, Oracle 等等
千家信息网最后更新 2025年01月20日Powershell 查询SQL数据库资料
豆子对SQL Server自带的sqlps模块并不熟悉。昨天发现Don Jones提供的一个SQL模块,理论上支持任何兼容ODBC Driver的数据库(MySQL, MSSQL, Oracle 等等),原理就是调用.Net框架的一些底层函数。使用起来很方便顺手,也不需要学习新的技能。
https://technet.microsoft.com/zh-cn/magazine/hh855069.aspx
下载以后,发现这个模块其实就只包括了两个函数,一个用来查询,另外一个用来修改删除。两个函数都只有3个参数,分别是connectionString, 需要执行的SQL语句,以及是否为SQLServer。 第一个的格式根据数据库有所不同,可以去http://www.connectionstrings.com/ 看对应的例子。 第二个就是真正执行的SQL语句,最后一个其实是个布尔值,如果输入了这个参数就是真,没输入就是假。
function Get-DatabaseData { [CmdletBinding()] param ( [string]$connectionString, [string]$query, [switch]$isSQLServer ) if ($isSQLServer) { Write-Verbose 'in SQL Server mode' $connection = New-Object -TypeName ` System.Data.SqlClient.SqlConnection } else { Write-Verbose 'in OleDB mode' $connection = New-Object -TypeName ` System.Data.OleDb.OleDbConnection } $connection.ConnectionString = $connectionString $command = $connection.CreateCommand() $command.CommandText = $query if ($isSQLServer) { $adapter = New-Object -TypeName ` System.Data.SqlClient.SqlDataAdapter $command } else { $adapter = New-Object -TypeName ` System.Data.OleDb.OleDbDataAdapter $command } $dataset = New-Object -TypeName System.Data.DataSet $adapter.Fill($dataset) $dataset.Tables[0] $connection.close()}function Invoke-DatabaseQuery { [CmdletBinding(SupportsShouldProcess=$True, ConfirmImpact='Low')] param ( [string]$connectionString, [string]$query, [switch]$isSQLServer ) if ($isSQLServer) { Write-Verbose 'in SQL Server mode' $connection = New-Object -TypeName ` System.Data.SqlClient.SqlConnection } else { Write-Verbose 'in OleDB mode' $connection = New-Object -TypeName ` System.Data.OleDb.OleDbConnection } $connection.ConnectionString = $connectionString $command = $connection.CreateCommand() $command.CommandText = $query if ($pscmdlet.shouldprocess($query)) { $connection.Open() $command.ExecuteNonQuery() $connection.close() }}
下载脚本之后,重命名然后拷贝到$env:psmodulepath对应的路径上就可以使用了
现在看看怎么使用。
例如:豆子想查询一下某个数据库的备份记录。首先登陆MSSQL2012 Express的管理界面,利用T-SQL语句查询看看应该的效果。
把T-SQL的语句拷贝下来,作为传入的字符串参数,如下所示,调用第一个查询的函数
Import-Module db$ConnectionString = "server=sydav01\Sophos;database=sophos521;trusted_connection=True;"$query="SELECT TOP 100s.database_name,CAST(CAST(s.backup_size / 1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS bkSize,CAST(DATEDIFF(second, s.backup_start_date,s.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' TimeTaken,s.backup_start_date,CAST(s.first_lsn AS VARCHAR(50)) AS first_lsn,CAST(s.last_lsn AS VARCHAR(50)) AS last_lsn,CASE s.[type] WHEN 'D' THEN 'Full'WHEN 'I' THEN 'Differential'WHEN 'L' THEN 'Transaction Log'END AS BackupType,s.server_name,s.recovery_modelFROM msdb.dbo.backupset swhere s.database_name='SOPHOS521'"Get-DatabaseData -connectionString $ConnectionString -isSQLServer -query $query | ft
结果如下所示
成功获取,可以看见和在图形界面下看见的结果是一样的。
附件:http://down.51cto.com/data/2367697
查询
函数
就是
语句
数据
数据库
参数
模块
两个
拷贝
界面
结果
豆子
输入
不同
成功
例子
原理
只有
图形
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
九江小学生网络安全主题队会
怎么租服务器玩海外游戏
炎龙科技供应商 软件开发
南通万千网络技术公司
dell服务器怎么关闭自动还原
香肠派对服务器爆满无法登录
网络安全法与国防
品质网络技术咨询联系人
网络安全运维存在的问题
数据库是按照什么组合排列的
网络安全与维护就业
成都前端软件开发大概多少钱
火山软件开发平台价格
嘉兴软件开发驻场费用是多少
自贡蜻蜓互联网科技有限公司
mac发件服务器设置
业务软件开发流程
杭州西奥服务器
三门峡软件开发优缺点
企业密信怎么查找以前的服务器
数据库用户密码
超凡先锋服务器卡
Debian软件开发
数据库加密系统品牌
培训档案数据库有什么用
深圳华为运维网络安全
办公自动化网络安全的发展
山西网络安全等级保护专家库
无线网络安全自查整改报告
辽宁网络技术服务案例