我的服务器最近已经从简单的www.example.com A 10.10.10.10类型结构转变为使用CNAME抽象...。

 www.example.com   CNAME   www1.example.com
 www1.example.com      A   10.10.10.10

以前,我可以使用以下方法进行DNS查找以获取A记录:
 $myHostIp = Resolve-DnsName "www.example.com" A -DnsOnly | Select-Object -first 1
 $myHostIp = $myHostIp.IP4Address

(这不适用于CNAME记录)。

如何获得与CNAME记录关联的(第一个)IP地址?

我试过了:
 $myHostIp = Resolve-DnsName "www.example.com" A -DnsOnly | Select-Object -first 1 -Property IP4Address

但我只是空。

最佳答案

当您使用Resolve-DnsName -Type A查询CNAME时,会得到两个响应。第一个是CNAME响应,第二个是A。

您可以清楚地看到这样的情况:

PS> Resolve-DnsName -Name 'www.google.com' -Type A -DnsOnly | Format-List -Property *


QueryType    : CNAME
Server       : forcesafesearch.google.com
NameHost     : forcesafesearch.google.com
Name         : www.google.com
Type         : CNAME
CharacterSet : Unicode
Section      : Answer
DataLength   : 8
TTL          : 228

Address      : 216.239.38.120
IPAddress    : 216.239.38.120
QueryType    : A
IP4Address   : 216.239.38.120
Name         : forcesafesearch.google.com
Type         : A
CharacterSet : Unicode
Section      : Answer
DataLength   : 4
TTL          : 228

由于第一个对象不包含名为“IP4Address”的属性,而不存在的属性的值为null,因此您将得到null。

尝试:
$myHostIp = Resolve-DnsName -Name 'www.example.com' -Type A -DnsOnly |
    Where-Object QueryType -eq 'A' |
    Select-Object -First 1 -ExpandProperty IP4Address

关于powershell - 使用Powershell从CNAME记录解析IP地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49653819/

10-12 02:39