我的powershell脚本在我的预期输出之前打印'1'。为什么?

时间:2012-05-10 14:10:19

标签: powershell powershell-v2.0

我编写了一个简单的PowerShell脚本,用于检查PSA服务板中的票证数量,并输出票证数量和与之关联的颜色。但是,我的脚本在结果之前打印'1'。我是powershell的新手,我似乎无法找到打印出来的这一行。任何帮助,将不胜感激。感谢

$SqlServer = "server"
$SqlCatalog = "database"
$SqlQuery = "SELECT COUNT(*) FROM v_rpt_Service WHERE Board_Name = 'Traige' AND Parent = ''"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SqlServer; Database = $SqlCatalog; uid = user; pwd = pass"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$value = $DataSet.Tables[0].Rows[0][0]
$color = "Red"
if($value -lt 4){
$color = "Yellow"
}
if($value -lt 1){
$color = "Green"
}

$obj = new-object System.object
add-member -inputobject $obj -membertype NoteProperty -Name Tickets -value $value
add-member -inputobject $obj -membertype NoteProperty -Name Color -value $color 
$obj

3 个答案:

答案 0 :(得分:10)

$SqlAdapter.Fill($DataSet) | Out-Null

请在此处阅读DbDataAdapter.Fill及其返回值:

类型:System.Int32 在DataSet中成功添加或刷新的行数。这不包括受不返回行的语句影响的行。

答案 1 :(得分:3)

这是一种在不使用管道的情况下转换为void的替代方法。出于性能原因,应避免使用管道。

[void] $SqlAdapter.Fill($DataSet);

答案 2 :(得分:1)

您应该能够通过注入一些只打印出一些文本的行来将其缩小到实际行。一旦找到实际的行,就可以通过“out-null”命令行开关来管道它,以便抑制输出。

http://technet.microsoft.com/en-us/library/dd315279.aspx