Este script demonstra como salvar IPs de saída de netstat em variáveis no PowerShell
Basta executar o script no PowerShell ISE, abrir um novo navegador, acessar www.google.com e ver o que está acontecendo.
$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
}
Uma vez iniciado, ele consulta todas as conexões com netstat -n a cada 2 segundos ( while ($true) junto com sleep 2 ).
Para acelerar o netstat, -n (numérico) é o parâmetro mais importante, pois nenhuma pesquisa de DNS é feita. Você pode ler mais sobre outros parâmetros, como -a e -o , no Technet
Em seguida, o PowerShell filtra apenas as conexões estabelecidas ( select-string "$myIP.*ESTABLISHED" ) para, por exemplo, www.google.com. Este é apenas um exemplo para mostrar como funciona. Mudar
$myIP = $allIPs[0].IPAddressToString
para o IP que você está esperando por um ping
$myIP = '192.168.1.1'
A última parte é dividir as linhas por espaços ( $_.line.split(' ' ), remover esses espaços depois ( [System.StringSplitOptions]::RemoveEmptyEntries ), remover a porta ( -replace ":.*", "" ) e salvar os resultados em suas variáveis correspondentes.
Você pode fazer o que quiser com eles. Eu apenas os ecoei com write-host $localIP $remoteIP