首页/系统/Windows 运维速查/Get-DnsClientCache 查看解析缓存

Get-DnsClientCache 查看解析缓存

列出本机 DNS 缓存条目(记录名、类型、TTL、数据),用于验证解析结果与缓存来源。

Windows 运维速查系统更新于 2026-10-13

DNS 客户端缓存是什么

Windows 客户端会把解析结果缓存起来以减少查询次数,Get-DnsClientCache 就是查看这张表的入口。每条记录包含名称、记录类型、剩余 TTL 与解析结果。它的典型价值有两个:确认“到底解析到了哪个地址”,以及区分“服务器改了记录”和“本机还在用旧缓存”这两种完全不同的问题。

基本信息

适用平台Windows 8 / Server 2012 及以上(PowerShell DNS 客户端模块)
命令Get-DnsClientCache;Get-DnsClientCache -Name 域名
关键字段Entry、RecordName、RecordType、Status、TimeToLive、Data
清除缓存Clear-DnsClientCache 或 ipconfig /flushdns
相关服务DNS Client(Dnscache,不可禁用)

典型使用场景

  • 解析结果与预期不符:看清本机缓存里对应的记录与剩余 TTL
  • 服务器记录已变更:先清缓存再复测,确认是否为缓存问题
  • 排查 CNAME/A 记录指向:看字段里解析出的最终地址
  • 负缓存干扰:解析失败也会被缓存,导致“明明修好了还是不通”
  • 批量巡检:收集多台机器上关键域名的解析结果做一致性核对

常用示例

常用示例
# 按名称过滤(缓存可能有上千条,先过滤)
Get-DnsClientCache | Where-Object Entry -like '*contoso*'
# 精确查某个域名
Get-DnsClientCache -Name intranet.contoso.com
# 看清各字段含义
Get-DnsClientCache -Name intranet.contoso.com | Select-Object Entry, RecordName, RecordType, Status, TimeToLive, Data
# 清除缓存后复测
Clear-DnsClientCache
Resolve-DnsName intranet.contoso.com
# CMD 等价写法
ipconfig /flushdns

输出逐列读法

字段含义异常表现
Entry查询的名称与 RecordName 不同说明存在 CNAME 链
RecordType记录类型(A/AAAA/CNAME 等)类型不符说明查错了记录
Status解析状态非成功表示存在负缓存
TimeToLive剩余缓存时间(秒)接近 0 说明即将刷新
Data解析出的地址或目标与预期不符即为问题现场
解析失败同样会被缓存,这叫负缓存。表现是 DNS 记录已经修好,客户端却仍然报找不到主机,此时先 Clear-DnsClientCache 再测,能快速排除缓存干扰。
不要只在一台机器上验证解析结果:DHCP 下发的 DNS 服务器、hosts 文件、代理设置都会影响结果。核对多台机器时先确认它们的 DNS 配置一致。
排障时不要长期依赖 hosts 文件“临时解决”。它绕过 DNS 与变更流程,会让问题在其他人机器上持续存在,也常在半年后变成没人敢删的神秘配置。

易错点

  • 改完 DNS 记录立刻下结论:本机缓存未过期仍在用旧值,误判为“配置没生效”
  • 忽略负缓存:解析失败被缓存,导致问题修复后客户端仍报错
  • 只看 A 记录不想 CNAME:Entry 与 RecordName 不一致时解析链才是真实情况
  • 把 hosts 文件当长期方案:绕过 DNS 治理,后续排查成本持续增加
  • 缓存条目多时直接全量查看:刷屏且看不到重点,应先按名称过滤

数据来源与参考

  • Microsoft Learn:Get-DnsClientCache

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌