在PowerShell中,我试图编写一条if
语句,以说明SQL Server的COUNT
结果是否大于0。以下是我的答案:
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Our Connection String"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "SELECT COUNT(*) FROM dbo.Source WHERE SourceId IS NULL"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$Table = New-Object System.Data.DataTable
$SqlAdapter.Fill($Table) | Out-Null
if ($Table > 0) {
Write-Output "The Count is greater than zero, please investigate"
}
我知道底部的if
语句是错误的语法,并且我尝试了许多其他方式来表达它无济于事。我运行了脚本,没有任何错误,但是它只是完成了,什么也没有发生。我已经验证过,如果我从Out-Null
行中删除了$SqlAdapter.Fill()
,PowerShell将返回一个计数,因此我知道直到该点为止一切正常。
如果计数大于1,我只需要使它写入输出即可,在此SQL查询中肯定是这样。我将如何编写此if
语句?
答案 0 :(得分:2)
这应该做您想要的。
if ($Table.Column1 -gt 0) {
Write-Output "The Count is greater than zero, please investigate"
}
由于您没有为数据表提供任何架构,因此计数将计入列名 Column1 。
答案 1 :(得分:0)
只需将$SqlAdapter.Fill($Table)
的输出捕获到变量中,而不是通过Out-Null
抑制它,然后检查该变量。
$cnt = $SqlAdapter.Fill($Table)
if ($cnt -gt 0) {
# do stuff
}