8

我编写了一个简单的 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
4

3 回答 3

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

在此处阅读有关DbDataAdapter.Fill及其返回值的信息:

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

于 2012-05-10T14:19:53.983 回答
4

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

[void] $SqlAdapter.Fill($DataSet);
于 2012-05-10T15:09:51.447 回答
1

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

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

于 2012-05-10T14:20:31.737 回答