2012-05-10 25 views
5

Tôi đã viết một kịch bản lệnh PowerShell đơn giản để kiểm tra số lượng vé trong một bảng dịch vụ PSA và cho ra số lượng vé và một màu liên quan đến nó. Tuy nhiên, tập lệnh của tôi đang in '1' trước kết quả. Tôi rất mới với powershell, và tôi dường như không thể tìm ra dòng chữ in ra. Bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơnKịch bản PowerShell của tôi đang in '1' trước khi kết quả dự kiến ​​của tôi. Tại sao?

$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 Tôi đoán số hàng được trả về là 1 –

+0

Cảm ơn bạn! Nếu bạn đưa ra bình luận của bạn một câu trả lời, tôi sẽ đánh dấu nó là chính xác! Tôi đã không nhận ra rằng việc điền một tập dữ liệu sẽ tự động in. Cảm ơn ! –

Trả lời

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

đọc ở đây về DbDataAdapter.Fill và giá trị trả về của nó:

Loại: System.Int32 Số hàng thêm thành công hoặc làm mới trong DataSet. Điều này không bao gồm các hàng bị ảnh hưởng bởi các câu lệnh không trả về các hàng.

1

Bạn sẽ có thể thu hẹp nó xuống dòng thực tế bằng cách tiêm một số dòng chỉ in ra một số văn bản. Một khi bạn tìm thấy dòng thực tế, bạn có thể đặt nó qua lệnh "out-null" để ngăn chặn đầu ra.

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

3

Đây là cách thay thế để làm mất hiệu lực mà không sử dụng đường ống. Đường ống nên tránh vì lý do hiệu suất.

[void] $SqlAdapter.Fill($DataSet); 
Các vấn đề liên quan