2013-07-30 24 views
8

Tôi đang sử dụng Powershell phiên bản 2, vì vậy tôi không thể sử dụng Ping-Host như đã giải thích ở đây Is there a way to treat Ping-Host as a boolean in PowerShell?Chuyển đổi Test-Kết nối thành Boolean

tôi có thể sử dụng kết nối thử nghiệm, tức là

Test-Connection *ip_address* -count 1 

Tôi cố gắng biến nó thành một boolean, nhưng nó không hoạt động

if ($(test-connection server -count 1).received -eq 1) { write-host "blah" } else {write-host "blah blah"} 

Máy chủ tôi có thể ping kết quả đầu ra "blah blah", như thể tôi không thể ping nó.

Mặt khác, nếu tôi ping một máy chủ không thể truy cập, tôi nhận được thông báo lỗi

Test-Kết nối: Kiểm tra kết nối đến máy tính máy chủ thất bại: Lỗi do thiếu nguồn lực Tại dòng: 1 char: 22 + if ($ (thử nghiệm kết nối < < < < máy chủ -count 1) .received -eq 1) {write-host "blah"} else {write-host "blah blah"} + CategoryInfo : ResourceUnavailable: (máy chủ: String) [Test-Kết nối], PingException + FullyQualifiedErrorId: TestConnectionException, Microsoft.PowerShell.Commands.TestConnectionCommand

Và vào cuối nó vẫn kết quả đầu ra "blah blah".

Cách khắc phục?

+0

Tôi đã xem qua câu hỏi này tìm kiếm một cách nhanh chóng để ping/kiểm tra kết nối/thử NetConnection. Tôi đã giải quyết trên tập lệnh này: https://gallery.technet.microsoft.com/scriptcenter/Fast-asynchronous-ping-IP-d0a5cf0e/ – YetAnotherRandomUser

Trả lời

10

nhận không phải là một tài sản của đối tượng đó Test-Kết nối lợi nhuận, vì vậy $(test-connection server -count 1).received interval là Null. Bạn đang overthinking nó; chỉ cần sử dụng if (Test-Connection -Count 1). Để chặn thông báo lỗi, hãy sử dụng -Lỗi Hành động Im lặng Tiếp tục hoặc đổi lệnh thành Out-Null. Một trong những điều sau đây sẽ làm việc:

if (Test-Connection server -Count 1 -ErrorAction SilentlyContinue) { write-host "blah" } else {write-host "blah blah"} 

hoặc

if (Test-Connection server -Count 1 | Out-Null) { write-host "blah" } else {write-host "blah blah"} 
+0

Cảm ơn sự giúp đỡ của bạn! – Glowie

18

Thử -Quiet switch:

Test-Connection server -Count 1 -Quiet  

-Quiet [<SwitchParameter>] 
    Suppresses all errors and returns $True if any pings succeeded and $False if all failed. 

    Required?     false 
    Position?     named 
    Default value    False 
    Accept pipeline input?  false 
    Accept wildcard characters? false 
+5

Đây là câu trả lời đúng. –

+0

Tôi biết, phải không?đây là ___EXACTLY___ công tắc này được thiết kế cho điều gì, phải xuống để triệt tiêu lỗi –

0

một tốt hơn lót mà chúng tôi sử dụng tại sản xuất

function test_connection_ipv4($ipv4) { if (test-connection $ipv4 -Count 1 -ErrorAction SilentlyContinue) {$true} else {$false} } 

ví dụ sử dụng 1:

test_connection_ipv4 10.xx.xxx.50 
True 

sử dụng ví dụ 2:

test_connection_ipv4 10.xx.xxx.51 
False 
Các vấn đề liên quan