<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Release history for the module on PowerShell module DNSServer.DebugLogParser</title><link>https://DNSServerDebugLogParser.andibellstedt.com/v1.2.0.0/changelog/</link><description>Recent content in Release history for the module on PowerShell module DNSServer.DebugLogParser</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 25 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://DNSServerDebugLogParser.andibellstedt.com/v1.2.0.0/changelog/index.xml" rel="self" type="application/rss+xml"/><item><title>Release notes v1.2.0.0 (2026-01-25)</title><link>https://DNSServerDebugLogParser.andibellstedt.com/v1.2.0.0/changelog/release-v1.2.0.0/</link><pubDate>Sun, 25 Jan 2026 00:00:00 +0000</pubDate><guid>https://DNSServerDebugLogParser.andibellstedt.com/v1.2.0.0/changelog/release-v1.2.0.0/</guid><description>&lt;h2 id="added"&gt;Added&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: Multi-line record processing for DNS PACKET detail blocks
&lt;ul&gt;
&lt;li&gt;PACKET context entries can now include detailed TCP/UDP connection information and DNS message structure&lt;/li&gt;
&lt;li&gt;Detail blocks are parsed into structured JSON format in the new &lt;code&gt;Details&lt;/code&gt; column&lt;/li&gt;
&lt;li&gt;Includes: Socket info, remote address/port, timing data, message structure (XID, Flags, QCOUNT, etc.)&lt;/li&gt;
&lt;li&gt;DNS sections (QUESTION, ANSWER, AUTHORITY, ADDITIONAL) are captured with full record details&lt;/li&gt;
&lt;li&gt;Encoded domain names in detail blocks are automatically converted to FQDN format&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: &lt;code&gt;Details&lt;/code&gt; column in CSV output
&lt;ul&gt;
&lt;li&gt;Contains structured JSON data for PACKET entries with detail blocks&lt;/li&gt;
&lt;li&gt;Empty for PACKET entries without details and all non-PACKET contexts&lt;/li&gt;
&lt;li&gt;Enables deep packet analysis and forensic investigation of DNS queries/responses&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: &lt;code&gt;NoDetailsParsing&lt;/code&gt; switch parameter for performance optimization
&lt;ul&gt;
&lt;li&gt;Skips expensive JSON parsing of PACKET detail blocks&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Can improve&lt;/strong&gt;&lt;/em&gt; processing speed by &lt;strong&gt;30-50%&lt;/strong&gt; for logs with many detail blocks&lt;/li&gt;
&lt;li&gt;Use when processing very large files (100MB+) and detailed packet structure is not needed&lt;/li&gt;
&lt;li&gt;Detail blocks are still collected in Information column, but Details column remains empty&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: Multi-line continuation support for non-PACKET contexts
&lt;ul&gt;
&lt;li&gt;EVENT, Note, DSPoll, and other contexts can now span multiple lines&lt;/li&gt;
&lt;li&gt;Indented continuation lines are automatically joined to the main record&amp;rsquo;s Information field&lt;/li&gt;
&lt;li&gt;Preserves complete error messages, zone updates, and diagnostic output&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: &lt;code&gt;ContextFilter&lt;/code&gt; recognizes additional context types: &lt;code&gt;DSPoll&lt;/code&gt;, &lt;code&gt;Init&lt;/code&gt;, &lt;code&gt;Lookup&lt;/code&gt;, &lt;code&gt;Recurse&lt;/code&gt;, &lt;code&gt;Remote&lt;/code&gt;, &lt;code&gt;Tombstone&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;Effect: &lt;code&gt;Convert-DNSDebugLogFile&lt;/code&gt; can now include/exclude these diagnostic and lifecycle entries via &lt;code&gt;-ContextFilter&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: Statistics output now includes two dedicated files
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;_Statistic.csv&lt;/code&gt;: Daily record counts per context type (Date, Context, Count, ComputerName)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_PacketStatistic.csv&lt;/code&gt;: Daily PACKET counts by client/protocol/direction/type (Date, ClientIP, Protocol, Direction, QuestionType, Count, ComputerName)&lt;/li&gt;
&lt;li&gt;Benefit: More focused reporting (operational context volume vs. DNS traffic breakdown)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;JSON generation for PACKET detail blocks is optimized for performance (manual parsing instead of regex)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="changed"&gt;Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BREAKING&lt;/strong&gt;: CSV output now includes 18 columns (added &lt;code&gt;Details&lt;/code&gt; column before &lt;code&gt;ComputerName&lt;/code&gt;)
&lt;ul&gt;
&lt;li&gt;New column order: DateTime, ThreadId, Context, PacketId, Protocol, Direction, ClientIP, Xid, Type, Opcode, FlagsHex, FlagsChar, ResponseCode, QuestionType, QuestionName, Information, &lt;strong&gt;Details&lt;/strong&gt;, ComputerName&lt;/li&gt;
&lt;li&gt;Impact: Scripts that rely on column positions must be updated&lt;/li&gt;
&lt;li&gt;Benefit: Rich packet analysis capabilities without changing existing Information column behavior&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Data line processing refactored to read all lines into memory for efficient multi-line record detection
&lt;ul&gt;
&lt;li&gt;Performance: Minimal impact due to optimized List&lt;string&gt; usage&lt;/li&gt;
&lt;li&gt;Benefit: Enables accurate lookahead for detail blocks and continuation lines&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Question names that are missing or encoded as empty are now handled gracefully (no parse errors); CSV output will contain an empty QuestionName field when absent&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="improved"&gt;Improved&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Convert-DNSDebugLogFile&lt;/code&gt; parsing is more resilient: stricter line validation and improved extraction reduce spurious/invalid rows from malformed logs while preserving the CSV/statistic output format&lt;/li&gt;
&lt;li&gt;PACKET context detection distinguishes between simple queries and queries with detail blocks&lt;/li&gt;
&lt;li&gt;Empty lines after PACKET entries without details are properly skipped&lt;/li&gt;
&lt;li&gt;Domain name decoding in detail blocks uses existing &lt;code&gt;ConvertTo-Fqdn&lt;/code&gt; function for consistency&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="performance"&gt;Performance&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Processing speed maintained for logs without detail blocks&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NoDetailsParsing&lt;/code&gt; switch provides 30-50% speed improvement when JSON parsing is not needed&lt;/li&gt;
&lt;li&gt;Efficient state management during multi-line record processing&lt;/li&gt;
&lt;li&gt;Optimized string operations (TrimStart, Join) instead of regex for continuation line handling&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;These changes are designed to be backward compatible for normal usage. If you rely on an exact set of context names or previously-strict parsing behavior, please validate downstream scripts&lt;/li&gt;
&lt;li&gt;The new &lt;code&gt;Details&lt;/code&gt; column is always present in CSV output; use &lt;code&gt;NoDetailsParsing&lt;/code&gt; to keep it empty for performance&lt;/li&gt;
&lt;li&gt;Existing scripts that parse CSV by column position need to account for the new &lt;code&gt;Details&lt;/code&gt; column (position 17, before ComputerName)&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Release notes v1.0.0 (2026-01-23)</title><link>https://DNSServerDebugLogParser.andibellstedt.com/v1.2.0.0/changelog/release-v1.0.0/</link><pubDate>Fri, 23 Jan 2026 00:00:00 +0000</pubDate><guid>https://DNSServerDebugLogParser.andibellstedt.com/v1.2.0.0/changelog/release-v1.0.0/</guid><description>&lt;h3 id="added"&gt;Added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Initial release&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Convert-DNSDebugLogFile&lt;/code&gt; - High-performance parser for Windows DNS Server debug log files&lt;/li&gt;
&lt;li&gt;Parses all 15 standard fields from DNS debug logs into structured CSV format&lt;/li&gt;
&lt;li&gt;Supports customizable CSV delimiters (default: semicolon)&lt;/li&gt;
&lt;li&gt;Optional ComputerName column for multi-server log consolidation&lt;/li&gt;
&lt;li&gt;Three output modes: CSV data only, statistics only, or both&lt;/li&gt;
&lt;li&gt;Statistical summaries aggregating activity by client IP, protocol, and query type&lt;/li&gt;
&lt;li&gt;Pipeline support for batch processing multiple log files&lt;/li&gt;
&lt;li&gt;Header validation to ensure data integrity (can be bypassed if needed)&lt;/li&gt;
&lt;li&gt;Optional automatic compression of output files (ZIP format)&lt;/li&gt;
&lt;li&gt;Optional removal of source files after successful processing&lt;/li&gt;
&lt;li&gt;Culture-aware date parsing and formatting for international DNS servers&lt;/li&gt;
&lt;li&gt;Optimized for large files (100MB + ) using streaming I/O and efficient string operations&lt;/li&gt;
&lt;li&gt;Compatible with PowerShell 5.1+ (Desktop and Core editions)&lt;/li&gt;
&lt;li&gt;Supports Windows Server 2016+ and DNS Server 2012 R2 through 2025 log formats&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Release notes v1.1.0 (2026-01-23)</title><link>https://DNSServerDebugLogParser.andibellstedt.com/v1.2.0.0/changelog/release-v1.1.0.0/</link><pubDate>Fri, 23 Jan 2026 00:00:00 +0000</pubDate><guid>https://DNSServerDebugLogParser.andibellstedt.com/v1.2.0.0/changelog/release-v1.1.0.0/</guid><description>&lt;h2 id="added"&gt;Added&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: ContextFilter parameter for selective log parsing
&lt;ul&gt;
&lt;li&gt;Filter log entries by context type: PACKET (DNS queries/responses), EVENT (server events), or Note (diagnostic information)&lt;/li&gt;
&lt;li&gt;Allows focused analysis on specific log entry types&lt;/li&gt;
&lt;li&gt;Default: All (includes all context types)&lt;/li&gt;
&lt;li&gt;Use cases: Focus on DNS traffic only, monitor server events, troubleshoot diagnostic issues&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NEW&lt;/strong&gt;: Information field in CSV output
&lt;ul&gt;
&lt;li&gt;Captures detailed information for EVENT and Note context entries&lt;/li&gt;
&lt;li&gt;Examples: &amp;ldquo;The DNS server has started.&amp;rdquo;, &amp;ldquo;Zone loading completed&amp;rdquo;, socket errors, internal state messages&lt;/li&gt;
&lt;li&gt;Enhances visibility into DNS server operational events and diagnostics&lt;/li&gt;
&lt;li&gt;Field is populated when Context is EVENT or Note; empty for PACKET entries&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="changed"&gt;Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BREAKING&lt;/strong&gt;: ComputerName column now always included at the end of all output records
&lt;ul&gt;
&lt;li&gt;Previously: ComputerName was conditionally included at the beginning when parameter was specified&lt;/li&gt;
&lt;li&gt;Now: ComputerName always present as the last column; empty when parameter not specified&lt;/li&gt;
&lt;li&gt;Benefit: Consistent output structure simplifies multi-server log consolidation and automated processing&lt;/li&gt;
&lt;li&gt;Impact: Existing scripts that parse column positions or expect conditional column presence must be updated&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="added-1"&gt;Added&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Context filtering to focus on specific log entry types (PACKET, EVENT, NOTE) via ContextFilter parameter&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="improved"&gt;Improved&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Refactored comment-based help for Convert-DNSDebugLogFile for better clarity and conciseness&lt;/li&gt;
&lt;li&gt;Updated parameter descriptions to be more informative and actionable&lt;/li&gt;
&lt;li&gt;Improved example documentation with more focused and practical use cases&lt;/li&gt;
&lt;li&gt;Enhanced about_DNSServer.DebugLogParser help file to reflect current functionality&lt;/li&gt;
&lt;li&gt;Enhanced verbose logging to provide more detailed progress information during processing&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>