Resolve-DnsName 是什么
这是 PowerShell 的 DNS 查询命令,支持指定记录类型与查询服务器,输出是结构化对象,便于脚本判断与后续处理。相比文本式查询工具,它更适合放进自动化流程里做批量核对。
基本信息
| 适用平台 | Windows PowerShell 5.1 与 PowerShell 7 |
|---|---|
| 语法 | Resolve-DnsName 域名 [-Type A|AAAA|CNAME|MX|TXT|SRV|PTR] [-Server DNS服务器] [-DnsOnly] |
| 关键开关 | -DnsOnly 绕过本机 hosts 文件影响,-CacheOnly 只查缓存 |
| 输出字段 | Name、Type、IPAddress、NameHost、Ttl |
| 权限要求 | 一般无需管理员 |
| 域环境常用 | 服务定位类记录查询 |
典型使用场景
- 核对解析结果是否与预期地址一致
- 指定内网 DNS 服务器查询私有域名
- 排查域环境中的服务定位记录
- 巡检时批量查询一组域名并生成报告
- 验证解析缓存与 hosts 文件的干扰
常用示例
常用示例
# 查询地址记录
Resolve-DnsName contoso.com -Type A
# 指定内网 DNS 服务器
Resolve-DnsName intranet.contoso.com -Server 10.0.0.2
# 查询服务定位记录,域环境排障常用
Resolve-DnsName _ldap._tcp.contoso.com -Type SRV
# 绕过 hosts 文件,验证真实 DNS 结果
Resolve-DnsName intranet.contoso.com -DnsOnly
# 批量查询并整理结果
'www.example.com','mail.example.com' | ForEach-Object { Resolve-DnsName -Name $_ -Type A -ErrorAction SilentlyContinue } | Select-Object Name, Type, IPAddress常用记录类型
| 类型 | 含义 | 典型用途 |
|---|---|---|
| A | IPv4 地址记录 | 最常用的域名到地址映射 |
| AAAA | IPv6 地址记录 | 双栈环境查询 |
| CNAME | 别名记录 | 确认域名指向关系 |
| MX | 邮件交换记录 | 排查邮件投递问题 |
| SRV | 服务定位记录 | 域环境定位服务节点 |
hosts 文件会优先影响解析结果。要验证真实 DNS 返回必须加 -DnsOnly,否则得到的可能与本机文件一致,却并不代表 DNS 的现状。
外部域名查询失败时,先确认 DNS 转发与出口可达性,而不是直接怀疑域名配置;内网环境往往压根不解析外部域名。
常见报错与含义
| 报错信息 | 含义 | 处理 |
|---|---|---|
| DNS name does not exist | 记录确实不存在 | 核对域名拼写与所在区域 |
| query timed out | 服务器没有响应 | 检查网络、53 端口与服务器状态 |
| server refused | 服务器拒绝响应 | 确认是否允许递归查询 |
| no records found | 名称存在但该类型无记录 | 换用其他记录类型再查 |
把查询结果里的存活时间一并记录下来很有用:它能解释为什么某些机器仍解析到旧地址,也便于判断缓存何时会自然刷新。