วิธีใช้ Test-NetConnection ใน PowerShell
คุณรู้ไหมว่าคำสั่ง ping ซึ่งมีอายุ 38 ปีนั้นเก่ากว่า command prompt? คุณอาจได้เปลี่ยนพรอมต์คำสั่งจากชุดเครื่องมือรายวันของคุณด้วย PowerShell แล้ว ตอนนี้ถึงเวลาแทนที่คำสั่ง ping ด้วย PowerShell Test-NetConnection
ข้อดีของการ ping คือเป็นคำสั่งที่สั้นมากในการพิมพ์ แต่ข้อเสียคือเพียงทดสอบการเชื่อมต่อเครือข่ายผ่าน ICMP เท่านั้น มันไม่ได้ทำการติดตามหรือการทดสอบพอร์ตใดๆ โดยส่วนใหญ่เราจำเป็นต้องรวมคำสั่ง ping เข้ากับ Tracert และ nslookup เพื่อรับรายละเอียดทั้งหมดที่เราต้องการ
Test-NetConnection คือตัวตายตัวแทนของ PowerShell Test-Connection cmdlet อย่างหลังเป็นขั้นตอนแรกในการแทนที่คำสั่ง ping โดยมีข้อดีบางประการ Test-NetConnection มีประสิทธิภาพมากกว่ามากและควรเป็นเครื่องมือที่คุณใช้เมื่อต้องแก้ไขปัญหาเครือข่าย
การทดสอบการเชื่อมต่อ PowerShell
ก่อนที่เราจะดูวิธีใช้ Test-NetConnection cmdlet ใน PowerShell ก่อนอื่นเรามาดู Test-Connection กันก่อน
เช่นเดียวกับ ping ใช้ Test-Connection รวมถึงโปรโตคอล ICMP เพื่อทดสอบการเชื่อมต่อเครือข่ายของอุปกรณ์เครือข่าย ในรูปแบบที่ง่ายที่สุด คุณสามารถพิมพ์ Test-Connection หรือ เพื่อทำการทดสอบการเชื่อมต่ออย่างรวดเร็ว
# Check connection on IP Address
Test-Connection 8.8.8.8
Source Destination IPV4Address Bytes Time(ms)
------ ----------- ----------- ------- ----
lab01 8.8.8.8 8.8.8.8 32 12
lab01 8.8.8.8 8.8.8.8 32 13
lab01 8.8.8.8 8.8.8.8 32 12
lab01 8.8.8.8 8.8.8.8 32 12
# Check connection on DNS Name
Test-Connection google.com
แต่แน่นอนว่าเราทำได้มากกว่านั้นมาก ตัวอย่างเช่น เราสามารถทดสอบปลายทางหลายแห่งด้วยคำสั่งเดียว:
Test-Connection -ComputerName 8.8.8.8, 1.1.1.1หรือระบุพารามิเตอร์ เช่น จำนวนฮ็อป ขนาดบัฟเฟอร์ หรือแม้แต่เพิ่มการหน่วงเวลาระหว่างปิง:
Test-Connection -ComputerName 8.8.8.8 -Count 3 -Delay 2 -MaxHops 255 -BufferSize 256การทดสอบคอมพิวเตอร์ระยะไกล
นอกจากนี้เรายังสามารถทดสอบการเชื่อมต่อเครือข่ายใน PowerShell ของคอมพิวเตอร์ระยะไกลด้วย Test-Connection ข้อกำหนดเพียงอย่างเดียวคือบัญชีของคุณสามารถเข้าถึงคอมพิวเตอร์ระยะไกลได้
Test-Connection -Source srv-lab02 -ComputerName 8.8.8.8คุณยังสามารถพิมพ์ tnc แทน Test-NetConnecting ได้
ดังนั้นคุณจึงสามารถพิมพ์:tnc 8.8.8.8เพื่อ ping Google เป็นต้น
PowerShell ทดสอบการเชื่อมต่อไปยังเซิร์ฟเวอร์
คุณสมบัติที่มีประโยชน์อีกประการหนึ่งของ PowerShell Test-Connection คือสามารถส่งคืน $true หรือ $false ได้ วิธีนี้ช่วยให้คุณตรวจสอบว่าคอมพิวเตอร์พร้อมใช้งานหรือไม่ก่อนที่จะเชื่อมต่อ Test-Connect จะส่งกลับ $true หากส่ง Ping สำเร็จ 4 ครั้ง
if (Test-Connection -TargetName srv-lab02 -Quiet) { New-PSSession -ComputerName srv-lab02}PowerShell ทดสอบ-NetConnection
Test-NetConnection cmdlet คือตัวตายตัวแทนของ Test-Connection ดังนั้นฟังก์ชันพื้นฐานจึงเหมือนกันหมด มีเพียงเอาต์พุตเท่านั้นที่มีรายละเอียดมากกว่า เรายังคงสามารถส่ง Ping ไปที่ Google ได้อย่างรวดเร็ว:
# Test the network connection to Google
Test-NetConnection 8.8.8.8
ComputerName : 8.8.8.8
RemoteAddress : 8.8.8.8
InterfaceAlias : Wi-Fi
SourceAddress : 192.168.1.82
PingSucceeded : True
PingReplyDetails (RTT) : 9 msดังที่คุณเห็นผลลัพธ์มีรายละเอียดมากขึ้น มันจะแสดงอินเทอร์เฟซที่ใช้ ที่อยู่ IP ต้นทางของคุณ และดูว่า Ping สำเร็จหรือไม่ เรายังขยายสิ่งนี้ได้ด้วยการเพิ่มสวิตช์ informationLevel "Detailed"
เมื่อตั้งค่า informationLevel เป็นแบบละเอียด โดยทั่วไปแล้วจะทำการค้นหา nslookup ที่อยู่ปลายทาง และจะเพิ่มการกระโดดครั้งแรกในการค้นหา
test-netconnection Google.com -InformationLevel "Detailed" ComputerName : Google.com RemoteAddress : 172.217.17.78 NameResolutionResults : 172.217.17.78 InterfaceAlias : Wi-Fi SourceAddress : 192.168.1.82 NetRoute (NextHop) : 192.168.1.1 PingSucceeded : True PingReplyDetails (RTT) : 6 ms
คุณสามารถทำการทดสอบการเชื่อมต่อเครือข่ายอย่างรวดเร็วใน PowerShell เมื่อคุณรัน Test-NetConnection โดยไม่มีพารามิเตอร์ใดๆ วิธีนี้ช่วยให้เราสามารถตรวจสอบได้ว่าเราเชื่อมต่อกับเครือข่ายท้องถิ่น เข้าถึงอินเทอร์เน็ต และสามารถแก้ไขชื่อ DNS ได้หรือไม่
❯ Test-NetConnection
ComputerName : internetbeacon.msedge.net
RemoteAddress : 13.107.4.52
InterfaceAlias : Wi-Fi
SourceAddress : 192.168.1.82
PingSucceeded : True
PingReplyDetails (RTT) : 10 msPowerShell TraceRoute พร้อม Test-NetConnection
ด้วย Test-NetConnection cmdlet ใน PowerShell เรายังสามารถดำเนินการ traceroute ได้อีกด้วย คุณจะต้องเพิ่มพารามิเตอร์ traceroute ลงใน cmdlet เท่านั้น
# PowerShell TraceRoute with Test-NetConnection
Test-NetConnection 172.217.17.87 -traceRouteเมื่อเพิ่มพารามิเตอร์ Traceroute ลงใน PowerShell Test-NetConnection cmdlet คุณจะได้รับรายการการกระโดดทุกครั้งที่ส่งผ่านระหว่างการ ping คุณสามารถจำกัดจำนวนฮ็อพที่จะติดตามด้วยพารามิเตอร์ hops
หากต้องการทดสอบเวลาแฝงของแต่ละฮอป คุณสามารถเลือกออบเจ็กต์ TraceRoute และทดสอบการเชื่อมต่อของแต่ละฮอป:
Test-NetConnection 172.217.17.78 -traceRoute -Hops 3 | select-object TraceRoute | foreach-object {test-connection $_.TraceRoute -count 1}สแกนพอร์ต Powershell
ใน Windows เราไม่สามารถ ping พอร์ตด้วย ping cmdlet ได้จริงๆ เราสามารถใช้ telnet เพื่อทดสอบว่าพอร์ตตอบสนองหรือไม่ แต่ด้วย Test-NetConnection เราสามารถสแกนพอร์ตใน PowerShell ได้ง่ายขึ้นมาก
เราสามารถกำหนดพอร์ต TCP ใดๆ ที่เราต้องการทดสอบ หรือใช้พอร์ตทั่วไปอย่างใดอย่างหนึ่ง HTTP, RDP, SMB หรือ WINRM
# Test if HTTP port is open
Test-NetConnection google.com -CommonTCPPort "Http"
# Or define a port number
Test-NetConnection google.com -Port 80ด้วยเหตุนี้ เราจึงสามารถสร้างสคริปต์สแกนพอร์ต PowerShell แบบง่ายๆ ที่สามารถตรวจสอบพอร์ตที่เปิดอยู่บนเซิร์ฟเวอร์ได้ สคริปต์ด้านล่างมีไว้เพื่อให้คุณทราบว่าคุณสามารถสแกนหลายพอร์ตด้วย PowerShell ได้อย่างไร
$ports = 22,53,80,445
$ports | ForEach-Object {$port = $_; if (Test-NetConnection -ComputerName 8.8.8.8 -Port $port -InformationLevel Quiet -WarningAction SilentlyContinue) {"Port $port is open" } else {"Port $port is closed"} }ห่อขึ้น
อย่างที่คุณเห็น PowerShell Test-NetConnection เป็น cmdlet ที่ทรงพลังและมีประโยชน์มากสำหรับใช้ในการทำงานประจำวันของคุณ ในตอนต้นของบทความ ฉันบอกว่า ping นั้นสั้นกว่าในการพิมพ์ คุณสามารถแก้ไขได้ด้วยการสร้างนามแฝงในโปรไฟล์ PowerShell ของคุณ หรือใช้นามแฝงในตัว tnc
# Create an alias "nettest" or maybe just "tn"
Set-Alias nettest Test-NetConnectionวิธีนี้คุณสามารถพิมพ์ "nettest" แทน Test-NetConnection อ่านเพิ่มเติมเกี่ยวกับการตั้งค่าโปรไฟล์ PowerShell ของคุณในบทความนี้
หากคุณมีคำถามใด ๆ เพียงแค่แสดงความคิดเห็นด้านล่าง


