Olá,
No dia a dia é relativamente comum precisarmos determinar se os dispositivos estão respondendo a Ping ou não, para isso resolvi fazer um pequeno script que percorre um determinado range e pinga cada um, retornando IP e Status para informar se esta Online ou Offline.
No powershell podemos declarar um range apenas colocando o valor inicial e o final separado por dois pontos, por exemplo 1..5 me retornaria uma array com os numeros dentro do intervalo de 1 a 5, tirando vantagem disso podemos criar um range de IPs e utlizar o comando Test-Connection pra enviar um pacote de ping e retornar verdadeiro ou falso para o teste de conexão.
Com isso temos o seguinte script:
30..40 | ForEach-Object -Process {
$IPAddress = ('192.168.1.{0}' -f $PSItem)
[PSCustomObject]@{
IpAddress = $IPAddress
Status = if(Test-Connection -ComputerName $IPAddress -Count 1 -Quiet){
'Online'
}
else{
'Offline'
}
}
}
O endereço pode ser maior e as validações podem ser mais complexas conforme a necessidade evoluir.
Dúvidas? Sugestões? Comente!
Até a próxima!
7 Comments
Boa tarde Guido!
Executei o script legal, porém minha rede tem mais de 100 IPs, e até 99 ele mostra normalmente, mas passando, ele mostra apenas dois pontos (..) no lugar do número IP. Tentei algumas alterações tais como: acrescentar os 0’s nos octetos, mas sem sucesso. Alguma sugestão? Utilizo uma rede 10.0.0.0.
Nesse caso é só mudar o intervalo no começo do script e substituir a rede pela que voce usa.
Geovany Santos,
voce pode fazer teste com hostname d;D
se estiver no AD pode pegar o hostname de lá, nesse caso usar o IP nao gera a necessidade de “ler” a lista de hostnames de outra fonte.
powershel.
Será que tem como mudar a cor de estiver Off e deixar rodando ifinito ? Muito últil esse código.
Se quiser rodar “infinito” pode colocar dentro de um while($true){seu teste de conexao}