Est-il possible d'obtenir un nom d'hôte à partir d'une adresse IP sans dépendre d'un serveur DNS enquête?
Je suis en train d'écrire un script qui dépend de la connaissance des noms des ordinateurs sur un segment de réseau, mais tous les scripts que j'ai trouvé dépendent d'un DNS enquête qui a seulement des réponses avec les noms de quelques-uns des machines. Par exemple:
[System.Net.Dns]::GetHostbyAddress($IPAddress)
J'ai aussi essayé d'utiliser
Ping -a $ipaddress
mais le plus souvent, ne parvient pas à renvoyer le nom de la machine ainsi. Est-il un moyen de demander à l'hôte de ce que c'est le nom est directement et quel est le niveau d'autorisations qui pourraient être nécessaires dans le AD pour avoir une réponse?
Merci à l'avance.
- Le DNS est la façon d'obtenir IP > Nom de traductions, l'autre option consisterait à distance dans la machine avec des informations d'identification valide et de vérifier ensuite le nom d'hôte sur place, si vous rencontrez des problèmes de récupérer le nom de via DNS, vérifiez qu'il est à l'aide de votre serveur DHCP/DNS et que vous êtes en interrogeant le serveur correct, ou qu'il existe un manuel de l'entrée DNS pour l'appareil autrement.
- NetBIOS peut être une option, mais le DNS est certainement le chemin à parcourir.
- Êtes-vous sûr que toutes les adresses IP sont répertoriés dans votre DNS?
- Certains périphériques réseau avec des adresses IP peut ne pas avoir d'enregistrements DNS. Faire toutes les étendues DHCP créer des enregistrements dans le même DNS?
- Accès distant par adresse IP n'est pas une promenade dans le parc. Voir stackoverflow.com/q/6587426/562459. Ne
nslookup your ip address
d'aide? (Je pense pas, mais j'ai été surpris avant.) - Comme d'autres affiches ont mentionné DNS et WINS/NetBios sont les deux services de nom. Vous pourriez regarder dans votre cache NetBios avec
nbtstat
, mais vraiment le DNS est la technologie appropriée pour le travail. Plutôt que d'essayer de trouver l'alternative de recherche, la résolution de votre problème de DNS devrait être la première priorité. Je voudrais vérifier que l'étendue DHCP est configuré pour mettre à jour dynamiquement les DNS et elle aussi mise à jour dynamique des clients qui ne demande pas de mises à jour. - Puisque vous utilisez AD il n'y a qu'une SEULE façon : DNS. AD repose sur DNS. Des problèmes DNS affectera également les AD et doit toujours se fixe.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer en utilisant quelque chose comme:
Invoke-Command -computername $ordinateur {Get-Item HKLM:\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName}
L'actif computername est égal à votre nom DNS (sans suffixe, bien sûr)
[System.Net.DNS]::GetHostByAddress()
(maintenant[System.Net.DNS]::GetHostEntry()
) ne repose pas seulement sur le DNS, malgré son nom. Il permettra également de vérifier le localC:\Windows\System32\Drivers\etc\hosts
fichier configuré localement des entrées.droite dns via
nslookup
ne pouvez pas trouver le nom:encore, gethostentry() trouve encore le nom:
Je peut mal comprendre le problème, mais vous pouvez interroger l'
Win32_ComputerSystem
exemple à l'aide d'un CIM session à l'ordinateur distant et de les utiliser l'un de ces propriétés (Nom, DNSName, etc.) S'exécutant localement ce serait commeJe suis conscient que WMI peut prendre assez lourde autorisations (par exemple, administrateur de domaine), mais (a) que peut-être pas hors de question pour votre cas d'utilisation, et (b) que vous pourriez être en mesure de le faire de manière limitée, l'interrogation avec moins d'autorisations.
-UseSSL
sur leCimSessionOption
et pointant vers leHTTPS
port (par défaut, 5986)? Le message d'erreur semble indiquer qu'il pourrait être en mesure de le faire à la place de l'ajout d'ordinateurs à la liste des hôtes approuvés.Une autre idée pourrait être de s'interroger votre serveur SCCM si vous en avez un:
Que vous pouvez obtenir à partir d'AD.
Get-ADComputer <Computername> -Properties * | Select IPv4Address
.Voir si vous pouvez faire usage de ADSISearcher et obtenir l'Adresse IP à utiliser. De cette façon, vous n'aurez pas besoin d'AD module.