GetHostByAddress действителен больше? - PullRequest
0 голосов
/ 08 июня 2019

Все мои инструменты удаленного взаимодействия с PS зависят от написанной мной функции, которая выполняет следующий код для разрешения имени хоста.

Это перестало работать сегодня и теперь приводит к этой ошибке. Я оглянулся и попробовал GetHostEntry, но, похоже, он возвращает только IP-адрес.

$Computername = ([Net.Dns]::GetHostByAddress($IPAddress)).HostName

"Исключение, вызывающее" GetHostByAddress "с аргументом (ами)" 1 ":" Запрошенный название допустимо, но данные запрошенного типа не найдены " В строке: 1 символ: 28 + [Net.Dns] :: GetHostByAddress <<<< ($ IP) .HostName + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: DotNetMethodException "</p>

1 Ответ

3 голосов
/ 08 июня 2019

Первое, что я хотел бы сделать, это самостоятельно подтвердить, что интересующие записи PTR все еще находятся в DNS. В Windows я бы использовал nslookup. Например, чтобы найти информацию о хосте для IP 10.1.2.3:

nslookup
> set type=ptr
> 3.2.1.10.in-addr.arpa.
Server:     127.0.0.1
Address:    127.0.0.1#53

** server can't find 1.2.3.10.in-addr.arpa: NXDOMAIN
>

Если вы получите NXDOMAIN, как указано выше, тогда не имеет значения, какой вызов вы используете ... данных просто нет.

Если вы получите ответ, возможно, это на самом деле вызов API. На этой странице https://docs.microsoft.com/en-us/dotnet/api/system.net.dns.gethostbyaddress?view=netframework-4.8 указано, что метод GetHostByAddress устарел и использует GetHostEntry, как вы пытались. Тот факт, что GetHostEntry вернул только IP-адрес, говорит о том, что запись PTR исчезла, или, возможно, недоступна из того места, где вы запрашиваете, или, возможно, у вас нет DNSPermission, как того требует этот вызов.

...