本节包含 DNSServer.DebugLogParser PowerShell 模块各版本的发布说明。
模块发布历史
DNSServer.DebugLogParser PowerShell 模块的版本发布说明
- 版本说明 v1.2.2.0 (2026-07-24)
- 版本说明 v1.2.1.0 (2026-01-26)
- 版本说明 v1.2.0.0 (2026-01-25)
- v1.0.0 (2026-01-23)
- 版本说明 v1.1.0 (2026-01-23)
版本说明 v1.2.2.0 (2026-07-24)
新增
- 新增:支持读取当前由 DNS 服务打开的 DNS 服务器调试日志文件
- 允许处理活动日志文件,无需先关闭文件
- 提升对仍在写入或被其他进程占用日志的兼容性
- 注意:处理实时日志时需谨慎,因为记录可能不完整或处于变化中
- 新增:支持读取源日志文件时使用 SMB/UNC 路径
- 允许解析器处理存储在网络共享和远程位置的文件
- 提高集中式或共享存储环境下的可靠性
变更
- 模块元数据:更新 ProjectUri 和 ReleaseNotes 指向 官方网站 https://dnsserverdebuglogparser.andibellstedt.com,以便更好地发现和访问文档
- 修正文件访问:更新底层文件打开逻辑,采用基于流的访问并显式设置共享读取选项
- 改善对实时日志文件和 UNC 共享等替代路径类型的处理
- 保持本地和远程文件源的一致行为
版本说明 v1.2.1.0 (2026-01-26)
变更内容
- 性能:改进了多行记录处理,避免将大文件全部加载到内存中
- 防止在处理超大日志文件时出现内存溢出错误
- 继续完全支持 PACKET 详细块和缩进的续行
- 内存使用量现在与文件大小无关,保持恒定
- 进度:新增
Write-Progress以反馈处理进度- 进度条每处理 1000 条记录更新一次,性能影响极小
- 显示当前记录数和正在处理的文件名称
版本说明 v1.2.0.0 (2026-01-25)
新增
- 新增:DNS PACKET 详细块的多行记录处理
- PACKET 上下文条目现在可以包含详细的 TCP/UDP 连接信息和 DNS 消息结构
- 详细块被解析为结构化的 JSON 格式,存储在新的
Details列中 - 包含:套接字信息、远程地址/端口、时序数据、消息结构(XID、Flags、QCOUNT 等)
- DNS 部分(QUESTION、ANSWER、AUTHORITY、ADDITIONAL)捕获完整记录详情
- 详细块中的编码域名自动转换为 FQDN 格式
- 新增:CSV 输出中的
Details列- 包含带有详细块的 PACKET 条目的结构化 JSON 数据
- 对于无详细信息的 PACKET 条目及所有非 PACKET 上下文,该列为空
- 支持对 DNS 查询/响应进行深度数据包分析和取证调查
- 新增:性能优化的
NoDetailsParsing开关参数- 跳过对 PACKET 详细块的昂贵 JSON 解析
- 可提升处理速度 30-50%,适用于包含大量详细块的日志
- 适合处理超大文件(100MB+)且不需要详细包结构时使用
- 详细块仍收集于 Information 列,但 Details 列保持为空
- 新增:非 PACKET 上下文的多行续行支持
- EVENT、Note、DSPoll 等上下文现在可跨多行
- 缩进的续行自动合并至主记录的 Information 字段
- 保留完整的错误信息、区域更新和诊断输出
- 新增:
ContextFilter识别更多上下文类型:DSPoll、Init、Lookup、Recurse、Remote、Tombstone- 作用:
Convert-DNSDebugLogFile现在可通过-ContextFilter包含/排除这些诊断和生命周期条目
- 作用:
- 新增:统计输出新增两个专用文件
_Statistic.csv:按日期和上下文类型的每日记录计数(Date、Context、Count、ComputerName)_PacketStatistic.csv:按日期、客户端/协议/方向/类型的每日 PACKET 计数(Date、ClientIP、Protocol、Direction、QuestionType、Count、ComputerName)- 优势:更聚焦的报告(操作上下文量与 DNS 流量细分)
- PACKET 详细块的 JSON 生成经过性能优化(手动解析替代正则)
变更
- 重大变更:CSV 输出现在包含 18 列(在
ComputerName前新增Details列)- 新列顺序:DateTime、ThreadId、Context、PacketId、Protocol、Direction、ClientIP、Xid、Type、Opcode、FlagsHex、FlagsChar、ResponseCode、QuestionType、QuestionName、Information、Details、ComputerName
- 影响:依赖列位置的脚本需更新
- 优势:丰富的数据包分析能力,同时不改变现有 Information 列行为
- 数据行处理重构为将所有行读入内存,以便高效检测多行记录
- 性能:由于优化的 List
使用,影响极小 - 优势:支持准确的前瞻检测详细块和续行
- 性能:由于优化的 List
- 缺失或编码为空的查询名现在优雅处理(无解析错误);CSV 输出中缺失时 QuestionName 字段为空
改进
Convert-DNSDebugLogFile解析更健壮:更严格的行验证和改进的提取减少了格式错误日志产生的虚假/无效行,同时保持 CSV/统计输出格式- PACKET 上下文检测区分简单查询和带详细块的查询
- 无详细信息的 PACKET 条目后空行正确跳过
- 详细块中的域名解码使用现有的
ConvertTo-Fqdn函数以保持一致性
性能
- 对无详细块日志保持处理速度
NoDetailsParsing开关在不需要 JSON 解析时提供 30-50% 的速度提升- 多行记录处理期间高效的状态管理
- 使用优化的字符串操作(TrimStart、Join)替代正则处理续行
备注
- 这些更改设计为向后兼容正常使用场景。如依赖特定上下文名称集或之前严格的解析行为,请验证下游脚本
- 新的
Details列始终存在于 CSV 输出中;使用NoDetailsParsing可保持其为空以提升性能 - 现有按列位置解析 CSV 的脚本需考虑新增的
Details列(位置为第17列,位于 ComputerName 之前)
v1.0.0 (2026-01-23)
新增
- 初始版本发布
Convert-DNSDebugLogFile- 高性能解析器,用于 Windows DNS 服务器调试日志文件- 解析 DNS 调试日志中的所有 15 个标准字段,转换为结构化的 CSV 格式
- 支持自定义 CSV 分隔符(默认:分号)
- 可选的 ComputerName 列,便于多服务器日志合并
- 三种输出模式:仅 CSV 数据、仅统计信息或两者兼有
- 按客户端 IP、协议和查询类型汇总的统计摘要
- 支持管道处理,实现批量处理多个日志文件
- 头部验证以确保数据完整性(可根据需要绕过)
- 可选自动压缩输出文件(ZIP 格式)
- 处理成功后可选删除源文件
- 文化感知的日期解析和格式化,适用于国际 DNS 服务器
- 针对大文件(100MB 以上)优化,采用流式 I/O 和高效字符串操作
- 兼容 PowerShell 5.1+(桌面版和核心版)
- 支持 Windows Server 2016+ 及 DNS Server 2012 R2 至 2025 日志格式
版本说明 v1.1.0 (2026-01-23)
新增
- 新增:ContextFilter 参数用于选择性日志解析
- 按上下文类型过滤日志条目:PACKET(DNS 查询/响应)、EVENT(服务器事件)或 Note(诊断信息)
- 允许针对特定日志条目类型进行聚焦分析
- 默认值:All(包含所有上下文类型)
- 使用场景:仅关注 DNS 流量,监控服务器事件,排查诊断问题
- 新增:CSV 输出中的信息字段
- 捕获 EVENT 和 Note 上下文条目的详细信息
- 示例:“DNS 服务器已启动”、“区域加载完成”、套接字错误、内部状态消息
- 增强对 DNS 服务器运行事件和诊断的可见性
- 当 Context 为 EVENT 或 Note 时填充该字段;PACKET 条目为空
变更
- 重大变更:ComputerName 列现在始终包含在所有输出记录的末尾
- 之前:ComputerName 仅在指定参数时有条件地包含在开头
- 现在:ComputerName 始终作为最后一列出现;未指定参数时为空
- 优点:输出结构一致,简化多服务器日志合并和自动化处理
- 影响:现有解析列位置或依赖条件列存在的脚本需更新
新增
- 通过 ContextFilter 参数实现上下文过滤,聚焦特定日志条目类型(PACKET、EVENT、NOTE)
改进
- 重构 Convert-DNSDebugLogFile 的注释帮助,提升清晰度和简洁性
- 更新参数描述,使其更具信息性和可操作性
- 改进示例文档,提供更聚焦且实用的用例
- 增强 about_DNSServer.DebugLogParser 帮助文件,反映当前功能
- 增强详细日志记录,提供处理过程中的更详细进度信息