Всем привет.
Вы наверняка в курсе что Powershell имеет два командлета для проверки сетевых соединений: Test-Connection и более продвинутый Test-NetConnection.
Test-Connection позволяет выполнять пинг нескольких хостов одновременно:
Test-Connection 192.168.1.115,192.168.220.29 -Count 1 -ErrorAction SilentlyContinue
Также лекго можно выполнить и реверсный пинг:
Test-Connection -Source 192.168.1.11,192.168.1.202 -ComputerName 192.168.1.1 -Count 1
А вот Test-NetConnection позволяет выполнить трассировка маршрута:
Test-NetConnection -cn 8.8.8.8 -TraceRoute
Test-NetConnection позволяет выполнять скан порта:
Test-NetConnection -cn 192.168.1.114 -Port 8080
Test-NetConnection позволяет выполнять скан порта по имени:
Test-NetConnection 192.168.1.20 –CommonTCPPort RDP
Test-NetConnection позволяет выполнять скан порта с подробным выводом:
Test-NetConnection -Port 3389 -InformationLevel "Detailed" 192.168.1.21
Еще пару полезных примеров.
Сканируем диапазон TCP портов на контроллере домена:
$Ports = "135","389","636","3268","3269","3389","53","88","445","80","443"
$AllDCs = Get-ADDomainController -Filter * | Select-Object Hostname,Ipv4address,isGlobalCatalog,Site,Forest,OperatingSystem
ForEach($DC in $AllDCs)
{
Foreach ($P in $Ports){
$check=Test-NetConnection $DC -Port $P -WarningAction SilentlyContinue
If ($check.tcpTestSucceeded -eq $true)
{Write-Host $DC.name $P -ForegroundColor Green -Separator " => "}
else
{Write-Host $DC.name $P -Separator " => " -ForegroundColor Red}
}
Сканируем диапазон IP адресов на открытый порт 3389:
foreach ($ip in 5..30) {Test-NetConnection -Port 3389 -InformationLevel "Detailed" 191.168.1.$ip}
Сканируем диапазон TCP портов от 1 до 1024 на указанном сервере:
foreach ($port in 1..1024) {If (($a=Test-NetConnection 192.168.1.1 -Port $port -WarningAction SilentlyContinue).tcpTestSucceeded -eq $true){ "TCP port $port is open!"}}