2015-08-15 103 views
0

我有一個腳本,用於測試使用Test-Connection的主機。如果成功則繼續,否則表示主機處於脫機狀態。強制測試連接使用IPv4

問題是,我們的企業在我們的DNS區域中有IPv6條目。使用IPv6在DNS中註冊的主機首先響應並且由於IPv6未被使用,Test-Connection指出它們處於脫機狀態。然而,好的舊時尚ping-4開關工作正常,他們迴應。

我一直在尋找一個開關強制Test-Connection使用IPv4,但找不到任何東西。我無法對DNS區域進行大規模更改以清除IPv6記錄,因爲主機只需重新註冊。我無法控制這一點。

Ping的工作正常,但我有麻煩,因爲我無法讓它返回簡單的TRUE或FALSE。

回答

0

運行ping並檢查$LASTEXITCODEautomatic variable

& ping -4 -n 1 $server >$null 
if ($LASTEXITCODE -eq 0) { 
    'success' 
} else { 
    "$server not accessible" 
} 

你也做一個名稱查找第一,它限制的IPv4地址(僅A記錄),並在IPv4地址運行Test-Connection

$ip = & nslookup -type=A $server | 
     select -Skip 4 -First 1 | 
     % { $_.Split(':')[1].Trim() } 

Test-Connection $ip 

如果您有至少Windows 8中,你可以使用Resolve-DnsName代替nslookup,我多一點PoSh:

$ip = Resolve-DnsName -Type A $server | select -Expand IPAddress 
+0

代碼「&ping -4 -n 1 .....」的第一位完美工作。謝謝您的幫助。不知道這是如何顯示問題已被回答。 – Habanagold

+0

@Habanagold [This is](http://meta.stackoverflow.com/a/5235)。 –