Hey guys,
I am trying to run a remote query against a MSSQL database and want to use a user provided parameter value as part of the query; e.g., CmdLet asks for a document number when CmdLet executed and that value is in the WHERE clause. I was hoping there was something like the $Using feature but I have not found anything.
Thanks in advance.
Function Search-TestDocumentNumber {
[CmdletBinding()]
param(
[Parameter(Mandatory = $True, ValueFromPipeline = $True)]
[String]$SqlServer,
[Parameter(Mandatory = $True, ValueFromPipeline = $True)]
[String]$Database,
[Parameter(Mandatory = $True, ValueFromPipeline = $True)]
$DocNumber
)
BEGIN {
[int]$ConnectionTimeout = 30
[int]$QueryTimeout = 120
$TSQL = @'
SELECT * FROM myTable WHERE docnum = $DocNumber
'@
$SqlConnection = new-object System.Data.SqlClient.SQLConnection
$ConnectionString = "Server={0};Database={1};Integrated Security=True;Connect Timeout={2}" -f $SqlServer, $Database, $ConnectionTimeout
$SqlConnection.ConnectionString = $ConnectionString
$SqlConnection.Open()
$cmd = new-object system.Data.SqlClient.SqlCommand($Tsql, $SqlConnection)
$cmd.CommandTimeout = $QueryTimeout
}
PROCESS {
$ds = New-Object system.Data.DataSet
$da = New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
[void]$da.fill($ds)
$Results = $ds.Tables[0].Rows
}
END {
$SqlConnection.Close()
$Results | Format-Table -AutoSize
}
}