我的服务器最近已经从简单的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/