V Powerhell 4.0 (Windows 2012 R2, Windows 8.1 in novejši) vgrajen cmdlet za preverjanje omrežnih povezav - Test-Povezava v mrežo. S tem cmdletom lahko preverite razpoložljivost oddaljenega strežnika ali omrežne storitve na njem, blokirate vrata TCP z požarnimi zidovi, preverite razpoložljivost in usmerjanje ICMP. V bistvu cmdlet Preizkusna mreža
vam omogoča, da hkrati zamenjate več znanih omrežnih pripomočkov: ping, traceroute, skener vrat TCP itd..
Vsebina:
- TCP Port Ping: Uporaba Test-NetConnection za testiranje odprtih vrat in razpoložljivosti strežnika
- Test-NetConnection pri spremljanju skriptov
- PowerShell Network Scanner
telnet msk-msg01.winitpro.ru 25
. Toda od sistema Windows 7 je odjemalec telnet namenjen ločeni komponenti, ki jo je treba namestiti posebej. Poglejmo, kako izvesti podobno dejanje v programu PowerShell.Glavna prednost cmdleta Test-NetConnection je, da je že del vseh sodobnih različic sistema Windows in ga ni treba nameščati posebej. Cmdlet je del modula. NetTCPIP (začenši s PoSh v4.0).
Namig. Z ukazom lahko preverite trenutno nameščeno različico PowerShell-a$ PSVersionTable.PSVersion
V stolpcu Major vrednost 4 znaša, da je PowerShell 4.0 nameščen v računalniku.
TCP Port Ping: Uporaba Test-NetConnection za testiranje odprtih vrat in razpoložljivosti strežnika
Preverite, ali je TCP vrata 25 (protokol SMTP) na poštnem strežniku odprta s pomočjo Test-NetConnection:
Test-NetConnection -ComputerName msk-msg01 -Port 25
V skrajšani obliki je podoben ukaz videti takole:
TNC msk-mail1 -Port 25
Analiziramo rezultat ukaza:
Ime računalnika: msk-msg01 RemoteAddress: 10.10.1.7 RemotePort: 25 InterfaceAlias: CORP SourceAddress: 10.10.1.70 PingSpeced: True PingReplyDetails (RTT): 0 ms TcpTestSupceeded: True
Kot lahko vidite, cmdlet razreši ime strežnika na IP naslov, preveri odziv ICMP (podobno kot ping) in razpoložljivost TCP vrat. Do navedenega strežnika je dostopen prek ICMP (PingSucceeded = Res
) in 25 TCP vrat se tudi odzove (RemotePort = 25, TcpTestSucceeded = Res
).
Cmdlet ima poseben parameter -CommonTCPPort, ki vam omogoča, da določite ime znanega omrežnega protokola (HTTP, RDP, SMB, WINRM).
Na primer, če želite preveriti razpoložljivost spletnega strežnika, lahko uporabite ukaz:
Test-NetConnection -ComputerName winitpro.ru -CommonTCPPort HTTP
Ali razpoložljivost vrat RDP (3389):
Test-NetConnection msk-rds1 -CommonTCPPort RDP
Natisnete lahko vse parametre, ki jih vrne cmdlet Test-NetConnection:
Test-NetConnection msk-man01 -port 445 | Seznam formatov *
Če potrebujete samo informacije o razpoložljivosti vrat TCP, v bolj jedrnate oblike, lahko preverjanje opravite tako:
TNC msk-mail1 -Port 25 -Informacija Nivo Tiho
Cmdlet je vrnil True, kar pomeni, da so oddaljena vrata na voljo.
Namig. V prejšnjih različicah PowerShell lahko preverite razpoložljivost oddaljenih vrat TCP tako, da:(New-Object System.Net.Sockets.TcpClient) .Connect ('msk-msg01', 25)
V operacijskem sistemu Windows 10 / Windows Server 2016 lahko uporabite ukazni ukaz Test-NetConnection za sledenje poti do oddaljenega strežnika z uporabo -Izsleditev (analogni sledilni zapis). Uporaba parametra -Hmelj lahko pri preverjanju omejite največje število upanja.
Test-NetConnection msk-man01 -TraceRoute
Cmdlet je vrnil mrežno zamudo pri dostopu do strežnika v milisekundah (PingReplyDetails (RTT): 41 ms
) in vsi IP naslovi usmerjevalnikov na poti do ciljnega strežnika.
Test-NetConnection pri spremljanju skriptov
Naslednji ukaz omogoča preverjanje razpoložljivosti določenega pristanišča na številnih strežnikih, seznam katerih je shranjen v besedilni datoteki strežniki.txt. Zanimajo nas strežniki, na katerih se želena storitev ne odzove:
Pridobitev vsebine c: \ Distr \ servers.txt | kjer je -NOT (Test-Netconnection $ _ -Port 25 -InformationLevel Quiet) | Format-Tabela -AutoSize
Podobno lahko ustvarite preprost nadzorni sistem, ki preveri razpoložljivost strežnikov in prikaže obvestilo, če eden od strežnikov ni na voljo.
Na primer, lahko preverite razpoložljivost osnovnih storitev na vseh krmilnikih domen (seznam z enosmernim tokom lahko dobite z ukazom Get-ADDomainController). Preverimo naslednje storitve na DC-ju (pripomoček PortQry ima podobno pravilo domene in zaupanja):
- 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 gostitelja, Ipv4address, isGlobalCatalog, spletno mesto, gozd, operacijski sistem
ForEach ($ DC v $ AllDC)
Foreach ($ P v $ Ports)
$ check = Test-NetConnection $ DC -Port $ P -Opozorilo SilentlyContinue
Če ($ check.tcpTestSucceeded -eq $ true)
Write-Host $ DC.name $ P -ForegroundColor Green -Separator "=>"
drugače
Write-Host $ DC.name $ P -Separator "=>" -ForegroundColor Red
Skript bo preveril določena vrata TCP na krmilnikih domen in če eno od vrat ni na voljo, ga označite z rdečo barvo (z manjšimi spremembami lahko ta skript PowerShell zaženete kot storitev Windows).
PowerShell Network Scanner
Za skeniranje oddaljenih strežnikov ali podomrežij za odprta / zaprta vrata TCP lahko uporabite tudi preprost skener vrat in podmrež.
Skeniramo obseg IP naslovov na odprtem pristanišču 3389:
foreach ($ ip v 5 ... 30) Test-NetConnection -Port 3389 -InformationLevel "Podrobno" 10.10.10. $ ip
Na določenem strežniku skeniramo obseg vrat TCP od 1 do 1024:
foreach ($ port v 1 ... 1024) If (($ a = Test-NetConnection srvfs01 -Port $ port -WarningAction SilentlyContinue) .tcpTestSucceeded -eq $ true) "TCP port $ port je odprt!"