2012-05-10 7 views
5

Napisałem prosty skrypt programu Power Shell, który sprawdza liczbę biletów na karcie usług PSA i generuje liczbę biletów oraz powiązany z nimi kolor. Jednak mój skrypt drukuje "1" przed wynikami. Jestem bardzo nowy w Power Shell i nie mogę znaleźć linii, która by to wydrukowała. Każda pomoc będzie doceniona. DziękiMój skrypt powłoki Powerhell drukuje "1" przed moim oczekiwanym wynikiem. Czemu?

$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 Zgaduję, że liczba zwróconych wierszy to 1 –

+0

Dziękujemy! Jeśli skomentujesz odpowiedź, zaznaczę ją jako poprawną! Nie zdawałem sobie sprawy, że wypełnienie zbioru danych zostanie automatycznie wydrukowane. Dzięki ! –

Odpowiedz

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

Czytaj tutaj o DbDataAdapter.Fill a jego wartość zwracana:

Typ: System.Int32 Liczba wierszy powodzeniem dodawane lub odświeżane w zestawie danych. Nie obejmuje to wierszy, których dotyczą instrukcje, które nie zwracają wierszy.

1

Powinieneś być w stanie zawęzić go do rzeczywistej linii przez wstrzyknięcie niektórych linii, które właśnie wydrukują jakiś tekst. Po znalezieniu właściwej linii można ją przepuścić przez polecenie "out-null", aby pominąć wyjście.

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

3

Oto alternatywa, która rzuca się unieważnić bez korzystania z rurociągu. Rurociągu należy unikać ze względu na wydajność.

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