输出格式

CSV 数据文件的列、两个可选的统计文件,以及在运行任何操作之前你可以打开的真实示例输出。

For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /cn/docs/02-output-formats/index.md.

Convert-DNSDebugLogFile 每个输入日志最多生成三个文件:

文件内容生成条件
<name>.csv每个解析的日志条目一行-OutputType CSVBoth
<name>_Statistic.csv每个上下文的每日记录计数-OutputType StatisticBoth
<name>_PacketStatistic.csv每个客户端、协议、方向和记录类型的每日查询计数-OutputType StatisticBoth

Both 是默认值。输出文件会放在输入文件旁边,除非你设置了 -OutputFile

本页链接的示例文件是真实的转换结果,而非模拟。下载一个并用 Excel 打开,确认后再设计你的管道。

CSV 数据文件

示例输出:

语言环境Details 列文件
en-US未填充WithComputerName, NoComputerName
de-DE未填充WithComputerName, NoComputerName
de-DE已填充WithComputerName, NoComputerName

真实转换的两行示例——一个 DNS 查询和一个服务器内部备注:

DateTime;ThreadId;Context;PacketId;Protocol;Direction;ClientIP;Xid;Type;Opcode;FlagsHex;FlagsChar;ResponseCode;QuestionType;QuestionName;Information;Details;ComputerName
2026-01-20 23:00:16;0FE0;Packet;000002C53117D990;UDP;Rcv;10.0.0.2;c049;Query;Standard;0001;RecursionDesired;NOERROR;A;"odc.officeapps.live.com";"";"";dc01
2026-01-20 23:00:16;DF0;Note;;;;;;;;;;;;"";"got GQCS failure on a dead socket context status=995, socket=904";"";dc01

列说明

始终有 18 列,且顺序固定:

#列名含义典型用途
1DateTime条目时间戳时间过滤,与其他日志关联
2ThreadIdDNS 服务器工作线程很少用;用于关联服务器内部问题
3Context条目类型:PacketEventNoteDSPollInitLookupRecurseRemoteTombstone首个过滤条件——Packet 是实际的 DNS 流量
4PacketId内部数据包标识符配对查询与响应
5ProtocolUDPTCPTCP 峰值可能表示大响应或区域传输
6DirectionRcv(接收查询)或 Snd(服务器响应)区分请求量和响应量
7ClientIP查询主机地址主要流量分析,事件范围界定
8XidDNS 事务 ID(十六进制)匹配请求和响应
9TypeQueryResponse
10OpcodeStandardNotifyUpdateUnknown区分动态更新和区域通知与普通查询
11FlagsHex原始头标志(十六进制)深度协议分析
12FlagsChar解码标志:AuthoritativeTruncatedRecursionDesiredRecursionAvailable上述标志的可读版本
13ResponseCodeNOERRORNXDOMAINSERVFAIL错误率报告,解析失败排查
14QuestionType记录类型:AAAAAMXPTRTXTTXT 量是经典的隧道指标
15QuestionName查询名称,标准 FQDN威胁情报匹配,顶级域报告
16InformationEvent / Note 的自由文本;Packet 细节块的 TCP/UDP 头行读取服务器消息
17DetailsPacket 细节块的 JSON 表示;否则为空无需回查原始日志即可完整包检查
18ComputerName来源服务器,来自 -ComputerName 参数保持多服务器数据集可归属

需要注意两点:

  • 并非每行每列都有数据。 只有 Packet 条目有客户端 IP、查询名称和响应码。NoteEvent 行的文本在 Information 中,协议相关列为空。请据此设计数据库结构和仪表盘过滤器。
  • ComputerName 总是最后一列,即使未使用 -ComputerName 参数。 此时该列为空。这样所有服务器的布局一致,方便合并多个 DNS 服务器的文件,无需列映射。

Details 列

只有当 DNS 服务器配置为记录完整包细节时,才会出现细节块。存在时,解析器将其转换为单个 JSON 值,使该行仍为一行:

{
  "Socket": "848",
  "Remote": "addr 10.10.0.11, port 60580",
  "Buflength": "0x10000 (65536)",
  "Message": {
    "XID": "0x0001",
    "OPCODE": "0 (QUERY)",
    "RCODE": "0 (NOERROR)",
    "QUESTION": [ { "Name": "berlin.de", "QTYPE": "A (1)", "QCLASS": "1" } ],
    "ANSWER": []
  }
}

解析这些块会消耗时间并显著增加 CSV 文件大小。如果不需要,使用 -NoDetailsParsing 参数——该列仍存在但为空,转换速度更快。详见性能

统计文件

统计是每日汇总。当你想要趋势或汇总数据,而不想移动完整记录集时使用——它们比数据文件小几个数量级。

上下文统计(*_Statistic.csv

回答:每天发生了多少种类的活动?

Date;Context;Count;ComputerName
2026-01-20;Event;2;dc01
2026-01-20;Note;2;dc01
2026-01-20;Packet;12;dc01
列名含义
Date日期,格式固定为 yyyy-MM-dd
Context上下文名称(PacketEventNote 等)
Count当天该上下文的记录数
ComputerName来源服务器

示例文件:en-US WithComputerName, en-US NoComputerName, de-DE WithComputerName, de-DE NoComputerName

包统计(*_PacketStatistic.csv

回答:谁查询了什么,频率如何,每天?

Date;ClientIP;Protocol;Direction;QuestionType;Count;ComputerName
2026-01-20;10.0.0.1;UDP;Rcv;A;3;dc01
2026-01-20;10.0.0.1;UDP;Snd;A;3;dc01
2026-01-20;10.0.0.2;UDP;Rcv;A;3;dc01
列名含义
Date日期,格式固定为 yyyy-MM-dd
ClientIP查询主机
ProtocolUDPTCP
DirectionRcvSnd
QuestionTypeDNS 记录类型
Count当天匹配包的数量
ComputerName来源服务器

示例文件:en-US WithComputerName, en-US NoComputerName, de-DE WithComputerName, de-DE NoComputerName

分隔符和日期格式

两种输出类型都支持 -Delimiter(默认 ;)和 -OutputCulture。对于机器导入,建议使用类似 ISO 的时间戳格式:

Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputCulture 'sv-SE'

这会生成 2026-01-20 23:00:16,SQL Server、Power BI 和 pandas 都能无格式提示正确读取。详情见参数和选项