PowerShell端口連通性測試


在PowerShell中,使用“Test-Connection”命令可以測試對端主機是否存活,相當於批處理中的Ping命令,但是如果要測試對端主機的某個端口是否可以連通,批處理中可以使用Telnet命令,那在PowerShell中還有類似的命令嗎?很遺憾,沒有。需要通過調用.Net對象才可以實現。

判斷192.168.1.10的80端口是否可以連通,方法如下:

$tcp = new-object Net.Sockets.TcpClient

$tcp.Connect("192.168.1.10",80)

 

如果該端口可以連通,則無任何返回值;如果不能連通,則會返回如下錯誤信息:

使用“2”個參數調用“Connect”時發生異常:“由於連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗。 192.168.1.10:80”

所在位置 C:\Users\Administrator\AppData\Local\Temp\78bf4f80-9f64-4fcf-9e91-159978e6ac4c.ps1:2 字符: 13

+ $tcp.Connect <<<< ("192.168.1.10",80)

    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException

    + FullyQualifiedErrorId : DotNetMethodException

 

在PowerShell中,通過使用“$?”,可以判斷前一個命令是否執行成功,所以在此我們可以使用“$?”來判斷其端口是否可以連通。如果返回值為“False”則表示端口不通,返回“True”則表示端口可以連通。完整的腳本如下:

$address = "192.168.1.10"

$port = 80

$tcp = new-object Net.Sockets.TcpClient

$tcp.Connect($address,$port)

If ($? -ne "True")

   {Write-Host $address"的端口"$port"連接失敗"}

Else {$tcp.Close()}

 更多可以參考 $tcp | get-member


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM