Этот скрипт демонстрирует, как сохранить выходные IP-адреса netstat
в переменных в 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