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