PowerShell 4.0 (Windows 2012 R2, Windows 8.1 i novije verzije) ugrađeni cmdlet za provjeru mrežnih veza - test-NetConnection. Pomoću ovog cmdleta možete provjeriti dostupnost udaljenog poslužitelja ili mrežne usluge na njemu, blokirati TCP portove vatrozidima, provjeriti dostupnost i usmjeravanje ICMP-a. U osnovi cmdlet Test-NetConnection
omogućuje vam zamjenu nekoliko poznatih mrežnih alata odjednom: ping, traceroute, TCP port skener itd..
sadržaj:
- TCP Port Ping: Korištenje Test-NetConnection za testiranje otvorenih portova i dostupnosti poslužitelja
- Test-NetConnection u nadzornim skriptama
- Mrežni skener PowerShell
telnet msk-msg01.winitpro.ru 25
. No, počevši od sustava Windows 7, telnet klijent je posvećen zasebnoj komponenti koju je potrebno instalirati odvojeno. Pogledajmo kako izvesti sličnu radnju u PowerShellu.Glavna prednost cmdleta Test-NetConnection je ta što je on već dio svih modernih verzija sustava Windows i ne morate ga odvojeno instalirati. Cmdlet je dio modula. NetTCPIP (počevši od PoSh v4.0).
vijeće. Pomoću naredbe možete provjeriti trenutno instaliranu verziju PowerShell-a$ PSVersionTable.PSVersion
Vrijednost 4 u stupcu Major pokazuje da je PowerShell 4.0 instaliran na računalu.
TCP Port Ping: Korištenje Test-NetConnection za testiranje otvorenih portova i dostupnosti poslužitelja
Provjerite je li TCP port 25 (SMTP protokol) otvoren na poslužitelju e-pošte pomoću Test-NetConnection:
Test-NetConnection -ComputerName msk-msg01 -Port 25
U skraćenom obliku, slična naredba izgleda ovako:
TNC msk-mail1 -Port 25
Analiziramo rezultat naredbe:
ComputerName: msk-msg01 RemoteAddress: 10.10.1.7 RemotePort: 25 InterfaceAlias: CORP SourceAddress: 10.10.1.70 PingPodijeljeno: True PingReplyDetails (RTT): 0 ms TcpTestSucceded: True
Kao što vidite, cmdlet razrješava naziv poslužitelja na IP adresu, provjerava ICMP odgovor (slično kao ping) i dostupnost TCP priključka. Navedeni poslužitelj dostupan je putem ICMP-a (PingSucceeded = Točno
) i 25 TCP porta također odgovara (RemotePort = 25, TcpTestSucceeded = Točno
).
Cmdlet ima poseban parametar -CommonTCPPort, omogućujući vam da odredite naziv poznatog mrežnog protokola (HTTP, RDP, SMB, WINRM).
Na primjer, za provjeru dostupnosti web poslužitelja možete upotrijebiti naredbu:
Test-NetConnection -ComputerName winitpro.ru -CommonTCPPort HTTP
Ili dostupnost RDP priključaka (3389):
Test-NetConnection msk-rds1 -CommonTCPPort RDP
Možete ispisati sve parametre koje vraća cmdlet Test-NetConnection:
Test-NetConnection msk-man01 -port 445 | Format-lista *
Ako su vam potrebne samo informacije o dostupnosti TCP priključka, u sažetijem obliku, provjera se može izvršiti ovako:
TNC msk-mail1 -Port 25 -InformLevel Mirno
Cmdlet je vratio True, što znači da je udaljeni ulaz dostupan.
vijeće. U prethodnim verzijama PowerShell-a možete provjeriti dostupnost udaljenog TCP porta prema:(New-Object System.Net.Sockets.TcpClient) .Connect ('msk-msg01', 25)
U sustavu Windows 10 / Windows Server 2016 možete koristiti cmdlet Test-NetConnection da biste pratili rutu do udaljenog poslužitelja koristeći -traceroute (analogni trag). Pomoću parametra -Hmelj možete ograničiti maksimalni broj nade prilikom provjere.
Test-NetConnection msk-man01 -TraceRoute
Cmdlet je vratio kašnjenje mreže prilikom pristupa poslužitelju u milisekundama (PingReplyDetails (RTT): 41 ms
) i sve IP adrese usmjerivača na putu do ciljnog poslužitelja.
Test-NetConnection u nadzornim skriptama
Sljedeća naredba omogućuje vam provjeru dostupnosti određenog porta na mnogim poslužiteljima, čiji je popis spreman u tekstualnu datoteku serveri.txt. Zainteresirani smo za poslužitelje na koje željena usluga ne odgovara:
Get-Content c: \ Distr \ servers.txt | gdje je -NOT (Test-Netconnection $ _ -Port 25 -InformationLevel Quiet) | Format-tablica -AutoSize
Slično tome, možete stvoriti jednostavan sustav nadzora koji provjerava dostupnost poslužitelja i prikazuje obavijest ako jedan od poslužitelja nije dostupan.
Na primjer, možete provjeriti dostupnost osnovnih usluga na svim kontrolerima domena (DC popis može se dobiti s cmdlet Get-ADDomainController). Provjerimo sljedeće usluge na DC-u (uslužni program PortQry ima slično pravilo Domena i pouzdanosti):
- 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 * | Select-Object Ime hosta, Ipv4address, isGlobalCatalog, Web lokacija, Šuma, Operativni sustav
ForEach ($ DC u $ AllDCs)
Foreach ($ P u $ portovima)
$ check = Test-NetConnection $ DC -Port $ P -WarningAction SilentlyContinue
Ako ($ check.tcpTestSucceeded -eq $ true)
Write-Host $ DC.name $ P -ForegroundColor Green -Separator "=>"
drugo
Write-Host $ DC.name $ P -Separator "=>" -ForegroundColor Red
Skripta će provjeriti navedene TCP portove na kontrolerima domena, a ako jedan od portova nije dostupan, istaknite je crvenom bojom (uz manje izmjene, možete pokrenuti ovu skriptu PowerShell-a kao Windows uslugu).
Mrežni skener PowerShell
Također možete implementirati jednostavan skener portova i IP podmreže za skeniranje udaljenih poslužitelja ili podmreža na otvorene / zatvorene TCP portove.
Skeniramo raspon IP adresa na otvorenom priključku 3389:
foreach ($ ip u 5 ... 30) Test-NetConnection -Port 3389 -InformationLevel "Detaljno" 10.10.10. $ ip
Skeniramo raspon TCP portova od 1 do 1024 na navedenom poslužitelju:
foreach ($ port u 1 ... 1024) If (($ a = Test-NetConnection srvfs01 -Port $ port -WarningAction SilentlyContinue) .tcpTestSucceeded -eq $ true) "TCP port $ port je otvoren!"