Functions/Internal/Invoke-Query.ps1
Function Invoke-Query { [cmdletbinding()] param( [parameter()] [string] $ServerInstance, [string] $Database, [string] $TargetUser, [securestring] $TargetPasswordSecure, [pscredential] $Credential, [string] $Query, $MaxCharLength ) if ($MaxCharLength) { write-host "MaxCharLength is ignored in Invoke-query" } $con = New-SqlConnection -TargetUser $TargetUser -TargetPasswordSecure $TargetPasswordSecure -DatabaseName $Database -TargetServer $ServerInstance -Credential $Credential try{ Invoke-QueryInternal -Connection $con -Query $Query } finally { Close-SqlConnection $con } } Function Close-SqlConnection{ [cmdletbinding()] param( $Connection ) Write-Verbose "Close Connection" if ($null -ne $connection) { $connection.Close(); $connection.Dispose(); } } Function Invoke-QueryInternal { [cmdletbinding()] param( $Connection, [string] $Query) Write-Verbose "Invoke-SqlScalar $Query" $SqlCommand = New-Object System.Data.SqlClient.SqlCommand $SqlCommand.Connection = $connection $SqlCommand.CommandText = $Query; Write-Verbose "Execute query" $results = New-Object System.Data.DataTable $sqladapter = New-Object System.Data.SqlClient.SqlDataAdapter $sqladapter.SelectCommand = $SqlCommand [void]$sqladapter.Fill($results) return $Results } |