0
我有一個很直接的功能斂SQL結果:
function RunSqlCommand($sql)
{
$connection = $null
$command = $null
try
{
$connectionString = "data source=localhost; integrated security=true"
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
$command = $connection.CreateCommand()
$command.CommandText = $sql
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($command)
$dataSet = New-Object System.Data.DataSet
$adapter.Fill($dataSet)
$results = $dataSet.Tables | Select-Object -ExpandProperty "Rows"
return $results
}
finally
{
if ($command -ne $null) { $command.Dispose() }
if ($connection -ne $null) { $connection.Dispose() }
}
}
每當有沒有效果,$results
變量是$null
。但是,當我檢查調用方法中的返回值時,它奇蹟般地變爲0
。
PowerShell在幕後做了些什麼?我真的很想返回$null
來表示「沒有結果」。
所以,即使我明確地返回一個值PowerShell是返回的附加值?當有行要返回時,爲什麼我不能得到0? – 2014-09-24 22:06:41
找到了一個相當不錯的博客解釋此行爲:http://rkeithhill.wordpress.com/2007/09/16/effective-powershell-item-7-understanding-output/ – 2014-09-24 22:39:04
這是PowerShell的一個獨特的行爲,任何「uncaptured 「值被添加到輸出流。 – 2014-09-25 00:37:14