В этой записи я хочу представить модуль для PowerShell для работы с СУБД MS SQL
Требования:
framework не ниже 3.5
Принцип установки прост:
Скопируйте и сохраните код в текстовый файл, например SQLDataTools, с расширением psm1
далее подгрузив его в консоль PowerShell или строкой в скрипте Import-Module (" [путь к файлу] \SQLDataTools.psm1")
получите возможность манипуляции с SQL базами.
Код модуля:
function Get-DatabaseData {
[CmdletBinding()]
param (
[string]$connectionString,
[string]$query,
[switch]$isSQLServer
)
if ($isSQLServer) {
Write-Verbose 'in SQL Server mode'
$connection = New-Object System.Data.SqlClient.SqlConnection
} else {
Write-Verbose 'in OleDB mode'
$connection = New-Object System.Data.OleDb.OleDbConnection
}
$connection.ConnectionString = $connectionString
$command = $connection.CreateCommand()
$command.CommandText = $query
if ($isSQLServer) {
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter $command
} else {
$adapter = New-Object System.Data.OleDb.OleDbDataAdapter $command
}
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataset)
$dataset.Tables[0]
}
function Invoke-DatabaseQuery {
[CmdletBinding()]
param (
[string]$connectionString,
[string]$query,
[switch]$isSQLServer
)
if ($isSQLServer) {
Write-Verbose 'in SQL Server mode'
$connection = New-Object System.Data.SqlClient.SqlConnection
} else {
Write-Verbose 'in OleDB mode'
$connection = New-Object System.Data.OleDb.OleDbConnection
}
$connection.ConnectionString = $connectionString
$command = $connection.CreateCommand()
$command.CommandText = $query
$connection.Open()
$command.ExecuteNonQuery()
$connection.close()
}
Ниже пример пары готовых функции "на все случаи жизни"
$SQl_Server = 'prm-test-sql'
$SQLDateBase = 'audit_adm'
#функция выполнения запроса на SQL сервере
function SET_Query {Invoke-DatabaseQuery -verbose -connectionString ('Server=' + $SQl_Server + ';Database=' + $SQLDateBase + ';Trusted_Connection=True;') -isSQLServer -query $args[0]}
#Функция получения данных от SQL сервера
function GET_Query {Get-DatabaseData -connectionString ('Server=' + $SQl_Server + ';Database=' + $SQLDateBase + ';Trusted_Connection=True;') -isSQLServer -Query $Args[0]}
После ввода функций, с помощью их можно легко получать данные или выполнять различные запросы, например:
GET_Query 'select TOP 10 * From Audit_adm.dbo.Audit_fs'
SET_Query 'delete From Audit_adm.dbo.Audit_fs where DateEvent <= cast (dateadd (day, -180, GETDATE()) as DATE)'
Как вы могли заметить в модуле присутствует и возможность работы с OleDB, в данном посте функционал драйвера не будет рассмотрен