„PowerShell“ galite naudotiTest-NetConnectioncmdlet, kad patikrintumėte, ar nuotolinio kompiuterio prievadas yra (atidarytas). Galite naudoti šią cmdlet, kad patikrintumėte nuotolinio serverio arba tinklo paslaugos atsaką ir pasiekiamumą, patikrintumėte, ar TCP prievadas nėra užblokuotas ugniasienės, patikrinkite ICMP prieinamumą ir maršrutą. Tiesą sakant,Test-NetConnectionpakeičia keletą populiarių tinklo administravimo įrankių, tokių kaipping,tracert,telnet,pathping, TCP prievado skaitytuvas ir kt.
Turinys:
- Patikrinkite, ar nėra atviro TCP prievado naudodami „Test-NetConnection“.
- „PowerShell“: patikrinkite, ar keliuose pagrindiniuose kompiuteriuose nėra atvirų prievadų
- Paprastas TCP/IP prievadų skaitytuvas „PowerShell“.
- Kaip įtraukti atvirų prievadų sąrašą „Windows“ naudojant „PowerShell“.
Patikrinkite, ar nėra atviro TCP prievado naudodami „Test-NetConnection“.
Norėdami patikrinti tik TCP prievadus, galite naudoti „Test-NetConnection“ cmdlet. Pavyzdžiui, norėdami patikrinti, ar TCP 25 prievadas (SMTP protokolas) yra atidarytas nuotoliniame pašto serveryje:
Test-NetConnection -ComputerName ny-msg01 -Port 25
Pastaba. Naudodami Test-NetConnection cmdlet galite išbandyti tik TCP prievado ryšį. Tačiau negalite naudoti cmdlet nuotolinių UDP prievadų prieinamumui patikrinti.
Komanda Test-NetConnection turi slapyvardįTNC. Sutrumpinta tos pačios komandos versija atrodo taip:
TNC ny-msg01 -Port 25

Pažiūrėkime į komandos rezultatą:
ComputerName : ny-msg01 RemoteAddress : 10.20.1.7 RemotePort : 25 InterfaceAlias : CORP SourceAddress : 10.20.1.79 PingSucceeded : True PingReplyDetails (RTT) : 0 ms TcpTestSucceeded : True
Kaip matote, cmdlet paskiria serverio pavadinimą į IP adresą, patikrina ICMP atsakymą (panašiai kaipping) ir patikrina atsakymą iš TCP prievado (prievado prieinamumas). Nurodytas serveris atsako per ICMP (PingSucceeded = True) ir atidarytas TCP 25 prievadas (RemotePort=25, TcpTestSucceeded= True).
Pastaba.Jei komanda grąžina PingSucceeded=False ir TcpTestSucceeded= True, tai greičiausiai reiškia, kad ICMP Echo užklausa (ping) yra išjungta nuotoliniame kompiuteryje.
Jei paleisiteTest-NetConnection be parametrų, jis patikrins, ar kompiuteris prijungtas prie interneto (tikrina, ar yrainternetbeacon.msedge.netšeimininkas).


Galite pridėti –Informacijos lygis Išsamusparinktis rodyti išsamią informaciją tikrinant nuotolinį TCP prievadą:
TNC 192.168.32.101 -Port 3389 -InformationLevel Detailed


Cmdlet turi specialų parametrą –CommonTCPPort, kuri leidžia nurodyti žinomo tinklo protokolo pavadinimą (HTTP, RDP, SMB, WINRM).
Pavyzdžiui, norėdami patikrinti HTTP žiniatinklio serverio prieinamumą, galite naudoti komandą:
Test-NetConnection -ComputerName woshub.com -CommonTCPPort HTTP
Arba patikrinkite numatytojo RDP prievado (TCP/3389) prieinamumą:
Test-NetConnection ny-rds1 –CommonTCPPort RDP
Galite išvardyti visus parametrus, kuriuos pateikia „Test-NetConnection“ cmdlet:
Test-NetConnection ny-man01 -port 445|Format-List *


Jei reikia tik pamatyti, ar prievadas yra prieinamas, jį galima patikrinti greičiau:
TNC ny-msg1 -Port 25 -InformationLevel Quiet
Grąžina cmdletTrue, o tai reiškia, kad nuotolinis TCP prievadas yra atidarytas.
![]()
![]()
Patarimas.Ankstesnėse „Windows PowerShell“ versijose (iki 4.0 versijos) nuotolinio TCP prievado prieinamumą galite patikrinti naudodami komandą:
(New-Object System.Net.Sockets.TcpClient).Connect('ny-msg01', 25)


Galite naudoti „Test-NetConnection“ cmdlet, kad atsektumėte maršrutą į nuotolinį serverį, naudodamiTraceRouteparametras (panašus į įtaisytąjįtracertkomanda Windows). Galite apriboti maksimalų šuolių skaičių maršruto patikros metu naudodami-Apyniaiparametras.
Test-NetConnection ny-man01 –TraceRoute
Cmdlet grąžino suvestinę tinklo prieigos delsą milisekundėmis (PingReplyDetails (RTT): 41 ms), taip pat visus maršrutizatorių IP adresus pakeliui į paskirties pagrindinį kompiuterį.


„PowerShell“: patikrinkite, ar keliuose pagrindiniuose kompiuteriuose nėra atvirų prievadų
Galite naudoti „PowerShell“, kad patikrintumėte, ar keliuose nuotoliniuose kompiuteriuose yra konkretus prievadas. Išsaugokite pagrindinio kompiuterio vardų arba IP adresų sąrašą paprasto teksto faile su pavadinimuservers.txt.
Pavyzdžiui, jūsų užduotis yra serverių sąraše rasti pagrindinius kompiuterius, kurių TCP/25 prievadas nereaguoja arba yra uždarytas:
Get-Content c:PSlist_servers.txt | where { -NOT (Test-Netconnection $_ -Port 25 -InformationLevel Quiet)}| Format-Table -AutoSize
Galite naudoti paprastą stebėjimo „PowerShell“ scenarijų, kuris tikrina nuotolinių serverių prieinamumą ir parodo iššokantįjį pranešimą, jei kuris nors serveris nepasiekiamas.
Pavyzdžiui, galite patikrinti pagrindinių paslaugų prieinamumą visuose domeno valdikliuose AD būklės patikrinimo metu (DC sąrašą galima gauti naudojant Get-ADDomainController cmdlet). Patikrinkime šias paslaugas DC (yra panaši „Domeno ir pasitikėjimo“ taisyklė PortQry įrankyje):
- 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 Hostname,Ipv4address
ForEach($DC in $AllDCs){
Foreach ($P in $Ports){
$check=Test-NetConnection $DC.Ipv4address -Port $P -WarningAction SilentlyContinue
If ($check.tcpTestSucceeded -eq $true)
{Write-Host $DC.hostname $P -ForegroundColor Green -Separator " => "}
else
{Write-Host $DC.hostname $P -Separator " => " -ForegroundColor Red}
}
}
Scenarijus tikrina nurodytus domeno valdiklių TCP prievadus ir, jei kuris nors iš prievadų nepasiekiamas, paryškina juos raudonai (šį PowerShell scenarijų galite paleisti kaip Windows paslaugą).


Paprastas TCP/IP prievadų skaitytuvas „PowerShell“.
Galite naudoti „PowerShell“, kad įdiegtumėte paprastą IP skaitytuvą, kuris nuskaito nuotolinius pagrindinius kompiuterius arba IP potinklius, ar nėra atvirų / uždarų TCP prievadų.
Norėdami nuskaityti IP adresų diapazoną nuo 192.168.1.100 iki 192.168.1.150 ir rodyti kompiuterius, kuriuose atidarytas 3389 prievadas:
foreach ($ip in 100..150) {Test-NetConnection -Port 3389 -InformationLevel "Detailed" 192.168.1.$ip}
Nuskaitykite daugybę TCP prievadų (nuo 1 iki 1024) nuotoliniame pagrindiniame kompiuteryje:
foreach ($port in 1..1024) {If (($a=Test-NetConnection srvfs01 -Port $port -WarningAction SilentlyContinue).tcpTestSucceeded -eq $true){ "TCP port $port is open!"}}


Kaip įtraukti atvirų prievadų sąrašą „Windows“ naudojant „PowerShell“.
NaudokiteGet-NetTCPConnectioncmdlet, kad išvardintumėte vietiniame kompiuteryje atidarytus prievadus (tai yra PowerShell atitikmuoNETSTAT). Visų kompiuteryje atidarytų TCP prievadų sąrašą galima peržiūrėti taip:
Get-NetTcpConnection -State Listen | Select-Object LocalAddress,LocalPort| Sort-Object -Property LocalPort | Format-Table


Taip pat galite naudoti Get-NetTCPConnection cmdlet, kad pateiktumėte aktyvius TCP/IP ryšius.
Jei norite sužinoti, kuri programa (procesas) klausosi konkrečiame jūsų kompiuterio prievade, naudokite šią komandą (kur 443 yra prievado numeris, kurį norite patikrinti):
Skaityti daugiau:Kaip atidaryti ir blokuoti prievadus „Windows“ užkardoje
Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess | ft Id, ProcessName, UserName, Path











