PowerShell 4.0 (Windows 2012 R2, Windows 8.1 a novší) vstavaný cmdlet na kontrolu sieťových pripojení - skúška-NetConnection. Pomocou tohto rutiny cmdlet môžete skontrolovať dostupnosť vzdialeného servera alebo sieťovej služby, blokovať porty TCP pomocou brán firewall, skontrolovať dostupnosť a smerovanie protokolu ICMP. V podstate cmdlet Test-NetConnection
umožňuje nahradiť niekoľko známych sieťových nástrojov naraz: ping, traceroute, skener portov TCP atď..
obsah:
- TCP Port Ping: Použitie Test-NetConnection na testovanie otvorených portov a dostupnosti servera
- Test-NetConnection v monitorovacích skriptoch
- Sieťový skener PowerShell
telnet msk-msg01.winitpro.ru 25
. Počnúc Windows 7 je však klient telnetu vyhradený pre samostatný komponent, ktorý je potrebné nainštalovať osobitne. Pozrime sa, ako vykonať podobnú akciu v PowerShell.Hlavnou výhodou rutiny Test-NetConnection je to, že je už súčasťou všetkých moderných verzií systému Windows a nemusíte ju inštalovať osobitne. Rutina je súčasťou modulu. NetTCPIP (začínajúce PoSh v4.0).
rada. Pomocou príkazu môžete skontrolovať aktuálnu nainštalovanú verziu PowerShell$ PSVersionTable.PSVersion
Hodnota 4 v stĺpci Major označuje, že v počítači je nainštalovaný program PowerShell 4.0.
TCP Port Ping: Použitie Test-NetConnection na testovanie otvorených portov a dostupnosti servera
Skontrolujte, či je na poštovom serveri pomocou protokolu Test-NetConnection otvorený port TCP 25 (protokol SMTP):
Test-NetConnection -ComputerName msk-msg01 -Port 25
V skrátenej podobe vyzerá podobný príkaz takto:
TNC msk-mail1 - časť 25
Poďme analyzovať výsledok príkazu:
Názov_počítača: msk-msg01 RemoteAddress: 10.10.1.7 RemotePort: 25 InterfaceAlias: CORP SourceAddress: 10.10.1.70 PingSucceeded: True PingReplyDetails (RTT): 0 ms TcpTestSucceeded: True
Ako vidíte, rutina prekladá názov servera na IP adresu, kontroluje odozvu ICMP (podobnú pingu) a dostupnosť portu TCP. Zadaný server je prístupný cez ICMP (PingSucceeded = True
) a 25 port TCP tiež odpovedá (RemotePort = 25, TcpTestSucceeded = True
).
Rutina má špeciálny parameter -CommonTCPPort, umožňuje zadať názov známeho sieťového protokolu (HTTP, RDP, SMB, WINRM).
Napríklad na kontrolu dostupnosti webového servera môžete použiť príkaz:
Test-NetConnection -ComputerName winitpro.ru -CommonTCPPort HTTP
Alebo dostupnosť portu RDP (3389):
Test-NetConnection msk-rds1 -ommonTCPPort RDP
Môžete vytlačiť všetky parametre, ktoré vracia rutina Test-NetConnection:
Test-NetConnection msk-man01 -port 445 | Zoznam formátov *
Ak potrebujete iba informácie o dostupnosti portu TCP, v stručnejšej podobe sa kontrola môže vykonať takto:
TNC msk-mail1 -Port 25 -InformationLevel Quiet
Rutina cmdlet vrátila hodnotu True, čo znamená, že vzdialený port je k dispozícii.
rada. V predchádzajúcich verziách programu PowerShell môžete skontrolovať dostupnosť vzdialeného portu TCP pomocou:(New-Object System.Net.Sockets.TcpClient) .Pripojenie ('msk-msg01', 25)
Vo Windows 10 / Windows Server 2016 môžete použiť rutinu Test-NetConnection na sledovanie trasy na vzdialený server pomocou -Traceroute (analógový záznam). Pomocou parametra -chmeľ pri kontrole môžete obmedziť maximálny počet nádejí.
Test-NetConnection msk-man01 -TraceRoute
Rutina vrátila sieťové oneskorenie pri prístupe k serveru v milisekundách (PingReplyDetails (RTT): 41 ms
) a všetky adresy IP smerovačov na ceste k cieľovému serveru.
Test-NetConnection v monitorovacích skriptoch
Nasledujúci príkaz vám umožňuje skontrolovať dostupnosť konkrétneho portu na mnohých serveroch, ktorých zoznam je uložený v textovom súbore servery.txt. Zaujímajú nás servery, na ktoré požadovaná služba neodpovedá:
Get-Content c: \ Distr \ server.txt | kde -NOT (Test-Netconnection $ _ -Port 25 -InformationLevel Quiet) | Tabuľka formátu -AutoSize
Podobne môžete vytvoriť jednoduchý monitorovací systém, ktorý kontroluje dostupnosť serverov a zobrazuje upozornenie, ak jeden zo serverov nie je k dispozícii.
Napríklad môžete skontrolovať dostupnosť základných služieb na všetkých radičoch domény (zoznam DC je možné získať pomocou rutiny Get-ADDomainController). V DC skontrolujte nasledujúce služby (obslužný program PortQry má podobné pravidlo domény a dôveryhodnosti):
- 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 = Get-ADDomainController -Filter * | Názov hostiteľa objektu Select, Ipv4address, jeGlobalCatalog, Site, Forest, OperatingSystem
ForEach ($ DC v $ AllDCs)
Foreach ($ P v $ portoch)
$ check = Test-NetConnection $ DC -Port $ P -WarningAction SilentlyContinue
Ak ($ check.tcpTestSucceeded -eq $ true)
Write-Host $ DC.name $ P -ForegroundColor Green - Separator "=>"
inak
Write-Host $ DC.name $ P - Separator "=>" -ForegroundColor Red
Skript skontroluje zadané porty TCP v radičoch domény a ak jeden z portov nie je k dispozícii, zvýraznite ho červenou farbou (s malými úpravami môžete tento skript PowerShell spustiť ako službu Windows).
Sieťový skener PowerShell
Môžete tiež implementovať jednoduchý skener portov a podsiete na skenovanie vzdialených serverov alebo podsiete, či neobsahujú otvorené alebo zatvorené porty TCP.
Testujeme rozsah IP adries na otvorenom porte 3389:
foreach ($ ip za 5 ... 30) Test-NetConnection -Port 3389 -InformationLevel "Detailed" 10.10.10. $ ip
Na zadanom serveri kontrolujeme rozsah portov TCP od 1 do 1024:
foreach ($ port in 1 ... 1024) If (($ a = Test-NetConnection srvfs01 -Port $ port -WarningAction SilentlyContinue) .tcpTestSucceeded -eq $ true) "Port TCP $ $ je otvorený!"