Этот скрипт демонстрирует, как сохранить netstat
выходные IP-адреса в переменные в PowerShell
Просто запустите скрипт в PowerShell ISE, откройте новый браузер, зайдите на www.google.com и посмотрите, что происходит.
$allIPs = [System.Net.Dns]::GetHostAddresses("www.google.com") $myIP = $allIPs[0].IPAddressToString while ($true) { cls netstat -n | select-string "$myIP.*ESTABLISHED" | foreach { $part = $_.line.split(' ',[System.StringSplitOptions]::RemoveEmptyEntries) $localIP = $part[1] -replace ":.*", "" $remoteIP = $part[2] -replace ":.*", "" write-host $localIP $remoteIP } sleep 2 }
После запуска он запрашивает все соединения netstat -n
каждые 2 секунды ( while ($true)
вместе с sleep 2
).
Для ускорения netstat -n
(числовой) является наиболее важным параметром, поскольку поиск DNS не производится. Вы можете прочитать больше о других параметрах, как -a
и -o
на Technet
Затем PowerShell фильтрует только установленные соединения ( select-string "$myIP.*ESTABLISHED"
), например, с www.google.com. Это просто пример, чтобы показать, как это работает. + Изменить
$myIP = $allIPs[0].IPAddressToString
на IP-адрес которого вы ожидаете пинг
$myIP = '192.168.1.1'
Последняя часть состоит в том, чтобы разделить строки по пробелам ( $_.line.split(' '
), затем удалить эти пробелы ( [System.StringSplitOptions]::RemoveEmptyEntries
), удалить порт ( -replace ":.*", ""
) и сохранить результаты в соответствующие им переменные.
Вы можете делать с ними все, что захотите. Я просто повторил ихwrite-host $localIP $remoteIP