我的服务器最近从简单的 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”的属性,并且不存在的属性值为空值。
尝试:
$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/