在这里,你可以找到模块中所有命令的参考资料。此参考旨在帮助你快速找到所需命令,并了解如何有效使用它。
点击命令后,你将进入一个详细页面,提供该命令的全面信息,包括语法、参数、示例以及任何额外的使用说明或技巧。
在这里,你可以找到模块中所有命令的参考资料。此参考旨在帮助你快速找到所需命令,并了解如何有效使用它。
点击命令后,你将进入一个详细页面,提供该命令的全面信息,包括语法、参数、示例以及任何额外的使用说明或技巧。
将 Windows DNS 服务器调试日志转换为结构化的 CSV 格式,便于分析和报告。
Convert-DNSDebugLogFile [-InputFile] <string[]> [[-OutputFile] <string>] [[-Delimiter] <string>]
[[-ComputerName] <string>] [[-OutputType] <string>] [[-ContextFilter] <string[]>]
[[-InputCulture] <cultureinfo>] [[-OutputCulture] <cultureinfo>] [-SkipHeaderValidation]
[-RemoveSourceFile] [-CompressOutput] [-NoDetailsParsing] [-WhatIf] [-Confirm]
此 cmdlet 有以下别名,
将 Windows DNS 服务器调试日志文件转换为结构化的 CSV 数据,可在 Excel、Power BI、SQL 数据库或 SIEM 工具中进行分析。 设计用于安全分析、性能监控、故障排除和合规报告。
该 cmdlet 解析 DNS 调试日志并输出一致的 CSV 格式以供分析。
CSV 输出包含 18 列,包括用于事件/诊断文本的 Information 列、可选的包含数据包详细信息块的 Details JSON 列,以及始终存在的 ComputerName 列(除非指定,否则为空)。
主要功能:
输出格式:
ComputerName 列始终包含在每条记录的末尾。
如果未指定 -ComputerName 参数,该列将为空。
这保证了多服务器合并场景下输出结构的一致性。
性能: 使用带 64KB 缓冲区的 StreamReader/StreamWriter 优化,流式处理实现内存高效处理大文件,使用字符串操作替代正则表达式,手动生成 CSV,采用高效的哈希表统计收集。
兼容性:
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log"
使用默认设置转换 DNS 调试日志(生成数据文件和统计文件,分隔符为分号)。 输出:
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputType CSV
仅生成数据文件,不生成统计文件。 输出:C:\Logs\dns.csv
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputType Statistic
仅生成带聚合指标的统计文件。 输出:
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputFile "C:\Output\parsed.csv"
将日志转换到自定义输出位置。 输出:C:\Output\parsed.csv
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -Delimiter "," -ComputerName "DNS01" -OutputType Both
使用逗号分隔符转换,并添加值为 “DNS01” 的 ComputerName 列。 输出:
PS C:\> Get-ChildItem "C:\Logs\*.log" | Convert-DNSDebugLogFile -OutputType Both
通过管道批量处理多个 DNS 调试日志文件。 输出:为每个 .log 文件生成 .csv 和 _statistic.csv 文件
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -CompressOutput
转换并压缩输出为 ZIP 归档。 输出:C:\Logs\dns.zip(包含 dns.csv 及统计文件)
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -RemoveSourceFile -Verbose
转换日志并在成功处理后删除源文件。 详细输出确认文件已删除。
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -InputCulture 'de-DE' -OutputCulture 'en-US'
解析德国日期格式(DD.MM.YYYY),输出为美国格式(MM/DD/YYYY)。 用于处理来自不同区域设置服务器的日志。
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter 'Packet'
仅转换 DNS 查询/响应数据包条目,排除 EVENT 和 Note 条目。 用于聚焦实际 DNS 流量分析。
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter 'Packet','Event'
转换 DNS 查询/响应数据包和服务器事件,排除 Note 和其他条目。 用于同时分析 DNS 流量和服务器事件上下文。
PS C:\> Get-ChildItem "C:\Logs\*.log" | Convert-DNSDebugLogFile -RemoveSourceFile -CompressOutput
自动日志归档:处理所有日志,压缩输出,并删除源文件。 适合计划任务的日志处理管道。
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\large-dns.log" -NoDetailsParsing
处理大型日志文件,禁用详细解析以获得最大性能。 PACKET 详细块被跳过,Details 列保持为空。 适用于处理非常大的文件且不需要详细数据包结构时。
在创建后将输出的 CSV 文件压缩为 ZIP 归档。
创建一个包含生成的 CSV 文件的 .zip 文件,然后删除未压缩的 CSV 文件。 ZIP 文件与输出 CSV 文件位于同一目录,且具有相同的基本名称。
优点:
示例:输入 ‘dns.log’ 生成 ‘dns.csv’,压缩为 ‘dns.zip’,然后删除 ‘dns.csv’。
Type: SwitchParameter
DefaultValue: False
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
Position: Named
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
指定 CSV 输出中 ComputerName 列的值。 ComputerName 列始终包含在输出中——如果未指定此参数,该列将为空。
当合并多个 DNS 服务器日志时,使用此参数标识源服务器。
注意:这不是远程参数。 它仅用于标记输出。 如果 -InputFile 指向 UNC 路径,文件将直接从该路径读取(不执行 WinRM/远程操作)。
Type: String
DefaultValue: ''
SupportsWildcards: false
Aliases:
- Server
- DNSServer
- HostName
ParameterSets:
- Name: (All)
Position: 3
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
在运行 cmdlet 前提示确认。
指定后,会在以下操作前提示确认:
适合交互式处理时控制处理文件。
Type: SwitchParameter
DefaultValue: ''
SupportsWildcards: false
Aliases:
- cf
ParameterSets:
- Name: (All)
Position: Named
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
过滤要包含在输出中的日志条目类型。 支持单个或多个值。
DNS 调试日志包含不同上下文类型:
有效值:
默认:All
示例:
注意:过滤为 ‘Event’ 或 ‘Note’ 时,只有 DateTime、ThreadId、Context 和 Information 列有数据。 其他列(协议、客户端 IP 等)为空。
Type: String[]
DefaultValue: "@('All')"
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
Position: 5
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
指定 CSV 输出的分隔符字符。
默认:分号 (;)
常用替代:逗号 (,)、制表符 (`t)、管道符 (|)
在使用逗号作为小数点分隔符的地区(欧洲)使用分号。 对于标准 CSV 工具和期望逗号分隔的数据库,使用逗号。
Type: String
DefaultValue: ;
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
Position: 2
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
指定用于解析 DNS 调试日志中日期/时间值的文化/区域设置。
DNS 服务器调试日志使用生成日志的服务器 Windows 区域设置的日期格式。 处理来自不同区域设置服务器的日志时使用此参数。
默认:当前文化
常见示例:
Type: CultureInfo
DefaultValue: '[System.Globalization.CultureInfo]::CurrentCulture'
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
Position: 6
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
指定要解析的 DNS 调试日志文件路径。 支持数组以处理多个文件。
接受来自 Get-ChildItem 或其他生成文件的 cmdlet 的管道输入。
Type: String[]
DefaultValue: ''
SupportsWildcards: false
Aliases:
- FullName
- FilePath
- InputPath
- File
- Path
ParameterSets:
- Name: (All)
Position: 0
IsRequired: true
ValueFromPipeline: true
ValueFromPipelineByPropertyName: true
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
跳过将 PACKET 详细块解析为结构化 JSON 格式。
指定后,包含详细块的 PACKET 记录将在 Information 列显示 TCP/UDP 信息行,但 Details 列保持为空。 这显著提升处理大型日志文件时的性能,适合不需要详细数据包结构分析的场景。
使用场景:
性能影响:对于包含大量 PACKET 详细块的日志,处理速度可提升 30-50%。
Type: SwitchParameter
DefaultValue: False
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
Position: Named
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
指定用于格式化输出 CSV 文件中日期/时间值的文化/区域设置。
控制 DateTime 值写入 CSV 的格式。 当 CSV 文件将被特定区域设置的应用或系统使用时,使用此参数。
默认:当前文化
常见示例:
Type: CultureInfo
DefaultValue: '[System.Globalization.CultureInfo]::CurrentCulture'
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
Position: 7
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
指定输出 CSV 文件的路径。 如果未指定,使用输入文件名并更改扩展名为 .csv,输出到输入文件所在目录。
重要:必须是文件路径,不能是目录。 如果想使用输入文件目录但自定义文件名,请指定包含文件名的完整路径。
Type: String
DefaultValue: ''
SupportsWildcards: false
Aliases:
- Output
- Destination
- OutFile
- OutputPath
ParameterSets:
- Name: (All)
Position: 1
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
指定生成的输出类型。
有效值:
默认:Both
生成统计时,会创建两个独立文件:
Type: String
DefaultValue: Both
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
Position: 4
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
成功处理后删除源 DNS 调试日志文件。
适用于自动化日志处理管道或磁盘空间管理。 仅当处理成功且所有输出文件均已创建时才删除源文件。
安全性:不能与 -SkipHeaderValidation 一起使用,以防止意外删除无效文件。
警告:源文件将被永久删除。 使用此选项前请确保输出文件有效。
Type: SwitchParameter
DefaultValue: False
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
Position: Named
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
跳过 DNS 调试日志头部验证检查。
默认情况下,cmdlet 会验证输入文件是否具有有效的 DNS 服务器调试日志头部。 使用此开关可处理无验证的文件,适用于:
警告:如果文件不是有效的 DNS 日志,可能导致处理错误。
Type: SwitchParameter
DefaultValue: False
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
Position: Named
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
显示如果运行 cmdlet 会发生什么。 cmdlet 不会实际执行。
指定后,显示将执行的操作的详细信息,但不执行。 适用于:
Type: SwitchParameter
DefaultValue: ''
SupportsWildcards: false
Aliases:
- wi
ParameterSets:
- Name: (All)
Position: Named
IsRequired: false
ValueFromPipeline: false
ValueFromPipelineByPropertyName: false
ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。详情请参阅 about_CommonParameters。
版本 : 1.7.2.1
作者 : Andi Bellstedt, Copilot, Patrick Charbonnier (Silent Waters IT Consulting S.L.)
日期 : 2026-07-24
关键词 : Microsoft Windows Server, DNSServer, DNS, DebugLog, LogParser