az PowerShell 4.0 (Windows 2012 R2, Windows 8.1 vagy újabb) egy beépített parancsmag a hálózati kapcsolatok ellenőrzésére - teszt-NetConnection. Ebből a parancsmagból ellenőrizheti a távoli szerverek vagy hálózati szolgáltatások elérhetőségét, blokkolhatja a TCP-portokat tűzfalakkal, ellenőrizheti az ICMP elérhetőségét és az útválasztást. Alapvetően egy parancsmag Test-NetConnection
lehetővé teszi, hogy egyszerre több ismerős hálózati segédprogramot cseréljen ki: ping, traceroute, TCP port szkenner stb..
Tartalom:
- TCP Port Ping: A Test-NetConnection használata a nyitott portok és a kiszolgálók rendelkezésre állásának tesztelésére
- Test-NetConnection a szkriptek megfigyelésében
- PowerShell hálózati szkenner
telnet msk-msg01.winitpro.ru 25
. De a Windows 7-től kezdve a telnet kliens egy különálló összetevőre dedikál, amelyet külön kell telepíteni. Lássuk, hogyan lehet hasonló műveletet végrehajtani a PowerShellben.A Test-NetConnection parancsmag fő előnye, hogy már része a Windows összes modern verziójának, és nem kell külön telepítenie. A parancsmag a modul része. NetTCPIP (kezdve a PoSh v4.0-tal).
tanács. Ezzel a paranccsal ellenőrizheti a PowerShell jelenlegi telepített verzióját$ PSVersionTable.PSVersion
A Major oszlopban szereplő 4 érték azt jelzi, hogy a PowerShell 4.0 telepítve van a számítógépre.
TCP Port Ping: A Test-NetConnection használata a nyitott portok és a kiszolgálók rendelkezésre állásának tesztelésére
A Test-NetConnection segítségével ellenőrizze, hogy a 25. TCP-port (SMTP-protokoll) nyitva van-e az e-mail kiszolgálón:
Test-NetConnection -ComputerName msk-msg01 -Port 25
Rövidítve, egy hasonló parancs így néz ki:
TNC msk-mail1 -Port 25
Elemezzük a parancs eredményét:
Számítógépnév: msk-msg01 RemoteAddress: 10.10.1.7 RemotePort: 25 InterfaceAlias: CORP SourceCím: 10.10.1.70 PingSuccedched: True PingReplyDetails (RTT): 0 ms TcpTestSucceched: True
Mint láthatja, a parancsmag feloldja a kiszolgáló nevét IP-címre, ellenőrzi az ICMP-választ (hasonlóan a ping-hoz) és a TCP-port elérhetőségét. A megadott kiszolgáló az ICMP-n keresztül érhető el (PingSucceched = Igaz
) és a 25 TCP port is válaszol (RemotePort = 25, TcpTestSucceched = Igaz
).
A parancsmag rendelkezik egy speciális paraméterrel -CommonTCPPort, lehetővé teszi az ismert hálózati protokoll nevének megadását (HTTP, RDP, SMB, WINRM).
Például egy webszerver elérhetőségének ellenőrzéséhez használhatja a következő parancsot:
Test-NetConnection -ComputerName winitpro.ru -CommonTCPPort HTTP
Vagy az RDP port elérhetősége (3389):
Test-NetConnection msk-rds1 -CommonTCPPort RDP
Az összes paramétert kinyomtathatja, amelyeket a Test-NetConnection parancsmag ad vissza:
Test-NetConnection msk-man01 -port 445 | Formátum-lista *
Ha csak a TCP-port elérhetőségéről van információ, tömörebb formában, akkor az ellenőrzést így lehet elvégezni:
TNC msk-mail1 -Port 25 -InformationLevel Quiet
A parancsmag visszatért True, ami azt jelenti, hogy a távoli port elérhető.
tanács. A PowerShell korábbi verzióiban a távoli TCP-port elérhetőségét ellenőrizheti:(Új-Object System.Net.Sockets.TcpClient) .Connect ('msk-msg01', 25)
A Windows 10 / Windows Server 2016 rendszerben a Test-NetConnection parancsmag segítségével nyomon követheti az útvonalat a távoli kiszolgálóhoz a -traceroute (a tracert analógja). Paraméter használata -komló korlátozhatja a remények maximális számát ellenőrzéskor.
Test-NetConnection msk-man01 -TraceRoute
A parancsmag visszaadta a hálózati késleltetést, amikor milliszekundumban elérte a kiszolgálót (PingReplyDetails (RTT): 41 ms
) és az útválasztók összes IP-címe a célkiszolgálóra vezető úton.
Test-NetConnection a szkriptek megfigyelésében
A következő parancs lehetővé teszi egy adott port elérhetőségének ellenőrzését számos kiszolgálón, amelyek listáját a server.txt szövegfájl tárolja. Olyan szerverekkel vagyunk érdekeltek, ahol a kívánt szolgáltatás nem válaszol:
Get-Content c: \ Distr \ server.txt | ahol -NOT (Test-Netconnection $ _ -Port 25 -InformationLevel Quiet) | Táblázat formátum - Automatikus méret
Ehhez hasonlóan létrehozhat egy egyszerű megfigyelő rendszert, amely ellenőrzi a kiszolgálók elérhetőségét, és értesítést jelenít meg, ha az egyik kiszolgáló nem érhető el.
Például ellenőrizheti az alapszolgáltatások elérhetőségét az összes tartományvezérlőn (DC lista szerezhető be a Get-ADDomainController parancsmag segítségével). Ellenőrizzük a következő szolgáltatásokat DC-n (a PortQry segédprogramnak hasonló a Tartomány és a megbízhatóság szabálya):
- 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, Ipv4adress, isGlobalCatalog, Site, Forest, OperatingSystem
ForEach ($ DC in $ AllDC-kben)
Foreach ($ P dollárban)
$ check = Test-NetConnection $ DC -Port $ P -WarningAction SilentlyContinue
If ($ check.tcpTestSucceched -eq $ true)
Write-Host $ DC.name $ P -ForegroundColor Green -Separator "=>"
más
Write-Host $ DC.name $ P -Separator "=>" -ForegroundColor Red
A szkript ellenőrzi a megadott TCP-portokat a tartományvezérlőkön, és ha az egyik port nem érhető el, akkor pirossal jelölje ki (kisebb módosításokkal ezt a PowerShell-szkriptet Windows-szolgáltatásként futtathatja).
PowerShell hálózati szkenner
Egy egyszerű port- és IP-alhálózati szkennert is végrehajthat a távoli szerverek vagy alhálózatok szkennelésére nyitott / zárt TCP-portokhoz.
Ellenőrizzük az IP-címek tartományát a nyitott 3389-es porton:
foreach ($ ip 5 ... 30-ban) Test-NetConnection -Port 3389 -InformationLevel "Detail" 10.10.10. $ ip
A megadott kiszolgálón átvizsgáljuk a TCP-portok tartományát 1-től 1024-ig:
foreach ($ port 1 ... 1024-ben) If (($ a = Test-NetConnection srvfs01 -Port $ port -WarningAction SilentlyContinue) .tcpTestSucceched -eq $ true) "TCP port $ port nyitva!"