Masuk Powerhell 4.0 (Windows 2012 R2, Windows 8.1 dan lebih tinggi) cmdlet bawaan untuk memeriksa koneksi jaringan - Tes-Koneksi internet. Menggunakan cmdlet ini, Anda dapat memeriksa ketersediaan server jarak jauh atau layanan jaringan di dalamnya, memblokir port TCP oleh firewall, memeriksa ketersediaan ICMP dan perutean. Pada dasarnya sebuah cmdlet Tes-netconnection
memungkinkan Anda mengganti beberapa utilitas jaringan yang sudah dikenal sekaligus: ping, traceroute, pemindai port TCP, dll..
Konten:
- TCP Port Ping: Menggunakan Test-NetConnection untuk Menguji Port Terbuka dan Ketersediaan Server
- Tes-NetConnection dalam skrip pemantauan
- Pemindai Jaringan PowerShell
telnet msk-msg01.winitpro.ru 25
. Tetapi mulai dengan Windows 7, klien telnet didedikasikan untuk komponen terpisah yang perlu diinstal secara terpisah. Mari kita lihat bagaimana melakukan tindakan serupa di PowerShell.Manfaat utama cmdlet Test-NetConnection adalah sudah menjadi bagian dari semua versi Windows modern dan Anda tidak perlu menginstalnya secara terpisah. Cmdlet adalah bagian dari modul. NetTCPIP (dimulai dengan PoSh v4.0).
Kiat. Anda dapat memeriksa versi PowerShell yang diinstal saat ini dengan perintah$ PSVersionTable.PSVersion
Nilai 4 di kolom Utama menunjukkan bahwa PowerShell 4.0 diinstal pada komputer.
TCP Port Ping: Menggunakan Test-NetConnection untuk Menguji Port Terbuka dan Ketersediaan Server
Periksa apakah port TCP 25 (protokol SMTP) terbuka di server email menggunakan Test-NetConnection:
Test-NetConnection -ComputerName msk-msg01 -Port 25
Dalam bentuk singkat, perintah serupa terlihat seperti ini:
TNC msk-mail1 -Port 25
Mari kita menganalisis hasil dari perintah:
ComputerName: msk-msg01 RemoteAddress: 10.10.1.7 RemotePort: 25 InterfaceAlias: CORP SourceAddress: 10.10.1.70 PingDiproses: True PingReplyDetails (RTT): 0 ms TcpTestSucceeded: True
Seperti yang Anda lihat, cmdlet menyelesaikan nama server ke alamat IP, memeriksa respons ICMP (mirip dengan ping) dan ketersediaan port TCP. Server yang ditentukan dapat diakses melalui ICMP (PingSucceeded = Benar
) dan 25 port TCP juga merespons (RemotePort = 25, TcpTestSucceeded = Benar
).
Cmdlet memiliki parameter khusus -CommonTCPPort, memungkinkan Anda untuk menentukan nama protokol jaringan yang dikenal (HTTP, RDP, SMB, WINRM).
Misalnya, untuk memeriksa ketersediaan server web, Anda dapat menggunakan perintah:
Uji-NetConnection -ComputerName winitpro.ru -CommonTCPPort HTTP
Atau ketersediaan port RDP (3389):
Uji-NetConnection msk-rds1 -CommonTCPPort RDP
Anda dapat mencetak semua parameter yang dikembalikan cmdlet Test-NetConnection:
Test-NetConnection msk-man01 -port 445 | Format-Daftar *
Jika Anda hanya memerlukan informasi tentang ketersediaan port TCP, dalam bentuk yang lebih ringkas, pemeriksaan dapat dilakukan seperti ini:
TNC msk-mail1 -Port 25 -InformasiTingkat Tenang
Cmdlet kembali Benar, yang berarti port jarak jauh tersedia.
Kiat. Di versi PowerShell sebelumnya, Anda dapat memeriksa ketersediaan port TCP jarak jauh dengan:(New-Object System.Net.Sockets.TcpClient) .Connect ('msk-msg01', 25)
Di Windows 10 / Windows Server 2016, Anda dapat menggunakan cmdlet Test-NetConnection untuk melacak rute ke server jauh menggunakan -Pelacakan (analog tracert). Menggunakan parameter -Hop Anda dapat membatasi jumlah harapan maksimum saat memeriksa.
Test-NetConnection msk-man01 -TraceRoute
Cmdlet mengembalikan penundaan jaringan ketika mengakses server dalam milidetik (PingReplyDetails (RTT): 41 ms
) dan semua alamat IP router dalam perjalanan ke server target.
Tes-NetConnection dalam skrip pemantauan
Perintah berikut memungkinkan Anda untuk memeriksa ketersediaan port tertentu pada banyak server, daftar yang disimpan di file teks servers.txt. Kami tertarik pada server di mana layanan yang diinginkan tidak merespons:
Dapatkan-Konten c: \ Distr \ servers.txt | di mana -NOT (Tes-Netconnection $ _ -Port 25 -InformationLevel Quiet) | Format-Tabel -AutoSize
Demikian pula, Anda dapat membuat sistem pemantauan sederhana yang memeriksa ketersediaan server dan menampilkan pemberitahuan jika salah satu server tidak tersedia.
Misalnya, Anda dapat memeriksa ketersediaan layanan dasar pada semua pengontrol domain (daftar DC dapat diperoleh dengan cmdlet Get-ADDomainController). Mari kita periksa layanan berikut di DC (Utilitas PortQry memiliki aturan Domain dan trust yang serupa):
- RPC - TCP / 135
- LDAP - TCP / 389
- LDAP - TCP / 3268
- DNS - TCP / 53
- Kerberos - TCP / 88
- SMB - TCP / 445
$ Ports = "135", "389", "636", "3268", "53", "88", "445", "3269", "80", "443"
$ AllDCs = Dapatkan-ADDomainController -Filter * | Select-Object Hostname, Ipv4address, isGlobalCatalog, Site, Forest, OperatingSystem
ForEach ($ DC dalam $ AllDCs)
Foreach ($ P dalam $ Ports)
$ check = Tes-NetConnection $ DC -Port $ P -WarningAction SilentlyContinue
Jika ($ check.tcpTestSucceeded -eq $ true)
Write-Host $ DC.name $ P -ForegroundColor Green -Separator "=>"
lain
Write-Host $ DC.name $ P -Separator "=>" -ForegroundColor Red
Skrip akan memeriksa port TCP yang ditentukan pada pengontrol domain, dan jika salah satu port tidak tersedia, sorot dengan warna merah (dengan modifikasi kecil, Anda dapat menjalankan skrip PowerShell ini sebagai layanan Windows).
Pemindai Jaringan PowerShell
Anda juga dapat menerapkan port sederhana dan pemindai subnet IP untuk memindai server atau subnet jarak jauh untuk port TCP yang terbuka / tertutup.
Kami memindai rentang alamat IP pada port terbuka 3389:
foreach ($ ip in 5 ... 30) Test-NetConnection -Port 3389 -InformationLevel "Detail" 10.10.10. $ ip
Kami memindai rentang port TCP dari 1 hingga 1024 di server yang ditentukan:
foreach ($ port in 1 ... 1024) If (($ a = Test-NetConnection srvfs01 -Port $ port -WarningAction SilentlyContinue) .tcpTestSucceeded -eq $ true) "port TCP $ port terbuka!"