2012-05-10 17 views
5

Ho scritto un semplice script PowerShell che controlla il numero di biglietti in un pannello di servizio PSA e restituisce il numero di biglietti e un colore associato. Tuttavia, il mio script stampa un '1' prima dei risultati. Sono molto nuovo a PowerShell, e non riesco a trovare la linea che avrebbe stampato questo. Qualsiasi aiuto sarebbe apprezzato. GrazieIl mio script PowerShell sta stampando un '1' prima del mio output previsto. Perché?

$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 
+1

$ SqlAdapter.Fill ($ DataSet) | Out-Null Immagino che il numero di righe restituite sia 1 –

+0

Grazie! Se fai una risposta al tuo commento, la contrassegnerò come corretta! Non mi ero reso conto che la compilazione di un set di dati sarebbe stata automaticamente stampata. Grazie ! –

risposta

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

Leggi qui circa DbDataAdapter.Fill e il suo valore di ritorno:

Tipo: System.Int32 Il numero di righe aggiunto con successo o aggiornata nel DataSet. Questo non include le righe interessate da dichiarazioni che non restituiscono righe.

1

Dovresti essere in grado di restringere il campo alla linea effettiva iniettando alcune linee che stampano solo del testo. Una volta trovata la linea attuale, è possibile reindirizzarla attraverso il comando "out-null" per sopprimere l'output.

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

3

Ecco un'alternativa che getta di annullare senza utilizzare la pipeline. La condotta dovrebbe essere evitata per motivi di prestazioni.

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