.SYNOPSIS
Executes SQL against the supplied connection string.
.DESCRIPTION
Executes SQL against the supplied connection string. The result set is then pipelined as a PSObject which can subsequently be formatted and filtered any way you choose.
.PARAMETER query
The query to execute
.PARAMETER connstring
The connection string to use
.EXAMPLE
PS C:\> Exec-Sql -q "select top 1 * from common.country" -conn ""
.EXAMPLE
PS C:\> Exec-Sql -q "select * from common.country (nolock)" -conn "" | where {$_.Code -eq "AX" } | select code, name
#>
function global:Exec-Sql
{
param ([Alias("q")]$query, [Alias("conn")]$connstring)
[system.reflection.assembly]::LoadWithPartialName("System.Data")
$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connstring
$connection.Open()
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand
$command.Connection = $connection
$command.CommandText = $query
$reader = $command.ExecuteReader()
$fieldcount = $reader.FieldCount
while ($reader.Read())
{
$o = new-object psobject
for ($i=0;$i -lt $fieldcount;$i++)
{
$o | add-member -membertype noteproperty $reader.GetName($i) $reader[$reader.GetName($i)].ToString()
}
write-output -inputobject $o
}
$connection.Close()
}
Exec-Sql PowerShell Function
And the hits just keep on coming ... here's a simple little function which executes a query against a database and pipelines the results as PSObjects.