Test-NetConnection: повний посібник — IT-Wiki
» » » Test-NetConnection: мережева діагностика у PowerShell — сучасна заміна telnet і tracert
ВИП. №187· липень 2026· НІЖИН

Новий формат бізнесу — у цифрі, у вашій щоденній роботі.

Автоматизація обліку, власні розробки на BAS/1С, IP-телефонія та відеоспостереження. Пишемо про те, що робимо — і робимо те, про що пишемо.

Популярні

    Test-NetConnection: мережева діагностика у PowerShell — сучасна заміна telnet і tracert

    IT-Wiki / Атлас команд Windows 15 квітня 2026 Переглядів: 107 Автор: Claudia
    Перед стартом
    • Command запускається в PowerShell (не cmd). Синонім — коротша форма tnc.
    • Доступний з Windows 8.1 / Server 2012 R2 і новіше. На старіших системах — Test-Connection (ping only) або сторонні tools.
    • ICMP (ping-частина) блокується deafult Windows Firewall. Якщо PingSucceeded : False — це ще не завжди значить «недоступно».

    Базовий синтаксис

    Test-NetConnection -ComputerName <host> [-Port <N>] [-InformationLevel Detailed] [-TraceRoute] [-CommonTCPPort HTTP|RDP|SMB|WINRM]

    Мінімальний виклик — перевірка TCP-порту:

    Test-NetConnection smtp.office365.com -Port 587

    Результат у консолі показує 5-7 ключових рядків: чи досяжний хост, чи відкритий порт, який інтерфейс використаний, який SourceAddress, RTT, чи є маршрут.

    Сценарій 1. TCP-перевірка (заміна telnet)

    Задача: перевірити, чи SMTP-relay на Office 365 відповідає. Фаєрвол чи зовнішня блокіровка?

    Test-NetConnection smtp.office365.com -Port 587

    Ключові поля у виводі:

    • TcpTestSucceeded : True — порт відкритий і приймає з'єднання.
    • TcpTestSucceeded : False — порт закритий або заблокований фаєрволом / NAT.
    • RemoteAddress — який IP DNS повернув для імені.
    • SourceAddress — з якого свого інтерфейсу пішов пакет (важливо при multi-homed).

    Для швидкої перевірки у скриптах використовуйте -InformationLevel Quiet — повертає тільки True/False:

    if (Test-NetConnection smtp.office365.com -Port 587 -InformationLevel Quiet) {
        Write-Host "SMTP reachable"
    } else {
        Write-Host "SMTP BLOCKED"
    }

    Сценарій 2. Короткі назви типових портів

    Задача: перевірити доступність RDP / SMB / HTTP / WinRM до віддаленої машини без запам'ятовування номерів.

    Test-NetConnection fileserver01 -CommonTCPPort SMB
    Test-NetConnection webapp.corp.local -CommonTCPPort HTTP
    Test-NetConnection dc01.corp.local -CommonTCPPort WINRM

    Мапінг: HTTP=80, SMB=445, RDP=3389, WINRM=5985. Якщо потрібен HTTPS (443) — через -Port 443, короткої назви для нього нема.

    Сценарій 3. Детальна діагностика з маршрутом

    Задача: щоразу «сайт повільний», але з інших машин швидко. Треба побачити де гальмує.

    Test-NetConnection google.com -TraceRoute -InformationLevel Detailed

    Друкує:

    • Traceroute по хопах (як tracert), але у PowerShell-об'єктах, які далі можна фільтрувати.
    • RTT (PingReplyDetails) — для кожного хопа.
    • Route reliability за кількома пакетами.

    Комбо для пошуку «хто повільний»:

    (Test-NetConnection google.com -TraceRoute).TraceRoute

    Повертає масив IP-ів по хопам. Далі можна зробити Test-Connection до кожного для виміру latency.

    Сценарій 4. Перевірка DNS-резолвингу

    Задача: «сервер недоступний», підозра на DNS.

    Test-NetConnection mysite.corp.local -InformationLevel Detailed

    У виводі:

    • NameResolutionSucceeded : True — DNS вирішився у IP.
    • RemoteAddress : 192.168.10.5 — саме той IP, що повернув DNS. Порівняйте з очікуваним.
    • NameResolutionSucceeded : False — DNS не зміг резолвити. Причина — у самому DNS, не у мережі.
    Порада

    Для глибшого DNS-аналізу з конкретним типом запиту (MX, TXT, SRV) — Resolve-DnsName. Test-NetConnection робить тільки A/AAAA для заданого host.

    Сценарій 5. Вибір конкретного source-інтерфейсу

    Задача: на сервері два мережеві інтерфейси — management (192.168.10.x) і production (10.0.0.x). Перевірка має піти через production, а не management.

    Test-NetConnection prod-db.corp.local -Port 1433 -SourceAddress 10.0.0.15

    Якщо -SourceAddress не вказати, Windows сам вибере за метрикою маршрутизації. Типово це управлінський інтерфейс, що може дати хибне «працює» / «не працює».

    Сценарій 6. Масова перевірка в циклі

    Задача: перевірити доступність 20 бекенд-сервісів з одного хоста, зібрати статус у CSV.

    $targets = @(
        @{Host='api1.corp.local';  Port=8443},
        @{Host='api2.corp.local';  Port=8443},
        @{Host='redis01.corp.local'; Port=6379},
        @{Host='smtp.corp.local';  Port=587}
    )
    
    $results = foreach ($t in $targets) {
        $r = Test-NetConnection $t.Host -Port $t.Port -WarningAction SilentlyContinue
        [PSCustomObject]@{
            Host = $t.Host
            Port = $t.Port
            Reachable = $r.TcpTestSucceeded
            Latency = $r.PingReplyDetails.RoundtripTime
        }
    }
    $results | Export-Csv C:\Temp\net-check.csv -NoTypeInformation

    -WarningAction SilentlyContinue прибирає warning-спам у консолі (TNC за замовчуванням кидає warning, якщо ping не пройшов але порт відкритий).

    Типові пастки

    Пастка 1: PingSucceeded : False ≠ «недоступно»

    ICMP блокується за замовчуванням у багатьох корпоративних фаєрволах і Windows Firewall. Хост може бути повністю функціональний через TCP 443, але ping не проходить. Завжди дивіться TcpTestSucceeded, а не PingSucceeded, якщо вказували -Port.

    Пастка 2: повільний timeout

    Якщо порт закритий фаєрволом (drop, не reject), TNC чекатиме 20+ секунд перед тим як повернути False. Це нормально. Для швидких перевірок у скриптах:

    Test-NetConnection host -Port N -WarningAction SilentlyContinue -ErrorAction SilentlyContinue -InformationLevel Quiet -ConnectTimeout 3

    Увага: параметра -ConnectTimeout в TNC немає. Для швидкого таймауту — System.Net.Sockets.TcpClient:

    $tcp = New-Object System.Net.Sockets.TcpClient
    $iar = $tcp.BeginConnect('host', 443, $null, $null)
    $ok = $iar.AsyncWaitHandle.WaitOne(3000, $false)
    $tcp.Close()
    $ok
    Пастка 3: UDP не перевіряється

    Test-NetConnection робить тільки TCP-handshake. UDP-сервіси (DNS 53, SNMP 161, syslog 514, VoIP RTP) вона не перевірить. Для UDP — сторонні утиліти (nmap -sU) або спеціалізовані скрипти.

    Коротка пам'ятка

    Типові виклики
    • Test-NetConnection host -Port 443 — перевірити TCP-порт.
    • Test-NetConnection host -CommonTCPPort RDP — RDP з короткою назвою.
    • Test-NetConnection host -TraceRoute -InformationLevel Detailed — повний traceroute.
    • Test-NetConnection host -Port N -InformationLevel Quiet — True/False для скриптів.
    • Test-NetConnection host -SourceAddress X.X.X.X -Port N — з конкретного інтерфейсу.
    • (tnc host -TraceRoute).TraceRoute — масив IP по хопам.

    Пов'язане

    Test-NetConnection — не просто «заміна telnet». Це стандартний PowerShell-об'єкт, який інтегрується у скрипти. Звикніть до неї як до базового мережевого інструмента — часу вона економить багато.

    Опубліковано: 15-04-2026, 19:08 · Автор: Claudia
    Вхід
    Опитування

    Якою програмою обліку ви користуєтесь?