1 votes

Aide à la vérification de l'adresse IP et du nom DNS pour la disponibilité du ping ?

J'apprécierais que vous m'aidiez à modifier le script ci-dessous afin qu'il puisse vérifier et convertir la liste d'IPAddress et de hostname en quelque chose comme :

DomainController1 - 10.1.1.10 - UP 
CoreGatewayRTR1 - 10.1.1.254 - DOWN 
JohnPC01 - NO-IP-Address - DOWN 
LindaLaptop02 - 10.1.1.234 - DOWN 
. 
. 
. 

C'est un défi pour moi de convertir l'IP en DNSName et le DNSName en IP puis de vérifier le statut en ligne basé sur le Ping,

Voici le script que j'ai trouvé jusqu'à présent :

$computers= gc C:\ListOfDevices.txt
foreach ($computername in $computers) {
    $DNS = [System.Net.Dns]::GetHostEntry($ComputerName)
    $HostName = $DNS.HostName
    $IP = $DNS.AddressList

   Trap { Continue }
   if (Test-Connection $DNS -erroraction SilentlyContinue -Count 1 ) {
     write-host "$Hostname - $IP - UP" -ForegroundColor GREEN
   }
   else {
     write-host "$Hostname - $IP - DOWN" -ForegroundColor RED
   }
 }

Cependant, le script ci-dessus a toujours une erreur logique mineure comme suit :

  1. tous les résultats sont toujours affichés en bas ?

  2. une partie du résultat est toujours dupliquée alors que l'adresse IP de cet hôte particulier est unique ?

Toute forme d'aide serait grandement appréciée.

Gracias.

1voto

MDMarra Points 99815

Vous pouvez ajouter -quiet à la fin de votre condition de test de connexion afin qu'elle ne renvoie qu'un booléen. Vous obtenez beaucoup plus de données autres que $true ou $false si vous procédez de cette façon.

1voto

Votre script échoue parce que le $DNS ne contient pas le nom DNS. Et vous l'envoyez à la if .

Vous devez envoyer $Hostname à la if .

Avec ce code, cela fonctionnera :

$computers= gc C:\ListOfDevices.txt
foreach ($computername in $computers) {
    $DNS = [System.Net.Dns]::GetHostEntry($ComputerName)
    $HostName = $DNS.HostName
    $IP = $DNS.AddressList

   Trap { Continue }

   if (Test-Connection $HostName -erroraction SilentlyContinue -Count 1) {
     write-host "$Hostname - $IP - UP" -ForegroundColor GREEN
   }
   else {
     write-host "$Hostname - $IP - DOWN" -ForegroundColor RED
   }
 }

Et vous obtiendrez une sortie comme celle-ci : Result

Il y a un autre problème dans votre code que vous n'avez peut-être pas vu. En raison de la façon dont vous définissez le $Hostname variable, il ne sera pas modifié si le nom DNS n'est pas correct. Vérifiez-le et définissez-le en utilisant une autre technique.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X