8

PSAサービスボード内のチケットの数をチェックし、チケットの数とそれに関連付けられた色を出力する簡単なPowerShellスクリプトを作成しました。ただし、私のスクリプトは結果の前に「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.Int32DataSetに正常に追加または更新された行の数。これには、行を返さないステートメントの影響を受ける行は含まれません。

于 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 に答える