{"id":4359,"date":"2013-01-07T00:01:00","date_gmt":"2013-01-07T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2013\/01\/07\/use-powershell-to-troubleshoot-client-dns\/"},"modified":"2013-01-07T00:01:00","modified_gmt":"2013-01-07T00:01:00","slug":"use-powershell-to-troubleshoot-client-dns","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/use-powershell-to-troubleshoot-client-dns\/","title":{"rendered":"Use PowerShell to Troubleshoot Client DNS"},"content":{"rendered":"<p><strong>Summary:<\/strong> Microsoft Scripting Guy, Ed Wilson, talks about using Windows PowerShell to troubleshoot client DNS.\nMicrosoft Scripting Guy, Ed Wilson, is here. It seems that when I travel invariably at some point on the trip I end up in a hotel that has DNS issues.\nIn the past, that meant opening up the CMD prompt and typing a bunch of cryptic commands. Not anymore.&nbsp;On my Windows&nbsp;8 laptop (and even on my Windows Surface&nbsp;RT), I can use functions from the dnsclient module to do my troubleshooting.\nOf course, with Windows PowerShell&nbsp;3.0 (which comes on Windows&nbsp;8, Windows Surface, and Windows Server&nbsp;2012) knowing what module contains what function (or cmdlet) is not required.<\/p>\n<h2>Viewing the DNS client settings<\/h2>\n<p>If I am experiencing connectivity issues, and I suspect a DNS issue, one of the first things I do is check to see what DNS server my device uses. To find this information, I use the <strong>Get-DNSClient<\/strong> function. This command is shown here.<\/p>\n<p style=\"padding-left: 30px\">19:09 C:&gt; Get-DnsClient<\/p>\n<p style=\"padding-left: 30px\">&nbsp;InterfaceAlias&nbsp;&nbsp;&nbsp;&nbsp; Interface ConnectionSpecificSuffix ConnectionSpecificSuffixSearchList<\/p>\n<p style=\"padding-left: 30px\">&#8212;&#8212;&#8212;&#8212;&#8211;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p style=\"padding-left: 30px\">Local Area Connection* 14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {}<\/p>\n<p style=\"padding-left: 30px\">vEthernet (WirelessSwitch)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 31 owv.atl.wayport.net&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {}<\/p>\n<p style=\"padding-left: 30px\">isatap.owv.atl.wayport.net&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 44 owv.atl.wayport.net&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {}<\/p>\n<p style=\"padding-left: 30px\">Local Area Connection* 12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {}<\/p>\n<p style=\"padding-left: 30px\">vEthernet (InternalSwitch)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {}<\/p>\n<p style=\"padding-left: 30px\">isatap.{FC2087E9-6988-45E&#8230;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {}<\/p>\n<p style=\"padding-left: 30px\">Loopback Pseudo-Interface 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {}<\/p>\n<p style=\"padding-left: 30px\">Teredo Tunneling Pseudo-I&#8230;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {}<\/p>\n<p style=\"padding-left: 30px\">6TO4 Adapter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 39&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{}\n&nbsp;\nThe preceding output is a bit much. In fact, it is too much to read. One easy way to filter the output is to display only the connections that have a connection suffix. This command is shown here.<\/p>\n<p style=\"padding-left: 30px\">19:09 C:&gt; Get-DnsClient | ? connectionspecificsuffix<\/p>\n<p style=\"padding-left: 30px\">InterfaceAlias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Interface ConnectionSpecificSuffix ConnectionSpecificSuffixSearchList<\/p>\n<p style=\"padding-left: 30px\">&#8212;&#8212;&#8212;&#8212;&#8211;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p style=\"padding-left: 30px\">vEthernet (WirelessSwitch)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 31 owv.atl.wayport.net&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;{}<\/p>\n<p style=\"padding-left: 30px\">isatap.owv.atl.wayport.net&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 44 owv.atl.wayport.net&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {}\n&nbsp;\nIf I want to see the network adapters associated with the particular network interface, I pipe the results to the <strong>Get-NetAdapter<\/strong> function. This command is shown here.<\/p>\n<p style=\"padding-left: 30px\"><strong>Note<\/strong> &nbsp;&nbsp;Interface 44 does not exist on my laptop and an error appears. To avoid the errors, specify an erroraction of 0.<\/p>\n<p style=\"padding-left: 30px\">19:10 C:&gt; Get-DnsClient | ? connectionspecificsuffix | Get-NetAdapter<\/p>\n<p style=\"padding-left: 30px\">Get-NetAdapter : No MSFT_NetAdapter objects found with property &#8216;InterfaceIndex&#8217;<\/p>\n<p style=\"padding-left: 30px\">equal to &#8217;44&#8217;.&nbsp; Verify the value of the property and retry.<\/p>\n<p style=\"padding-left: 30px\">At line:1 char:46<\/p>\n<p style=\"padding-left: 30px\">+ Get-DnsClient | ? connectionspecificsuffix | Get-NetAdapter<\/p>\n<p style=\"padding-left: 30px\">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ~~~~~~~~~~~~~~<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp; + CategoryInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ObjectNotFound: (44:UInt32) [Get-NetAdapter], CimJobE<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp; xception<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp; + FullyQualifiedErrorId : CmdletizationQuery_NotFound_InterfaceIndex,Get-NetAda<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp; pter<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InterfaceDescription&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifIndex Status<\/p>\n<p style=\"padding-left: 30px\">&#8212;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;&#8212;- &#8212;&#8212;<\/p>\n<p style=\"padding-left: 30px\">vEthernet (WirelessSwi&#8230; Hyper-V Virtual Ethernet Adapter #4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 31 Up<\/p>\n<h2>Use PowerShell to check the DNS cache<\/h2>\n<p>Once I see that I have a valid DNS server assigned, I decide to view my DNS cache. I use the <strong>Get-DNSCache<\/strong> function as shown here.<\/p>\n<p style=\"padding-left: 30px\"><strong>Note<\/strong>&nbsp;&nbsp; Using the <strong>Get-DnsClientCache<\/strong> does not require Admin permissions.<\/p>\n<p style=\"padding-left: 30px\">19:12 C:&gt; Get-DnsClientCache<\/p>\n<p style=\"padding-left: 30px\">Entry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;RecordNameType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Record Status&nbsp;&nbsp;&nbsp; Section TimeToLive<\/p>\n<p style=\"padding-left: 30px\">&#8212;&#8211;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;&#8212;&#8212;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;&#8212; &#8212;&#8212;&nbsp;&nbsp;&nbsp; &#8212;&#8212;- &#8212;&#8212;<\/p>\n<p style=\"padding-left: 30px\">sxp.microsoft.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sxp.microsoft.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CNAME&nbsp; Success&nbsp;&nbsp; Answer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4<\/p>\n<p style=\"padding-left: 30px\">ajax.aspnetcdn.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ajax.aspnetcdn.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CNAME&nbsp; Success&nbsp;&nbsp; Answer&nbsp;&nbsp;&nbsp;&nbsp; 293<\/p>\n<p style=\"padding-left: 30px\">www.facebook.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; www.facebook.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CNAME&nbsp; Success&nbsp;&nbsp; Answer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 53\nThere are a couple of things important here. One is the TTL&mdash;that is the time-to-live of the record and it lets me know that the spx.microsoft.com record will be present in my DNS cache for 4 seconds. The <a href=\"http:\/\/www.facebook.com\/\" target=\"_blank\">www.facebook.com<\/a> record will live for 53 seconds.\nA <a href=\"http:\/\/en.wikipedia.org\/wiki\/CNAME_record\" target=\"_blank\">CNAME record<\/a> is a canonical name record, or an alias for a DNS domain. Knowing this information is useful because it lets me know that the domain name I see is not the &ldquo;actual name&rdquo; of the server. If using the CNAME to connect to the server does not work, I know where to go to see if the server is even up.\nHere is an example of a CNAME record. I found this by piping a specific entry from the <strong>Get-DNSCLientCache<\/strong> to the <strong>Format-List<\/strong> cmdlet and, thereby, permitting me to view all of the information. The actual server name exists in the <strong>data<\/strong><em> <\/em>property. I use the following code to obtain the complete information.<\/p>\n<p style=\"padding-left: 30px\">12:35 C:&gt; (Get-DnsClientCache)[0] | fl *<\/p>\n<p style=\"padding-left: 30px\">&nbsp;TTL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 169<\/p>\n<p style=\"padding-left: 30px\">Caption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">ElementName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">InstanceID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">Data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : prod.us.moneycentral.money.glbdns.microsoft.com<\/p>\n<p style=\"padding-left: 30px\">DataLength&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 8<\/p>\n<p style=\"padding-left: 30px\">Entry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : moneycentral.msn.com<\/p>\n<p style=\"padding-left: 30px\">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : moneycentral.msn.com<\/p>\n<p style=\"padding-left: 30px\">Section&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1<\/p>\n<p style=\"padding-left: 30px\">Status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p style=\"padding-left: 30px\">TimeToLive&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 169<\/p>\n<p style=\"padding-left: 30px\">Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 5<\/p>\n<p style=\"padding-left: 30px\">PSComputerName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">CimClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ROOT\/StandardCimv2:MSFT_DNSClientCache<\/p>\n<p style=\"padding-left: 30px\">CimInstanceProperties : {Caption, Description, ElementName, InstanceID&#8230;}<\/p>\n<p style=\"padding-left: 30px\">CimSystemProperties&nbsp;&nbsp; : Microsoft.Management.Infrastructure.CimSystemProperties<\/p>\n<h2>Finding missing records<\/h2>\n<p>The cool thing about using the <strong>Get-DnsClientCache<\/strong> Windows PowerShell cmdlet is that it is PowerShell, and as such, it returns objects. This means an easily parsable output. In the output below, several records are not available&mdash;this can obviously cause problems.<\/p>\n<p style=\"padding-left: 30px\">12:51 C:&gt; Get-DnsClientCache<\/p>\n<p style=\"padding-left: 30px\">Entry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecordNameType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Record Status&nbsp;&nbsp;&nbsp; Section TimeToLive&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&#8212;&#8211;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;&#8212;&#8212;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;&#8212; &#8212;&#8212;&nbsp;&nbsp;&nbsp; &#8212;&#8212;- &#8212;&#8212;<\/p>\n<p style=\"padding-left: 30px\">ots.optimize.webtrends&#8230; ots.optimize.webtrends&#8230; CNAME&nbsp; Success&nbsp;&nbsp; Answer&nbsp;&nbsp;&nbsp;&nbsp; 100<\/p>\n<p style=\"padding-left: 30px\">_ldap._tcp.charlottesi&#8230;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SRV&nbsp;&nbsp;&nbsp; NoRecords<\/p>\n<p style=\"padding-left: 30px\">_ldap._tcp.dc._msdcs.i&#8230;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SRV&nbsp;&nbsp;&nbsp; NoRecords<\/p>\n<p style=\"padding-left: 30px\">&lt;output truncated&gt;\nBut in a long listing of the DNS client cache, identifying all of the missing records is a bit of a challenge. Therefore, it makes sense to filter the output via the <strong>Where-Object<\/strong>. This technique is shown here.<\/p>\n<p style=\"padding-left: 30px\">12:55 C:&gt; Get-DnsClientCache | ? status -eq &#8216;NoRecords&#8217;<\/p>\n<p style=\"padding-left: 30px\">12:55 C:&gt;\nThe problem, unfortunately, is that no records return. The reason is because this is one of those occasions where the actual returned data does not match with the display data&mdash;in other words, I am attempting to filter on something that does not exist. To get to the bottom of the problem, I need to see the raw data. I can do that by piping the output to the <strong>Format-List<\/strong> cmdlet and viewing all of the properties. This technique is shown here.<\/p>\n<p style=\"padding-left: 30px\">12:55 C:&gt; Get-DnsClientCache | Format-List -Property * -Force<\/p>\n<p style=\"padding-left: 30px\">TTL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p style=\"padding-left: 30px\">Caption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">ElementName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;:<\/p>\n<p style=\"padding-left: 30px\">InstanceID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">Data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">DataLength&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p style=\"padding-left: 30px\">Entry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : _ldap._tcp.charlottesite._sites.dc._msdcs.iammred.net<\/p>\n<p style=\"padding-left: 30px\">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">Section&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p style=\"padding-left: 30px\">Status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 9501<\/p>\n<p style=\"padding-left: 30px\">TimeToLive&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<\/p>\n<p style=\"padding-left: 30px\">Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 33<\/p>\n<p style=\"padding-left: 30px\">PSComputerName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<\/p>\n<p style=\"padding-left: 30px\">CimClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ROOT\/StandardCimv2:MSFT_DNSClientCache<\/p>\n<p style=\"padding-left: 30px\">CimInstanceProperties : {Caption, Description, ElementName, InstanceID&#8230;}<\/p>\n<p style=\"padding-left: 30px\">CimSystemProperties&nbsp;&nbsp; : Microsoft.Management.Infrastructure.CimSystemProperties\nI examine the output and see that the status is 9501<em> <\/em>and not NoRecords<em>. <\/em>Once I change my <strong>Where-Object<\/strong> filter, I obtain exactly the output I expected. Here is the modified command and its associated output.<\/p>\n<p style=\"padding-left: 30px\">12:58 C:&gt; Get-DnsClientCache | ? status -eq 9501<\/p>\n<p style=\"padding-left: 30px\">Entry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecordNameType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Record Status &nbsp; &nbsp;Section TimeToLive<\/p>\n<p style=\"padding-left: 30px\">&#8212;&#8211;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;&#8212;&#8212;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;&#8212; &#8212;&#8212;&nbsp;&nbsp;&nbsp; &#8212;&#8212;- &#8212;&#8212;<\/p>\n<p style=\"padding-left: 30px\">_ldap._tcp.charlottesi&#8230;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SRV&nbsp;&nbsp;&nbsp; NoRecords<\/p>\n<p style=\"padding-left: 30px\">_ldap._tcp.dc._msdcs.i&#8230;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SRV&nbsp;&nbsp;&nbsp; NoRecords<\/p>\n<p style=\"padding-left: 30px\">_ldap._tcp.5765f6d1-cb&#8230;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SRV&nbsp;&nbsp;&nbsp; NoRecords<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;12:58 C:&gt;\nJoin me tomorrow when I will talk some more about using Windows PowerShell to troubleshoot DNS issues on the client side.\nI invite you to follow me on <a href=\"http:\/\/bit.ly\/scriptingguystwitter\" target=\"_blank\">Twitter<\/a> and <a href=\"http:\/\/bit.ly\/scriptingguysfacebook\" target=\"_blank\">Facebook<\/a>. If you have any questions, send email to me at <a href=\"http:\/\/blogs.technet.commailto:scripter@microsoft.com\" target=\"_blank\">scripter@microsoft.com<\/a>, or post your questions on the <a href=\"http:\/\/bit.ly\/scriptingforum\" target=\"_blank\">Official Scripting Guys Forum<\/a>. See you tomorrow. Until then, peace.\n<strong>Ed Wilson, Microsoft Scripting Guy<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summary: Microsoft Scripting Guy, Ed Wilson, talks about using Windows PowerShell to troubleshoot client DNS. Microsoft Scripting Guy, Ed Wilson, is here. It seems that when I travel invariably at some point on the trip I end up in a hotel that has DNS issues. In the past, that meant opening up the CMD prompt [&hellip;]<\/p>\n","protected":false},"author":596,"featured_media":87096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[396,37,3,45],"class_list":["post-4359","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-dns","tag-networking","tag-scripting-guy","tag-windows-powershell"],"acf":[],"blog_post_summary":"<p>Summary: Microsoft Scripting Guy, Ed Wilson, talks about using Windows PowerShell to troubleshoot client DNS. Microsoft Scripting Guy, Ed Wilson, is here. It seems that when I travel invariably at some point on the trip I end up in a hotel that has DNS issues. In the past, that meant opening up the CMD prompt [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/4359","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/users\/596"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/comments?post=4359"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/4359\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media\/87096"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media?parent=4359"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=4359"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=4359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}