четверг, 26 мая 2016 г.

PowerShell модуль для SQL / PowerShell module for SQL

Добрый день

В этой записе я хочу представить модуль для PowerShell для работы с базами данных, такие как SQL

Все что требуется для работы этого модуля это установлены на компьютер framework не ниже 3.5 и просто подгрузив его в консоль PowerShell или в отдельный скрипт мы получим возможность работы с SQL базами.

Скопируйте и сохраните код в текстовый файл, например SQLDataTools, с расширением psm1

Код модуля:
    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()
    }


Что бы подгрузить модуль используйте командлет
Import-Module (" [путь к файлу] \SQLDataTools.psm1")

А так же переменные и готовые функции для выполнения различных запросов
$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)'




Комментариев нет:

Отправить комментарий