<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Indented! &#187; Microsoft DNS</title>
	<atom:link href="http://www.indented.co.uk/index.php/tag/microsoft-dns/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.indented.co.uk</link>
	<description></description>
	<lastBuildDate>Fri, 02 Jul 2010 10:45:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>DnsShell: Zone and Server CmdLets</title>
		<link>http://www.indented.co.uk/index.php/2010/04/16/dnsshell-zone-and-server-cmdlets/</link>
		<comments>http://www.indented.co.uk/index.php/2010/04/16/dnsshell-zone-and-server-cmdlets/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 15:10:49 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[DnsShell]]></category>
		<category><![CDATA[Microsoft DNS]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.indented.co.uk/?p=1470</guid>
		<description><![CDATA[After fixing a couple of authentication bugs with Set-DnsRecord and New-DnsRecord I decided to make an attempt to finish off some of the zone and server CmdLets. The module now contains these additional CmdLets. Refresh-DnsZone &#8211; Implements the ForceRefresh method for Secondary Zones Reload-ADDnsZone &#8211; Implements the UpdateFromDS method for AD Integrated Zones Reload-DnsZone Reset-DnsZoneType [...]


Related posts:<ol><li><a href='http://www.indented.co.uk/index.php/2010/03/29/dnsshell-alpha/' rel='bookmark' title='Permanent Link: DnsShell &#8211; alpha release'>DnsShell &#8211; alpha release</a> <small>DnsShell is my PowerShell module intended to help administer MS...</small></li>
<li><a href='http://www.indented.co.uk/index.php/2010/04/14/dnsshell-get-ad/' rel='bookmark' title='Permanent Link: DnsShell: Get-AD*'>DnsShell: Get-AD*</a> <small>A new version of DnsShell has been released, this release...</small></li>
<li><a href='http://www.indented.co.uk/index.php/dnsshell/' rel='bookmark' title='Permanent Link: DnsShell'>DnsShell</a> <small>DnsShell is a Microsoft DNS administration module for PowerShell 2.0....</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>After fixing a couple of authentication bugs with Set-DnsRecord and New-DnsRecord I decided to make an attempt to finish off some of the zone and server CmdLets.</p>
<p>The module now contains these additional CmdLets.</p>
<ul>
<li><b>Refresh-DnsZone</b> &#8211; Implements the ForceRefresh method for Secondary Zones</li>
<li><b>Reload-ADDnsZone</b> &#8211; Implements the UpdateFromDS method for AD Integrated Zones</li>
<li><b>Reload-DnsZone</b></li>
<li><b>Reset-DnsZoneType</b> &#8211; Implements the ChangeZoneType method</li>
<li><b>Resume-DnsZone</b></li>
<li><b>Set-DnsZoneTransfer</b> &#8211; Implements the ResetSecondaries method</li>
<li><b>Start-DnsScavenging</b></li>
<li><b>Start-DnsService</b></li>
<li><b>Stop-DnsService</b></li>
<li><b>Suspend-DnsZone</b> &#8211; Implements the Pause method</li>
<li><b>Update-DnsZoneFile</b></li>
</ul>
<p>As usual, the module can be downloaded from <a href='http://code.msdn.microsoft.com/dnsshell'>code.msdn.microsoft.com/dnsshell</a>.</p>


<p>Related posts:<ol><li><a href='http://www.indented.co.uk/index.php/2010/03/29/dnsshell-alpha/' rel='bookmark' title='Permanent Link: DnsShell &#8211; alpha release'>DnsShell &#8211; alpha release</a> <small>DnsShell is my PowerShell module intended to help administer MS...</small></li>
<li><a href='http://www.indented.co.uk/index.php/2010/04/14/dnsshell-get-ad/' rel='bookmark' title='Permanent Link: DnsShell: Get-AD*'>DnsShell: Get-AD*</a> <small>A new version of DnsShell has been released, this release...</small></li>
<li><a href='http://www.indented.co.uk/index.php/dnsshell/' rel='bookmark' title='Permanent Link: DnsShell'>DnsShell</a> <small>DnsShell is a Microsoft DNS administration module for PowerShell 2.0....</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.indented.co.uk/index.php/2010/04/16/dnsshell-zone-and-server-cmdlets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DnsShell: Get-AD*</title>
		<link>http://www.indented.co.uk/index.php/2010/04/14/dnsshell-get-ad/</link>
		<comments>http://www.indented.co.uk/index.php/2010/04/14/dnsshell-get-ad/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 13:09:51 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[DnsShell]]></category>
		<category><![CDATA[Microsoft DNS]]></category>
		<category><![CDATA[PowerShell]]></category>

		<guid isPermaLink="false">http://www.indented.co.uk/?p=1467</guid>
		<description><![CDATA[A new version of DnsShell has been released, this release improves Get-ADDnsRecord and adds Get-ADDnsPartition and Get-ADDnsZone. The updated release is available on MSDN as version 0.2.0. code.msdn.microsoft.com/dnsshell Basic help is available for each of the new CmdLets. Related posts:DnsShell &#8211; alpha release DnsShell is my PowerShell module intended to help administer MS... DnsShell DnsShell [...]


Related posts:<ol><li><a href='http://www.indented.co.uk/index.php/2010/03/29/dnsshell-alpha/' rel='bookmark' title='Permanent Link: DnsShell &#8211; alpha release'>DnsShell &#8211; alpha release</a> <small>DnsShell is my PowerShell module intended to help administer MS...</small></li>
<li><a href='http://www.indented.co.uk/index.php/dnsshell/' rel='bookmark' title='Permanent Link: DnsShell'>DnsShell</a> <small>DnsShell is a Microsoft DNS administration module for PowerShell 2.0....</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>A new version of DnsShell has been released, this release improves Get-ADDnsRecord and adds Get-ADDnsPartition and Get-ADDnsZone.</p>
<p>The updated release is available on MSDN as version 0.2.0.</p>
<p><a href='http://code.msdn.microsoft.com/dnsshell'>code.msdn.microsoft.com/dnsshell</a></p>
<p>Basic help is available for each of the new CmdLets.</p>


<p>Related posts:<ol><li><a href='http://www.indented.co.uk/index.php/2010/03/29/dnsshell-alpha/' rel='bookmark' title='Permanent Link: DnsShell &#8211; alpha release'>DnsShell &#8211; alpha release</a> <small>DnsShell is my PowerShell module intended to help administer MS...</small></li>
<li><a href='http://www.indented.co.uk/index.php/dnsshell/' rel='bookmark' title='Permanent Link: DnsShell'>DnsShell</a> <small>DnsShell is a Microsoft DNS administration module for PowerShell 2.0....</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.indented.co.uk/index.php/2010/04/14/dnsshell-get-ad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DnsShell &#8211; alpha release</title>
		<link>http://www.indented.co.uk/index.php/2010/03/29/dnsshell-alpha/</link>
		<comments>http://www.indented.co.uk/index.php/2010/03/29/dnsshell-alpha/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 14:47:26 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[DnsShell]]></category>
		<category><![CDATA[Microsoft DNS]]></category>
		<category><![CDATA[PowerShell]]></category>

		<guid isPermaLink="false">http://www.indented.co.uk/?p=1451</guid>
		<description><![CDATA[DnsShell is my PowerShell module intended to help administer MS DNS. This is an alpha relaese, it may contain bugs, it should be tested in a safe environment first. The module is currently available on MSDN. The following CmdLets are implemented at this stage: Get-Dns Clear-DnsCache Get-DnsRecord Get-DnsServer Get-DnsZone New-DnsRecord New-DnsZone Remove-DnsObject Set-DnsRecord Get-ADDnsRecord I [...]


Related posts:<ol><li><a href='http://www.indented.co.uk/index.php/2010/04/16/dnsshell-zone-and-server-cmdlets/' rel='bookmark' title='Permanent Link: DnsShell: Zone and Server CmdLets'>DnsShell: Zone and Server CmdLets</a> <small>After fixing a couple of authentication bugs with Set-DnsRecord and...</small></li>
<li><a href='http://www.indented.co.uk/index.php/2010/04/14/dnsshell-get-ad/' rel='bookmark' title='Permanent Link: DnsShell: Get-AD*'>DnsShell: Get-AD*</a> <small>A new version of DnsShell has been released, this release...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>DnsShell is my PowerShell module intended to help administer MS DNS. This is an alpha relaese, it may contain bugs, it should be tested in a safe environment first.</p>
<p>The module is currently available on <a href='http://code.msdn.microsoft.com/dnsshell'>MSDN</a>.</p>
<p>The following CmdLets are implemented at this stage:</p>
<ul>
<li>Get-Dns</li>
<li>Clear-DnsCache</li>
<li>Get-DnsRecord</li>
<li>Get-DnsServer</li>
<li>Get-DnsZone</li>
<li>New-DnsRecord</li>
<li>New-DnsZone</li>
<li>Remove-DnsObject</li>
<li>Set-DnsRecord</li>
<li>Get-ADDnsRecord</li>
</ul>
<p>I am in the process of writing detailed CmdLet help, it will be made available as soon as possible.</p>


<p>Related posts:<ol><li><a href='http://www.indented.co.uk/index.php/2010/04/16/dnsshell-zone-and-server-cmdlets/' rel='bookmark' title='Permanent Link: DnsShell: Zone and Server CmdLets'>DnsShell: Zone and Server CmdLets</a> <small>After fixing a couple of authentication bugs with Set-DnsRecord and...</small></li>
<li><a href='http://www.indented.co.uk/index.php/2010/04/14/dnsshell-get-ad/' rel='bookmark' title='Permanent Link: DnsShell: Get-AD*'>DnsShell: Get-AD*</a> <small>A new version of DnsShell has been released, this release...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.indented.co.uk/index.php/2010/03/29/dnsshell-alpha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mapping the DNSRecord attribute</title>
		<link>http://www.indented.co.uk/index.php/2009/06/18/mapping-the-dnsrecord-attribute/</link>
		<comments>http://www.indented.co.uk/index.php/2009/06/18/mapping-the-dnsrecord-attribute/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 10:44:16 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Microsoft DNS]]></category>
		<category><![CDATA[dnsRecord]]></category>

		<guid isPermaLink="false">http://www.highorbit.co.uk/?p=1097</guid>
		<description><![CDATA[Microsoft DNS is able to store records in Active Directory when running on a Domain Controller. The information is stored in a Binary Large Object (BLOB) called DNSRecord. No official maps for that attribute appear to have been published. The information below is a result of reverse engineering the contents of the attribute. Michael Smith [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Microsoft DNS is able to store records in Active Directory when running on a Domain Controller. The information is stored in a Binary Large Object (BLOB) called DNSRecord. No official maps for that attribute appear to have been published. The information below is a result of reverse engineering the contents of the attribute.</p>
<p>Michael Smith has a very pretty PowerShell script which uses the structures below, and a few more, to convert the DnsRecord attribute into a human readable format on his blog, <a href='http://theessentialexchange.com/blogs/michael/archive/2009/12/22/getting-the-contents-of-an-active-directory-integrated-dns-zone-version-2.aspx'>Michael&#8217;s meanderings&#8230;</a>.</p>
<p><i>Update 02/02/2010: In December 2009, Microsoft released a (not entirely accurate) protocol specification including details of dnsRecord and dnsProperty: <a href='http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/%5BMS-DNSP%5D.pdf'>MS-DNSP.pdf</a></i><br />
<span id="more-1097"></span></p>
<h3>About the mapped structure</h3>
<p>The map created below for DNSRecord is incomplete, the remaining values seem to defy testing. While the map below is probably accurate I reserve the right to be wrong. Despite that, the structures can be used to manually construct or decode DNSRecords via LDAP rather than using the GUI, dnscmd or WMI. <i>Edit: The map is now complete</i>.</p>
<h3>About DNSRecord</h3>
<p>The dnsRecord attribute appears on dnsNode objects. The dnsRecord attribute is multi-valued. This means that each node can contain more than one record. This is most obvious for the node representing &#8220;same as parent folder&#8221; which will hold the NS records and SOA records as a minimum.</p>
<h3>Structures: DNSRecord</h3>
<p>The DNSRecord attribute is comprised of the fields described in the table below.</p>
<table>
<tr>
<th class="tableleft">Field Name</th>
<th class="tableleft">Length (Bytes)</th>
<th class="tableleft">Format</th>
<th class="tableright">Description</th>
</tr>
<tr>
<td class="tableleft">RData Length</td>
<td class="tableleft">2</td>
<td class="tableleft">Little Endian</td>
<td class="tableright">Length of the Record Data block</td>
</tr>
<tr>
<td class="tableleft">Type</td>
<td class="tableleft">2</td>
<td class="tableleft">Little Endian</td>
<td class="tableright">Record type. Matches published type values on <a href="http://www.iana.org/assignments/dns-parameters">IANA</a></td>
</tr>
<tr>
<td class="tableleft">Unknown (1)</td>
<td class="tableleft">4</td>
<td class="tableleft">N/A</td>
<td class="tableright">Predictable, but unknown.</td>
</tr>
<tr>
<td class="tableleft">UpdatedAtSerial</td>
<td class="tableleft">4</td>
<td class="tableleft">Little Endian</td>
<td class="tableright">Changes to match the serial number in the SOA whenever the record is modified</td>
</tr>
<tr>
<td class="tableleft">TTL</td>
<td class="tableleft">4</td>
<td class="tableleft">Big Endian</td>
<td class="tableright">Time To Live value for the record</td>
</tr>
<tr>
<td class="tableleft">Unknown (2)</td>
<td class="tableleft">4</td>
<td class="tableleft">N/A</td>
<td class="tableright">Always 0</td>
</tr>
<tr>
<td class="tableleft">TimeStamp</td>
<td class="tableleft">4</td>
<td class="tableleft">Little Endian</td>
<td class="tableright">TimeStamp in hours from 01/01/1601 00:00:00</td>
</tr>
<tr>
<td class="tableleft">RData</td>
<td class="tableleft">Variable</td>
<td class="tableleft">Variable</td>
<td class="tableright">The record data, formatting described below</td>
</tr>
</table>
<p>These values produce the following binary array.</p>
<pre class="brush: plain;">
                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                 RDATA LENGTH                  |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                      TYPE                     |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                  UNKNOWN (1)                  |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                 UPDATEDATSERIAL               |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                      TTL                      |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                  UNKNOWN (2)                  |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                   TIMESTAMP                   |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
    /                     RDATA                     /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
</pre>
<p>Unknown 1 is a difficult value to interpret. It may contain several separate fields, however as none appear easy to decipher they were left as a single block in the map. Testing shows that &#8220;unknown 1&#8243; has the following values:</p>
<pre class="brush: plain;">
                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |           5           |     AdvRecordType     |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |           0           |           0           |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
</pre>
<p><i>Edit: The structure of Unknown 1 is as follows.</i></p>
<pre class="brush: plain;">
                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |        VERSION        |     AdvRecordType     |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     FLAGS                     |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
</pre>
<p>Modifying the first byte to any (decimal) value other than 5 will cause the record to vanish from the DNS system. It will remain in the directory, but appears to render it useless. <i>Edit: 5 is the Version number and is a static value.</i></p>
<p>The second byte, termed AdvRecordType, appears to have a number of possible values. Experimentation shows that Root Hints have the value set to decimal 8, out-of-zone records (normally Glue for NS Records) have 128, delegations within a zone have 130 and everything else has 240. A larger data set than I have available is required to draw conclusions other than those.</p>
<p><i>Edit: The values for AdvRecordType, referred to as Rank in the documentation above are represented by this Enumeration.</i></p>
<pre class="brush: csharp;">
public enum RankFlag : uint
{
  // The record came from the cache.
  CacheBit = 1,
  // The record is a preconfigured root hint.
  RootHint = 8,
  // This value is not used.
  OutsideGlue = 32,
  // The record was cached from the additional section of a
  // nonauthoritative response.
  CacheNAAdditional = 49,
  // The record was cached from the authority section of a
  // nonauthoritative response.
  CacheNAAuthority = 65,
  // The record was cached from the additional section of an
  // authoritative response.
  CacheAAdditional = 81,
  // The record was cached from the answer section of a
  // nonauthoritative response.
  CacheNAAnswer = 97,
  // The record was cached from the authority section of an
  // authoritative response.
  CacheAAuthority = 113,
  // The record is a glue record in an authoritative zone.
  Glue = 128,
  // The record is a delegation (type NS) record in an
  // authoritative zone.
  NSGlue = 130,
  // The record was cached from the answer section of an
  // authoritative response.
  CacheAAnswer = 193,
  // The record comes from an authoritative zone.
  Zone = 240
 }
</pre>
<p>The final two bytes appear to be set to 0 in all instances. <i>Edit: Referred to as Flags, the value must be 0.</i></p>
<p><i>Edit: Unknown 2 is reserved for future use and should be set to 0 in all cases.</i></p>
<h3>Structures: RDATA</h3>
<p>Each of the structures below is a minimal representation of the record data, the structures show single-label names. In each case the &#8220;Label Length&#8221; and &#8220;Data&#8221; structures repeat where multiple labels are used, this also applies to &#8220;Responsible Person&#8221; in the SOA record.</p>
<h4>A</h4>
<p>The RDATA block for the A record is a static 4 byte (32 bit) field. Each byte represents an octet in the IP address.</p>
<pre class="brush: plain;">
                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     DATA                      |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
</pre>
<h4>CNAME and NS</h4>
<pre class="brush: plain;">
                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |         LENGTH        |   NUMBER OF LABELS    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |      LABEL LENGTH     |                       |
    |--+--+--+--+--+--+--+--+                       |
    /                     DATA                      /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
</pre>
<h4>MX</h4>
<pre class="brush: plain;">
                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    PRIORITY                   |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |         LENGTH        |   NUMBER OF LABELS    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |      LABEL LENGTH     |                       |
    |--+--+--+--+--+--+--+--+                       |
    /                     DATA                      /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
</pre>
<h4>SOA</h4>
<pre class="brush: plain;">
                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     SERIAL                    |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    REFRESH                    |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     RETRY                     |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    EXPIRE                     |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                  MINIMUM TTL                  |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |         LENGTH        |   NUMBER OF LABELS    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |      LABEL LENGTH     |                       |
    +--+--+--+--+--+--+--+--+                       |
    /                     DATA                      /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |         LENGTH        |   NUMBER OF LABELS    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |      LABEL LENGTH     |                       |
    |--+--+--+--+--+--+--+--+                       |
    /               RESPONSIBLE PERSON              /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
</pre>
<h4>SRV</h4>
<pre class="brush: plain;">
                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    PRIORITY                   |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     WEIGHT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                      PORT                     |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |         LENGTH        |   NUMBER OF LABELS    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |      LABEL LENGTH     |                       |
    |--+--+--+--+--+--+--+--+                       |
    /                     DATA                      /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
</pre>
<h4>TXT</h4>
<pre class="brush: plain;">
                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |      LENGTH           |                       |
    |--+--+--+--+--+--+--+--+                       |
    /                     DATA                      /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
</pre>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.indented.co.uk/index.php/2009/06/18/mapping-the-dnsrecord-attribute/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows 2003 DNS and the Global Query Block List</title>
		<link>http://www.indented.co.uk/index.php/2009/05/21/windows-2003-dns-global-query-block-list/</link>
		<comments>http://www.indented.co.uk/index.php/2009/05/21/windows-2003-dns-global-query-block-list/#comments</comments>
		<pubDate>Thu, 21 May 2009 12:56:56 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Microsoft DNS]]></category>
		<category><![CDATA[Global Query Block List]]></category>

		<guid isPermaLink="false">http://www.highorbit.co.uk/?p=1082</guid>
		<description><![CDATA[The Global Query Block List is a feature of the DNS Service in Windows 2008 discussed on TechNet. However, although it is advertised of as a feature of Windows 2008 DNS it is present in Windows 2003 from DNS version 5.2.3790.4460 and above, released with KB 961063. To enable, disable, or configure the list requires [...]


Related posts:<ol><li><a href='http://www.indented.co.uk/index.php/bookmarks/' rel='bookmark' title='Permanent Link: Bookmarks'>Bookmarks</a> <small>Cisco DNS DNS Best Practices, Network Protections, and Attack Identification...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>The Global Query Block List is a feature of the DNS Service in Windows 2008 discussed on <a href="http://technet.microsoft.com/en-us/library/cc794902.aspx">TechNet</a>.</p>
<p>However, although it is advertised of as a feature of Windows 2008 DNS it is present in Windows 2003 from DNS version 5.2.3790.4460 and above, released with <a href="http://support.microsoft.com/kb/961063">KB 961063</a>.<br />
<span id="more-1082"></span><br />
To enable, disable, or configure the list requires modifications in the Registry for Windows 2003.</p>
<h3>Enabling or Disabling the Global Query Block List</h3>
<table>
<tr>
<td><b>Key</b></td>
<td>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters</td>
</tr>
<tr>
<td><b>Name</b></td>
<td>EnableGlobalQueryBlockList</td>
</tr>
<tr>
<td><b>Type</b></td>
<td>REG_DWORD (DWORD Value)</td>
</tr>
<tr>
<td><b>Data</b></td>
<td>Enable: 1; Disable: 0</td>
</tr>
</table>
<p>The default is disabled.</p>
<h3>Managing the Global Query Block List</h3>
<table>
<tr>
<td><b>Key</b></td>
<td>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters</td>
</tr>
<tr>
<td><b>Name</b></td>
<td>GlobalQueryBlockList</td>
</tr>
<tr>
<td><b>Type</b></td>
<td>REG_MULTI_SZ (Multi-String Value)</td>
</tr>
<tr>
<td><b>Data</b></td>
<td>wpad isatap</td>
</tr>
</table>
<p>Note that wpad and isatap are default values when enabling the block list on Windows 2008, they are included here as an example.</p>
<p>As this is a registry change it should be applied to all other DNS servers for consistent behaviour, it will not replicate automatically.</p>
<h3>When a name is blocked</h3>
<p>If a name is blocked by the Global Query Block List the DNS request for the name will Time Out and Event ID 6268 (see below) will be logged in the DNS Server Event Log.</p>
<pre class="brush: plain;">
Type:     Error
Source:   DNS
Event ID: 6268

The global query block list is a feature that prevents attacks on your
network by blocking DNS queries for specific host names. This feature
has caused the DNS server to fail a query with error code NAME ERROR
for wpad.somedomain.example. even though data for  this DNS name exists
in the DNS database. Other queries in all locally authoritative zones
for other names that begin with labels in the block list will also fail,
but no event will be logged when further queries are blocked until the
DNS server service on this computer is restarted. See product documentation
for information about this feature and instructions on how to configure it.

Below is the current global query block list  (this list may be truncated
in this event if it is too long):
wpad
isatap
</pre>


<p>Related posts:<ol><li><a href='http://www.indented.co.uk/index.php/bookmarks/' rel='bookmark' title='Permanent Link: Bookmarks'>Bookmarks</a> <small>Cisco DNS DNS Best Practices, Network Protections, and Attack Identification...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.indented.co.uk/index.php/2009/05/21/windows-2003-dns-global-query-block-list/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Administering Microsoft DNS in PowerShell</title>
		<link>http://www.indented.co.uk/index.php/2008/12/30/administering-microsoft-dns-in-powershell/</link>
		<comments>http://www.indented.co.uk/index.php/2008/12/30/administering-microsoft-dns-in-powershell/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 12:35:50 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Microsoft DNS]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[VB .NET]]></category>
		<category><![CDATA[wmi]]></category>

		<guid isPermaLink="false">http://www.highorbit.co.uk/?p=636</guid>
		<description><![CDATA[DNS administration in PowerShell, including tasks like creating zones and adding Host (A) records, can be performed using the WMI interface. Full documentation for the interface is available from Microsoft in the DNS WMI Provider Reference. I have released a PowerShell 2.0 module using the WMI provider here. There are a few limitations of the [...]


Related posts:<ol><li><a href='http://www.indented.co.uk/index.php/2010/01/12/powershell-iis-and-log-settings/' rel='bookmark' title='Permanent Link: PowerShell, IIS and log settings'>PowerShell, IIS and log settings</a> <small>A function to retrieve IIS log settings from a local...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>DNS administration in PowerShell, including tasks like creating zones and adding Host (A) records, can be performed using the WMI interface. Full documentation for the interface is available from Microsoft in the <a href="http://msdn.microsoft.com/en-us/library/ms682128(VS.85).aspx">DNS WMI Provider Reference</a>.</p>
<p>I have released a PowerShell 2.0 module using the WMI provider <a href='http://www.indented.co.uk/index.php/dnsshell/'>here</a>.<br />
<span id="more-636"></span><br />
There are a few limitations of the interface. The properties associated with Aging are read-only and cannot be set. Several of the configuration options are not available including the option to enable GlobalNames with Windows Server 2008.</p>
<h3>Common variables</h3>
<p>The examples below use two common variables. Both should be updated to reflect the environment used to execute any command.</p>
<pre class="brush: powershell;">
$ServerName = &quot;dns01&quot;
$ContainerName = &quot;somedomain.example&quot;
</pre>
<h3>Management Class vs Management Object</h3>
<p>Two different classes from the .NET Framework are used below. The ManagementObject, created using Get-WMIObject, and the ManagementClass created using [WMIClass].</p>
<p>[WMIClass] creates the same object as the following example.</p>
<pre class="brush: powershell;">
$Scope = New-Object Management.ManagementScope(&quot;\\$ServerName\root\MicrosoftDNS&quot;)
$Path = New-Object Management.ManagementPath(&quot;MicrosoftDNS_Zone&quot;)
$Options = New-Object Management.ObjectGetOptions($Null, `
  [System.TimeSpan]::MaxValue, $True)

$ZoneClass = New-Object Management.ManagementClass($Scope, $Path, $Options)
</pre>
<p>In general terms, to change something that already exists use the properties and methods of a ManagementObject via Get-WMIObject. To add something new use the methods associated with a ManagementClass.</p>
<h4>Creating an instance of a Management Object</h4>
<pre class="brush: powershell;">
$Zones = Get-WMIObject -Computer $ServerName `
  -Namespace &quot;root\MicrosoftDNS&quot; -Class &quot;MicrosoftDNS_Zone&quot;
</pre>
<h4>Exploring the Management Object</h4>
<p>Showing the object type:</p>
<pre class="brush: plain;">
PS C:\Stuff\Scripts\PowerShell&gt; $Zones.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array
</pre>
<p>Showing the properties and methods:</p>
<pre class="brush: plain;">
PS C:\Stuff\Scripts\PowerShell&gt; $Zones | Get-Member

   TypeName: System.Management.ManagementObject#rootMicrosoftDNSMicrosoftDNS_Zone

Name                      MemberType   Definition
----                      ----------   ----------
AgeAllRecords             Method       Management.ManagementBaseObject AgeAllRec...
ChangeZoneType            Method       Management.ManagementBaseObject ChangeZon...
ForceRefresh              Method       Management.ManagementBaseObject ForceRefr...
GetDistinguishedName      Method       Management.ManagementBaseObject GetDistin...
PauseZone                 Method       Management.ManagementBaseObject PauseZone()
ReloadZone                Method       Management.ManagementBaseObject ReloadZone()
ResetSecondaries          Method       Management.ManagementBaseObject ResetSeco...
ResumeZone                Method       Management.ManagementBaseObject ResumeZone()
UpdateFromDS              Method       Management.ManagementBaseObject UpdateFro...
WriteBackZone              Method       Management.ManagementBaseObject WriteBack...
Aging                     Property     Boolean Aging {get;set;}
AllowUpdate               Property     UInt32 AllowUpdate {get;set;}
AutoCreated               Property     Boolean AutoCreated {get;set;}
AvailForScavengeTime       Property     UInt32 AvailForScavengeTime {get;set;}
Caption                   Property     String Caption {get;set;}
ContainerName             Property     String ContainerName {get;set;}
DataFile                  Property     String DataFile {get;set;}
Description               Property     String Description {get;set;}
DisableWINSRecordReplicat Property     Boolean DisableWINSRecordReplication {ge...
DnsServerName             Property     String DnsServerName {get;set;}
DsIntegrated              Property     Boolean DsIntegrated {get;set;}
ForwarderSlave            Property     Boolean ForwarderSlave {get;set;}
ForwarderTimeout          Property     UInt32 ForwarderTimeout {get;set;}
InstallDate               Property     String InstallDate {get;set;}
LastSuccessfulSoaCheck    Property     UInt32 LastSuccessfulSoaCheck {get;set;}
LastSuccessfulXfr         Property     UInt32 LastSuccessfulXfr {get;set;}
LocalMasterServers        Property     String[] LocalMasterServers {get;set;}
MasterServers             Property     String[] MasterServers {get;set;}
Name                      Property     String Name {get;set;}
NoRefreshInterval         Property     UInt32 NoRefreshInterval {get;set;}
Notify                    Property     UInt32 Notify {get;set;}
NotifyServers             Property     String[] NotifyServers {get;set;}
Paused                    Property     Boolean Paused {get;set;}
RefreshInterval           Property     UInt32 RefreshInterval {get;set;}
Reverse                   Property     Boolean Reverse {get;set;}
ScavengeServers           Property     String[] ScavengeServers {get;set;}
SecondaryServers          Property     String[] SecondaryServers {get;set;}
SecureSecondaries         Property     UInt32 SecureSecondaries {get;set;}
Shutdown                  Property     Boolean Shutdown {get;set;}
Status                    Property     String Status {get;set;}
UseNBStat                 Property     Boolean UseNBStat {get;set;}
UseWins                   Property     Boolean UseWins {get;set;}
ZoneType                  Property     UInt32 ZoneType {get;set;}
...
</pre>
<p>Showing a subset of the properties within the object:</p>
<pre class="brush: plain;">
PS C:\Stuff\Scripts\PowerShell&gt; $Zones | Select-Object Name,DsIntegrated,ZoneType,Reverse

Name                            DsIntegrated            ZoneType             Reverse
----                            ------------            --------             -------
1.2.3.in-addr.arpa                     False                   1                True
1.2.4.in-addr.arpa                     False                   1                True
1.2.5.in-addr.arpa                     False                   1                True
</pre>
<h4>Creating an instance of a Management Class</h4>
<pre class="brush: powershell;">
$ZoneClass = [WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_Zone&quot;
</pre>
<h4>Exploring the Management Class</h4>
<p>Showing the object type:</p>
<pre class="brush: plain;">
PS C:\Stuff\Scripts\PowerShell&gt; $ZoneClass.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     ManagementClass                          System.Management.ManagementObject
</pre>
<p>Showing the properties and methods:</p>
<pre class="brush: plain;">
PS C:\Stuff\Scripts\PowerShell&gt; $ZoneClass | Get-Member

   TypeName: System.Management.ManagementClass#ROOTMicrosoftDNSMicrosoftDNS_Zone

Name                   MemberType    Definition
----                   ----------    ----------
Name                   AliasProperty Name = __Class
CreateZone             Method        System.Management.ManagementBaseObject CreateZone(Sys...
...
</pre>
<h4>Listing the parameters required for a method</h4>
<p>The output above truncates the strings detailing the parameters used for each method. The following shows how the full list can be displayed.</p>
<pre class="brush: powershell;">
([WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_AType&quot;) | `
  Get-Member -Name CreateInstanceFromPropertyData | Format-List
</pre>
<p>Note that while this shows the parameter type it does not show whether or not the parameter is required or optional. For full details refer to the <a href="http://msdn.microsoft.com/en-us/library/ms682128(VS.85).aspx">DNS WMI Provider Reference</a>.</p>
<h3>Creating Zones</h3>
<p>The following values represent the Zone Types available with Microsoft DNS.</p>
<pre class="brush: plain;">
0 Primary zone
1 Secondary zone
2 Stub zone
 * Windows Server 2003:  This zone type is introduced in Windows Server 2003.
3 Zone forwarder
 * Windows Server 2003:  This zone type is introduced in Windows Server 2003.
</pre>
<h4>Create a Forward  or Reverse Lookup Zone</h4>
<p>This example shows all of the possible parameters, this can be reduced to a single line by dropping the comments and use of variables. Note that any optional variable can be set to $Null or &#8220;&#8221;.</p>
<pre class="brush: powershell;">
# Forward Lookup zone name (example)
$Name = &quot;somedomain.example&quot;
# Reverse Lookup zone name (example for 1.2.3.x Subnet)
$Name = &quot;3.2.1.in-addr.arpa&quot;
# See above
$Type = 0
# AD Integration (only valid on Active Directory Domain Controllers)
$IsDSIntegrated = $False
# FileName (Optional and only valid for zones with AD integrated set to $False)
# File must exist if specified and have size greater than 0b.
$Filename = $Null
# Master IP (Optional and only valid for Secondary, Stub and Forwarder zones)
$MasterIP = $Null
# AdminEmail (Optional and only valid for Primary zones, writes into SOA record)
$AdminEmail = $Null

$NewZone = ([WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_Zone&quot;).CreateZone( `
  $Name, $Type, $IsDSIntegrated, $FileName, $MasterIP, $AdminEmail)
</pre>
<h4>Examples</h4>
<pre class="brush: powershell;">
# New Standard Primary Forward Lookup Zone
$NewZone = ([WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_Zone&quot;).CreateZone( `
  &quot;standardprimary.example&quot;, 0, $False)
# New Standard Primary Forward Lookup Zone using existing zone file
$NewZone = ([WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_Zone&quot;).CreateZone( `
  &quot;standardprimary-existing.example&quot;, 0, $False, &quot;standardprimary-existing.example.dns&quot;)
# New Active Directory Integrated Forward Lookup Zone
$NewZone = ([WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_Zone&quot;).CreateZone( `
  &quot;adprimary.example&quot;, 0, $True)
# New Standard Primary Reverse Lookup Zone
$NewZone = ([WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_Zone&quot;).CreateZone( `
  &quot;1.168.192.in-addr.arpa&quot;, 0)
# New Active Directory Integrated Reverse Lookup Zone
$NewZone = ([WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_Zone&quot;).CreateZone( `
  &quot;2.168.192.in-addr.arpa&quot;, 0, $True)
# New Secondary Forward Lookup Zone
$NewZone = ([WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_Zone&quot;).CreateZone( `
  &quot;standardsecondary.example&quot;, 1, $False, &quot;&quot;, `
  @(&quot;192.168.0.1&quot;, &quot;192.168.0.2&quot;))
# New Stub Zone
$NewZone = ([WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_Zone&quot;).CreateZone( `
  &quot;stub.example&quot;, 2, $False, &quot;&quot;, @(&quot;192.168.0.1&quot;, &quot;192.168.0.2&quot;))
# New Conditional Forwarder
$NewZone = ([WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_Zone&quot;).CreateZone( `
  &quot;conditionalforwarder.example&quot;, 3, $False, &quot;&quot;, @(&quot;192.168.0.1&quot;, &quot;192.168.0.2&quot;))
# New AD Integrated Conditional Forwarder
$NewZone = ([WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_Zone&quot;).CreateZone( `
  &quot;adconditionalforwarder.example&quot;, 3, $True, &quot;&quot;, @(&quot;192.168.0.1&quot;, &quot;192.168.0.2&quot;))
</pre>
<h3>Creating resource records with CreateInstanceFromPropertyData</h3>
<p>CreateInstanceFromPropertyData is available on each individual record class. For example, the method can be invoked from MicrosoftDNS_AType, or MicrosoftDNS_MXType, and so on. Note that the syntax for the method varies slightly depending on the record type.</p>
<h4>Create an A record</h4>
<pre class="brush: powershell;">
# Record Name (Owner Name). Should include full suffix to prevent the method
# throwing an error.
$OwnerName = &quot;www.$ContainerName&quot;
# Class, as in IN, CS, CH or HS. Normally only care about IN (Internet: 1) which
# is the default. (Optional)
$RecordClass = $Null
# Time To Live in seconds (Optional)
$TTL = $Null
# IP Address is required
$IPAddress = &quot;1.2.3.4&quot;

$NewATypeClass = [WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_AType&quot;
$NewARecord = $NewATypeClass.CreateInstanceFromPropertyData( `
  $ServerName, $ContainerName, $OwnerName, $RecordClass, $TTL, $IPAddress)
</pre>
<h4>Create an MX record</h4>
<pre class="brush: powershell;">
# Record Name (Owner Name). Normally the SMTP domain, in this case it matches
# ContainerName.
$OwnerName = $ContainerName
$RecordClass = $Null
$TTL = $Null
# Preference, numeric value used to determine the preferred server(s)
$Preference = 10
# The server used to handle the mail
$MailExchange = &quot;mail.somedomain.example&quot;

$NewMXTypeClass = [WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_MXType&quot;
$NewMXRecord = $NewMXTypeClass.CreateInstanceFromPropertyData( `
  $ServerName, $ContainerName, $OwnerName, $RecordClass, $TTL, $Preference, $MailExchange)
</pre>
<h3>Creating resource records with CreateInstanceFromTextRepresentation</h3>
<p>CreateInstanceFromTextRepresentation is available from the MicrosoftDNS_ResourceRecord class. It takes fewer parameters than the previous method but ultimately requires exactly the same information.</p>
<h4>Create an NS record</h4>
<pre class="brush: powershell;">
# The text version of the record. Must include Class (IN) or this will fail.
# @ represents the origin, or zone / domain name.
$TextRepresentation = &quot;@ IN NS ns1.somedomain.net&quot;

$NewRRClass = [WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_ResourceRecord&quot;
$NewRR = $NewRRClass.CreateInstanceFromTextRepresentation( `
  $ServerName, $ContainerName, $TextRepresentation)
</pre>
<h4>Create a TXT record</h4>
<pre class="brush: powershell;">
# Using @ with the TXT record here will cause an error when executing the method.
# Instead, this uses the $ContainerName variable.
# Unlike the zone file itself the method does not require a terminating
# period following each name.
$TextRepresentation = &quot;$ContainerName IN TXT `&quot;hello world`&quot;&quot;

$NewRRClass = [WMIClass]&quot;\\$ServerName\root\MicrosoftDNS:MicrosoftDNS_ResourceRecord&quot;
$NewRR = $NewRRClass.CreateInstanceFromTextRepresentation( `
  $ServerName, $ContainerName, $TextRepresentation)
</pre>
<h3>Update server data file</h3>
<p>DNS zones are held in memory, any change to the zone is performed in memory rather than as a direct alteration of the zone file. The following method can be used to force the updated zone to write back to the file.</p>
<pre class="brush: powershell;">
(Get-WMIObject -Computer $ServerName `
  -Namespace &quot;root\MicrosoftDNS&quot; -Class &quot;MicrosoftDNS_Zone&quot; `
  -Filter &quot;ContainerName='$ContainerName'&quot;).WriteBackZone()
</pre>
<h3>Reload a zone</h3>
<p>Changes made to the zone file can be loaded into memory immediately using the ReloadZone method.</p>
<pre class="brush: powershell;">
(Get-WMIObject -Computer $ServerName `
  -Namespace &quot;root\MicrosoftDNS&quot; -Class &quot;MicrosoftDNS_Zone&quot; `
  -Filter &quot;ContainerName='$ContainerName'&quot;).ReloadZone()
</pre>
<h3>Enabling and starting scavenging on a server</h3>
<p>Enabling scavenging requires setting the ScavengingInterval property to a non-zero value. The value representing the interval uses Hours.</p>
<pre class="brush: powershell;">
# Connecting to the Server Management Object
$Server = Get-WMIObject -Computer $ServerName `
  -Namespace &quot;root\MicrosoftDNS&quot; -Class &quot;MicrosoftDNS_Server&quot;
# Setting a new Scavenging Interval
$Server.ScavengingInterval = 24
$Server.Put()
# Start Scavenging
$Server.StartScavenging()
</pre>
<h3>Clear the cache</h3>
<p>Any cached entries on a server can be cleared using the ClearCache method of the MicrosoftDNS_Cache class.</p>
<pre class="brush: powershell;">
(Get-WMIObject -Computer $ServerName `
  -Namespace &quot;root\MicrosoftDNS&quot; -Class &quot;MicrosoftDNS_Cache&quot;).ClearCache()
</pre>
<h3>Displaying the DNS server statistics</h3>
<p>Each DNS server holds a variety of statistics that can help to evaluate server performance.</p>
<pre class="brush: powershell;">
Get-WMIObject -Computer $ServerName `
  -Namespace &quot;root\MicrosoftDNS&quot; -Class &quot;MicrosoftDNS_Statistic&quot; | `
    Select-Object Name, StringValue, Value
</pre>


<p>Related posts:<ol><li><a href='http://www.indented.co.uk/index.php/2010/01/12/powershell-iis-and-log-settings/' rel='bookmark' title='Permanent Link: PowerShell, IIS and log settings'>PowerShell, IIS and log settings</a> <small>A function to retrieve IIS log settings from a local...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.indented.co.uk/index.php/2008/12/30/administering-microsoft-dns-in-powershell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Modifying DNS records with WMI</title>
		<link>http://www.indented.co.uk/index.php/2008/10/23/modifying-dns-records-with-wmi/</link>
		<comments>http://www.indented.co.uk/index.php/2008/10/23/modifying-dns-records-with-wmi/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 11:40:19 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Microsoft DNS]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[VbScript]]></category>
		<category><![CDATA[vbs]]></category>
		<category><![CDATA[wmi]]></category>

		<guid isPermaLink="false">http://www.highorbit.co.uk/?p=252</guid>
		<description><![CDATA[Using WMI it is possible to modify any existing record hosted on a Microsoft DNS Server. The method used varies slightly depending on which record type we want to change. References for each version of the Modify method can be found in the DNS WMI Provider Reference. These are the most common: A Type CNAME [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Using WMI it is possible to modify any existing record hosted on a Microsoft DNS Server. The method used varies slightly depending on which record type we want to change.<br />
<span id="more-252"></span><br />
References for each version of the Modify method can be found in the <a href="http://msdn.microsoft.com/en-us/library/ms682128(VS.85).aspx">DNS WMI Provider Reference</a>. These are the most common:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/ms682181(VS.85).aspx">A Type</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms682669(VS.85).aspx">CNAME Type</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms682703(VS.85).aspx">MX Type</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms682706(VS.85).aspx">NS Type</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms682712(VS.85).aspx">PTR Type</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms682738(VS.85).aspx">SRV Type</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms682744(VS.85).aspx">TXT Type</a></li>
</ul>
<p>The examples below show modification of Host or A records, but it is possible to extend the example to use any of the types above.</p>
<h3>Using VbScript to modify records</h3>
<p>This example demonstrates the use of WMI in VbScript to modify a record. The first value for Modify is the TTL, by using objItem.TTL we just reinsert the existing value, only changing the IP address.</p>
<pre class="brush: vb;">
' Connect to the WMI Service
Set objWMIService = GetObject(&quot;winmgmts:\\dc01\root\MicrosoftDNS&quot;)
' Run a query to get the record we want to change
Set colItems = objWMIService.ExecQuery(&quot;SELECT * FROM MicrosoftDNS_AType&quot; &amp; _
  &quot; WHERE ContainerName='thezone.net' AND OwnerName='test.thezone.net'&quot;,,48)

' Loop through the results
For Each objItem in colItems
  ' Modify the record
  objItem.Modify objItem.TTL, &quot;1.2.3.4&quot;
Next
</pre>
<p>If the TTL must be changed it is important to exclude the IP Address parameter, failure to do so will result in the record being deleted. Any attempt to use Modify without making any changes will result in a &#8220;SWbemObjectEx: Generic failure&#8221; exception.</p>
<h3>Using PowerShell to modify records</h3>
<p>The same failure reasons and restrictions apply with PowerShell (including the obscure deletion). Otherwise changing the record can be performed like this.</p>
<pre class="brush: powershell;">
$ServerName = &quot;dns01&quot;
$ContainerName = &quot;somedomain.example&quot;
$RecordName = &quot;test.somedomain.example&quot;

$Record = Get-WMIObject -Computer $ServerName `
  -Namespace &quot;root\MicrosoftDNS&quot; -Class &quot;MicrosoftDNS_AType&quot; `
  -Filter &quot;ContainerName='$ContainerName' AND OwnerName='$RecordName'&quot;
# Using the existing TTL value (in seconds)
$ModifiedRecord = $Record.Modify($Record.TTL, &quot;2.3.4.5&quot;)
</pre>
<p>In both VbScript and PowerShell the method call returns an object representing the updated record if further processing is required.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.indented.co.uk/index.php/2008/10/23/modifying-dns-records-with-wmi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zones for single hosts with Microsoft DNS</title>
		<link>http://www.indented.co.uk/index.php/2008/10/23/zones-for-single-hosts/</link>
		<comments>http://www.indented.co.uk/index.php/2008/10/23/zones-for-single-hosts/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 09:18:42 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Microsoft DNS]]></category>
		<category><![CDATA[host exceptions]]></category>

		<guid isPermaLink="false">http://www.highorbit.co.uk/?p=459</guid>
		<description><![CDATA[Taking advantage of the fact that DNS will always respond with an authoritative answer if it has one allows exceptions for single hosts. In essence, using DNS as a centralised hosts file. This is a usage scenario: Using a private AD domain. e.g. internal.highorbit.co.uk Hosting a public web server within the AD domain. e.g. www.highorbit.co.uk [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Taking advantage of the fact that DNS will always respond with an authoritative answer if it has one allows exceptions for single hosts. In essence, using DNS as a centralised hosts file.<br />
<span id="more-459"></span><br />
This is a usage scenario:</p>
<ol>
<li>Using a private AD domain. e.g. internal.highorbit.co.uk</li>
<li>Hosting a public web server within the AD domain. e.g. www.highorbit.co.uk</li>
<li>Internal clients cannot access the server using the public IP (a routing restriction)</li>
</ol>
<p>At this point DNS can be used in two ways to address the issue.</p>
<p>Either claim authority for the entire domain, e.g. highorbit.co.uk. The disadvantage of this is that every other record under the domain must be duplicated in the private version (Split Brain DNS) or it will fail to resolve. For example, attempting to access portal.highorbit.co.uk would fail unless it was also added.</p>
<p>Or, a zone can be created using the full name of the service, i.e. naming the zone www.highorbit.co.uk. Adding a Host (A) record to the zone with a blank name will allow the zone name to resolve to an IP address, in exactly the same way as names other domains are resolved.</p>
<p>The full step of steps for this is as follows:</p>
<ol>
<li>Open the DNS Console (from Administrative Tools)</li>
<li>Expand Forward Lookup Zones</li>
<li>Create a new zone</li>
<li>Type is either (Standard) Primary or Primary and Active Directory Integrated</li>
<li>Replication Scope can remain default (if applicable)</li>
<li>Zone Name should be the name of the host, e.g. www.highorbit.co.uk</li>
<li>Select &#8220;Do not allow dynamic updates&#8221;</li>
<li>Finish</li>
</ol>
<p>Then add a record so the name resolves back to an IP:</p>
<ol>
<li>Select the new zone (e.g. www.highorbit.co.uk)</li>
<li>Right click and select &#8220;New Host (A)&#8230;&#8221;</li>
<li>Leave the Name Blank</li>
<li>Enter the IP Address</li>
</ol>
<p>Note that an Alias, or CNAME, cannot be used. CNAME records cannot share resource names. In this case the resource name is www.highorbit.co.uk and is currently shared with NS records and the SOA record because it is being treated as a domain.</p>
<p>Finally, the change can be tested by running these commands:</p>
<pre class="brush: plain;">
nslookup www.highorbit.co.uk
ipconfig /flushdns
ping www.highorbit.co.uk
</pre>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.indented.co.uk/index.php/2008/10/23/zones-for-single-hosts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft DNS &amp; stale records</title>
		<link>http://www.indented.co.uk/index.php/2008/10/10/microsoft-dns-stale-records/</link>
		<comments>http://www.indented.co.uk/index.php/2008/10/10/microsoft-dns-stale-records/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 11:18:56 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Microsoft DNS]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[VbScript]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[reporting]]></category>
		<category><![CDATA[Stale Records]]></category>
		<category><![CDATA[vbs]]></category>
		<category><![CDATA[Windows 2003]]></category>
		<category><![CDATA[wmi]]></category>

		<guid isPermaLink="false">http://www.highorbit.co.uk/?p=199</guid>
		<description><![CDATA[This post explains how to identify and report on stale records in a dynamically updated Microsoft DNS zone. The time stamp taken from a DNS record represents the numbers of hours since 01/01/1601 00:00. The value can be converted into a useful date within a script. By default, all times are reported and tested in [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>This post explains how to identify and report on stale records in a dynamically updated Microsoft DNS zone.<br />
<span id="more-199"></span><br />
The time stamp taken from a DNS record represents the numbers of hours since 01/01/1601 00:00. The value can be converted into a useful date within a script. By default, all times are reported and tested in UTC.</p>
<p>A stale record is a record where both the No-Refresh Interval and Refresh Interval have passed without the time stamp updating. Ordinarily stale records would be removed by a Scavenging process. These scripts may be useful if trying to asses the impact of enabling Scavenging or reducing Aging intervals.</p>
<h3>Listing stale records with VbScript</h3>
<p>This script uses a WMI query to return all A records for a domain, then it sorts through each record, echoing when the time stamp is older than our pre-defined maximum age. The script will work best when run with cscript.</p>
<pre class="brush: vb;">
' No-Refresh + Refresh (in Days)
Const MAXIMUM_AGE = 4

' Connect to the MicrosoftDNS Namespace
Set objWMIService = _
  GetObject(&quot;winmgmts:\\dc01.internal.highorbit.co.uk\root\MicrosoftDNS&quot;)

' Query A records with MicrosoftDNS_AType class where the record is not static
Set colItems = objWMIService.ExecQuery(&quot;SELECT * FROM MicrosoftDNS_AType &quot; &amp;_
  &quot; WHERE ContainerName='internal.highorbit.co.uk' AND TimeStamp&lt;&gt;0&quot;)

For Each objItem In colItems
  ' Convert the timestamp into a date and time
  dtmTimeStamp = DateAdd(&quot;h&quot;, objItem.TimeStamp, &quot;01/01/1601 00:00:00&quot;)
  ' Compare the date and time with MAXIMUM_AGE
  If dtmTimeStamp &lt;= (Date() - MAXIMUM_AGE) Then
    ' Echo the record details if it is older than the MAXIMUM_AGE
    WScript.Echo objItem.OwnerName &amp; VbTab &amp; objItem.IPAddress &amp;_
      VbTab &amp; dtmTimeStamp
  End If
Next
</pre>
<h3>Listing stale records with PowerShell</h3>
<p>This snippet uses Get-WMIObject and a improved query to return only stale records rather than sorting after returning all dynamic records.</p>
<p>A timespan value is generated to represent the minimum value of TimeStamp for valid records.</p>
<pre class="brush: powershell;">
# No-Refresh + Refresh (in Days)
$TotalAgingInterval = 4

$ServerName = &quot;dc01.internal.highorbit.co.uk&quot;
$ContainerName = &quot;internal.highorbit.co.uk&quot;

$MinTimeStamp = [Int](New-TimeSpan `
  -Start $(Get-Date(&quot;01/01/1601 00:00&quot;)) `
  -End $((Get-Date).AddDays(-$TotalAgingInterval))).TotalHours

Get-WMIObject -Computer $ServerName `
  -Namespace &quot;root\MicrosoftDNS&quot; -Class &quot;MicrosoftDNS_AType&quot; `
  -Filter `
  &quot;ContainerName='$ContainerName' AND TimeStamp&lt;$MinTimeStamp AND TimeStamp&lt;&gt;0&quot; `
 | Select-Object OwnerName, `
  @{n=&quot;TimeStamp&quot;;e={(Get-Date(&quot;01/01/1601&quot;)).AddHours($_.TimeStamp)}}
</pre>
<h3>Reading Aging intervals with PowerShell</h3>
<p>The Aging intervals and the date the zone can be scavenged set on a zone can be read using WMI using the MicrosoftDNS_Zone class. As with the TimeStamp the .AddHours method must be used to return a date.</p>
<pre class="brush: powershell;">
$ServerName = &quot;dc01.internal.highorbit.co.uk&quot;
$ContainerName = &quot;internal.highorbit.co.uk&quot;

Get-WMIObject -Computer $ServerName `
  -Namespace &quot;root\MicrosoftDNS&quot; -Class &quot;MicrosoftDNS_Zone&quot; `
  -Filter &quot;ContainerName='$ContainerName'&quot; `
 | Select-Object NoRefreshInterval, RefreshInterval, `
  @{n=&quot;AvailForScavengeTime&quot;;e={
    (Get-Date(&quot;01/01/1601&quot;)).AddHours($_.AvailForScavengeTime)}}
</pre>
<h3>Localisation</h3>
<p>As mentioned at the beginning of this post, all times are reported in UTC by default. By calling a the ToLocalTime method the date returned can be converted to local time, using the time zone configured on the system executing the query.</p>
<pre class="brush: powershell;">
$ServerName = &quot;dc01.internal.highorbit.co.uk&quot;
$ContainerName = &quot;internal.highorbit.co.uk&quot;

$MinTimeStamp = [Int](New-TimeSpan `
  -Start $(Get-Date(&quot;01/01/1601 00:00&quot;)) `
  -End $((Get-Date).AddDays(-$TotalAgingInterval))).TotalHours

Get-WMIObject -Computer $ServerName `
  -Namespace &quot;root\MicrosoftDNS&quot; -Class &quot;MicrosoftDNS_AType&quot; `
  -Filter `
  &quot;ContainerName='$ContainerName' AND TimeStamp&lt;$MinTimeStamp AND TimeStamp&lt;&gt;0&quot; `
 | Select-Object OwnerName, `
  @{n=&quot;TimeStamp&quot;;e={
    ((Get-Date(&quot;01/01/1601&quot;)).AddHours($_.TimeStamp)).ToLocalTime()}}
</pre>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.indented.co.uk/index.php/2008/10/10/microsoft-dns-stale-records/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft DNS &amp; static records</title>
		<link>http://www.indented.co.uk/index.php/2008/10/02/microsoft-dns-static-records/</link>
		<comments>http://www.indented.co.uk/index.php/2008/10/02/microsoft-dns-static-records/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 11:59:32 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Microsoft DNS]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[VbScript]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[reporting]]></category>
		<category><![CDATA[vbs]]></category>
		<category><![CDATA[Windows 2003]]></category>
		<category><![CDATA[wmi]]></category>
		<category><![CDATA[wmic]]></category>

		<guid isPermaLink="false">http://www.highorbit.co.uk/?p=28</guid>
		<description><![CDATA[Windows 2008 has an improved user interface for DNS. The main console includes details of a records time stamp and whether or not the record is Static. Life isn&#8217;t quite so easy with Windows 2003. However, as each static record has a time stamp set to 0 they can be found with a little work. [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Windows 2008 has an improved user interface for DNS. The main console includes details of a records time stamp and whether or not the record is Static. Life isn&#8217;t quite so easy with Windows 2003. However, as each static record has a time stamp set to 0 they can be found with a little work.<br />
<span id="more-28"></span><br />
When using an Active Directory Integrated zone records are stored within Active Directory as dnsNode objects. The Time Stamp value is encoded along with the rest of the record properties (TTL, etc) in the dnsRecord attribute on the dnsNode. The attribute is a Binary Large Object (BLOB), Microsoft do not currently publish references or maps for these attributes. WMI queries can be used as an alternative.</p>
<h3>The DNS management console</h3>
<p>To see the current time stamp, and whether a record is dynamic or not first enable View / Advanced in the DNS console. For each record that makes an additional tick box and text box visible.</p>
<p>The record below is dynamic, if the box is not ticked, and the time stamp field is blank the record is static. That means that unticking the box stating the record can be scavenged changes the record to static.</p>
<p><a href="http://69.164.211.174/wp-content/uploads/2008/10/dynamicrecord.jpg"><img class="aligncenter size-medium wp-image-52" title="Dynamic Record" src="http://www.highorbit.co.uk/wp-content/uploads/2008/10/dynamicrecord-270x300.jpg" alt="" width="270" height="300" /></a></p>
<h3>DNSCMD</h3>
<p>DNSCMD installs along with the Windows Support Tools. It can be used to identify static records, although it can be very difficult pulling the results out of a list like this.</p>
<p><em>For example:</em></p>
<pre class="brush: plain;">
dnscmd /ZonePrint somedomain.example
</pre>
<h3>WMIC</h3>
<p>WMIC, Windows Management Instrumentation Command-Line, will install the first time it is run. As the name suggests, it allows execution of WMI queries on the command line.</p>
<pre class="brush: plain;">
WMIC /NAMESPACE:&quot;\\root\MicrosoftDNS&quot; PATH &quot;MicrosoftDNS_AType&quot; WHERE &quot;ContainerName='somedomain.example’ AND TimeStamp=0&quot; GET &quot;OwnerName,TTL,TimeStamp&quot;
</pre>
<p>Or</p>
<pre class="brush: plain;">
WMIC /NAMESPACE:&quot;\\root\MicrosoftDNS&quot; PATH &quot;MicrosoftDNS_AType&quot; WHERE &quot;TimeStamp=0&quot; GET &quot;OwnerName,TTL,TimeStamp&quot;
</pre>
<h3>VbScript</h3>
<p>This VbScript snippet echoes each static record, it is works best when run with cscript.</p>
<pre class="brush: vb;">
strServerName = &quot;dc01.somedomain.example&quot;
strContainerName = &quot;somedomain.example&quot;

Set objWMIService = GetObject(&quot;winmgmts:\\&quot; &amp; strServerName &amp; _
  &quot;\root\MicrosoftDNS&quot;)
Set colItems = objWMIService.ExecQuery(&quot;SELECT * FROM MicrosoftDNS_AType &quot; &amp;_
  &quot; WHERE ContainerName='&quot; &amp; strContainerName &amp; &quot;' AND TimeStamp=0&quot;)

For Each objItem In colItems
  WScript.Echo objItem.OwnerName &amp; VbTab &amp; objItem.IPAddress &amp; VbTab &amp; &quot;Static&quot;
Next

Set colItems = Nothing
Set objWMIService = Nothing
</pre>
<h3>PowerShell</h3>
<pre class="brush: powershell;">
$ServerName = &quot;dc01.somedomain.example&quot;
$ContainerName = &quot;somedomain.example&quot;

Get-WMIObject -Computer $ServerName `
    -Namespace &quot;root\MicrosoftDNS&quot; -Class &quot;MicrosoftDNS_AType&quot; `
    -Filter &quot;ContainerName='$ContainerName' AND TimeStamp=0&quot; `
  | Select-Object OwnerName,TTL, @{n=&quot;TimeStamp&quot;;e={&quot;Static&quot;}}
</pre>
<p>The same search can be used for any record type, by changing the WMI class. The options most likely to be useful are:</p>
<ul>
<li>MicrosoftDNS_AType &#8211; Address or Host records</li>
<li>MicrosoftDNS_CNAMEType &#8211; Alias records</li>
<li>MicrosoftDNS_MXType &#8211; Mail Exchanger records</li>
<li>MicrosoftDNS_NSType &#8211; Name Server records</li>
<li>MicrosoftDNS_SRVType &#8211; Service records</li>
<li>MicrosoftDNS_PTRType &#8211; Pointer records (Reverse Lookup zone)</li>
</ul>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.indented.co.uk/index.php/2008/10/02/microsoft-dns-static-records/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
