A Test-NetConnection a TCS-portok nyitását / bezárását a PowerShellből ellenőrzi

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

Bármely rendszergazdának rendszeresen ellenőriznie kell a szolgáltatás elérhetőségét a távoli kiszolgálón a távoli TCP-port válaszának ellenőrzésével (például egy e-mail vagy webszerver elérhetősége). Sőt, mindenki hozzászokik ahhoz, hogy egy ilyen ellenőrzést leggyorsabban a telnet paranccsal hajtanak végre. Például az SMTP szolgáltatás elérhetőségének ellenőrzéséhez a levélkiszolgálón (alapértelmezés szerint a TCP 25. portjára válaszol) csak futtassa a parancsot 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

megjegyzés. A Test-NetConnection parancsmag segítségével csak TCP-kapcsolatot ellenőrizhet; ez nem alkalmazható az UDP-portok elérhetőségének ellenőrzésére.

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).

megjegyzés.  Bizonyos esetekben kiderül, hogy a PingSuccezed = False és a TcpTestSucceched = True. Valószínűleg azt jelenti, hogy az ICMP Ping le van tiltva a távoli szerveren.

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!"