Windows 怎么使用 PowerShell 动态统计 DNS 各区域查询量

雨浩同学_3110

雨浩同学_3110

2026-09-01

440人浏览

原创

powershell 无法直接按 dns 区域统计查询量,需先启用 dns 诊断日志,再通过解析日志提取域名后缀、分组统计实现区域级汇总,并支持正向/反向区域筛选及自动化告警。

powershell 本身不直接提供“按 dns 区域统计查询量”的实时计数功能,因为 windows 自带的 dns 服务器(dns server role)默认不记录每条查询所属的具体区域,只记录请求类型、客户端 ip、域名和时间等基础字段。但你可以通过启用并解析 dns 诊断日志,结合 powershell 筛选、分组和统计,实现按区域(即查询的域名后缀或权威区域名)动态汇总查询量。

启用 DNS 诊断日志(前提条件)

必须先在 DNS 服务器上开启详细查询日志,否则无数据可分析:

  • 以管理员身份运行 PowerShell,执行:
    Set-DnsServerDiagnostics -LogIPQuery 1 -LogClientQueries 1 -LogLevel 0xFF
  • 日志默认保存在 %SystemRoot%\System32\dns\dns.log,确保磁盘有足够空间且服务有写入权限
  • 重启 DNS 服务使设置生效:
    Restart-Service dns

用 PowerShell 实时提取并按区域归类统计

日志格式为纯文本,每行含时间、客户端IP、查询类型(QUERY)、域名等。关键操作是提取域名后缀(如 example.com),再按其归类计数:

IntoDNS.ai
IntoDNS.ai

免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。

下载
  • 读取最新日志(例如最近 10 分钟):
    $log = Get-Content "$env:SystemRoot\System32\dns\dns.log" -Tail 10000 | Where-Object { $_ -match 'QUERY.*IN' }
  • 提取域名并截取主区域(去掉子域,保留一级或二级域名):
    $zones = $log | ForEach-Object { if ($_ -match '\s+QUERY\s+\S+\s+IN\s+(\S+)') { $domain = $matches[1].ToLower(); if ($domain -match '\.([a-z0-9\-]+\.[a-z]{2,})$') { $matches[1] } else { $domain } } } | Where-Object { $_ }
  • 按区域统计频次:
    $zones | Group-Object | Sort-Object Count -Descending | Select-Object Name, Count

按需扩展:区分正向/反向区域或绑定到特定区域

若已知 DNS 服务器托管了明确的正向区域(如 contoso.com)和反向区域(如 10.168.192.in-addr.arpa),可进一步精准匹配:

  • 统计对 contoso.com 及其子域的全部查询:
    (Get-Content "$env:SystemRoot\System32\dns\dns.log" -Tail 5000) -match '\bcontoso\.com\b' | Measure-Object
  • 统计所有反向解析请求(常用于排查 PTR 泛滥):
    (Get-Content "$env:SystemRoot\System32\dns\dns.log" -Tail 5000) -match '\.in-addr\.arpa|\.ip6\.arpa' | Measure-Object

自动化轮询与告警(可选进阶)

将上述逻辑封装为脚本,每分钟运行一次,对比前后差异,发现异常突增:

  • 用 Get-Date -Format "yyyy-MM-dd HH:mm" 标记时间戳
  • 把每次结果导出为 CSV:
    $result | Export-Csv -Path "C:\dns\zone_stats_$(Get-Date -Format 'yyyyMMdd_HHmm').csv" -NoTypeInformation
  • 当某区域单分钟查询超 500 次,可触发邮件或写入事件日志:
    if ($result.Count -gt 500) { Write-EventLog -LogName Application -Source "DNSMonitor" -EventID 1001 -EntryType Warning -Message "High query volume on $($result.Name)" }

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

417

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

840

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2432

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

816

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

709

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

374

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2176

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4012

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

647

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HBuilderX Windows 安装手册
HBuilderX Windows 安装手册

共0课时 | 0人学习

phpEnv手册
phpEnv手册

共0课时 | 0人学习

好课诞生记
好课诞生记

共20课时 | 7.1万人学习