[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now


Modify this Powershell script that captures DNS servers so it outputs to CSV

Posted on 2013-12-10
Medium Priority
Last Modified: 2013-12-20

I found the below script on the MS site that works well, however it displays the info in the console, is it possible someone could edit this so it outputs to a csv file, i tried stiicking an export-csv line at the end but that didnt work so there must be more to it.


# Get-DNSandWINS.ps1 
# Written by Bill Stewart (bstewart@iname.com) 
#requires -version 2 
# Version history: 
# 2.0 (2013-10-02) 
# * Added -Credential 
# * Output data only for IPv4 addresses 
# * Output separate row for each DNS server address 
# 1.0 (2012-02-15) 
# * Initial version 
Outputs the computer name, IP address(es), DNS server address(es), and WINS server addresses for one or more computers. 
Outputs the computer name, IP address(es), DNS server address(es), and WINS server addresses for one or more computers. 
.PARAMETER ComputerName 
One or more computer names. This parameter accepts pipeline input. 
.PARAMETER Credential 
Specifies credentials for the WMI connection. 
PS C:\> Get-DNSandWINS server1 
Outputs information for server1. 
PS C:\> Get-DNSandWINS server1,server2 
Outputs information for server1 and server2. 
PS C:\> Get-DNSandWINS (Get-Content ComputerList.txt) 
Outputs information for the computers listed in ComputerList.txt. 
PS C:\> Get-Content ComputerList.txt | Get-DNSandWINS 
Same as previous example (Outputs information for the computers listed in ComputerList.txt). 
PS C:\> Get-DNSandWINS server1,server2 -Credential (Get-Credential) 
Outputs information for server1 and server2 using different credentials. 
    [String[]] $ComputerName=$Env:COMPUTERNAME, 
    [System.Management.Automation.PSCredential] $Credential 
begin { 
  $PipelineInput = (-not $PSBOUNDPARAMETERS.ContainsKey("ComputerName")) -and (-not $ComputerName) 
  # Outputs the computer name, IP address, and DNS and WINS settings for 
  # every IP-enabled adapter on the specified computer that's configured with 
  # an IPv4 address. 
  function Get-IPInfo($computerName) { 
    $params = @{ 
      "Class" = "Win32_NetworkAdapterConfiguration" 
      "ComputerName" = $computerName 
      "Filter" = "IPEnabled=True" 
    if ( $Credential ) { $params.Add("Credential", $Credential) } 
    get-wmiobject @params | foreach-object { 
      foreach ( $adapterAddress in $_.IPAddress ) { 
        if ( $adapterAddress -match '(\d{1,3}\.){3}\d{1,3}' ) { 
          foreach ( $dnsServerAddress in $_.DNSServerSearchOrder ) { 
            new-object PSObject -property @{ 
              "ComputerName" = $_.__SERVER 
              "IPAddress" = $adapterAddress 
              "DNSServer" = $dnsServerAddress 
              "WINSPrimaryServer" = $_.WINSPrimaryServer 
              "WINSSecondaryServer" = $_.WINSSecondaryServer 
            } | select-object ComputerName,IPAddress,DNSServer,WINSPrimaryServer,WINSSecondaryServer 
process { 
  if ( $PipelineInput ) { 
    Get-IPInfo $_ 
  else { 
    $ComputerName | foreach-object { 
      Get-IPInfo $_ 

Open in new window

Question by:ncomper
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2

Expert Comment

ID: 39708547

Check this..

How to get servers’ DNS settings exported to CSV in Powershell

Hope that will help you in what you are trying to achieve exporting the Powershell command output in CSV File format.

Hope that helps :)
LVL 41

Expert Comment

ID: 39708557
The script will output custom objects.  If you want to export to a .CSV you could just run like
.\Get-DNSandWINS.ps1 servername | export-csv dns.csv -notype

Open in new window


Author Comment

ID: 39708905
Excellent that works thanks,

Would it be possible to add additional code that would right errors for the hosts it could not connect to, currently it just writes an error to the console but doesn't actually tell you what host has failed.

LVL 41

Accepted Solution

footech earned 2000 total points
ID: 39709246
Rather than rewriting the script at this point, I would just test the connection before calling the script.  So if you had a list of machines in a file "complist.txt"
GC complist.txt | % {
   $comp = $_
   If ( Test-Connection $comp -quiet -count 1)
      .\Get-DNSandWINS.ps1 $comp
   { Write-Host "Couldn't contact $comp" }
} | export-csv dns.csv -notype

Open in new window


Author Closing Comment

ID: 39731530
Excellent as usual Thanks

Featured Post

Are You Ready for GDPR?

With the GDPR deadline set for May 25, 2018, many organizations are ill-prepared due to uncertainty about the criteria for compliance. According to a recent WatchGuard survey, a staggering 37% of respondents don't even know if their organization needs to comply with GDPR. Do you?

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Group policies can be applied selectively to specific devices with the help of groups. Utilising this, it is possible to phase-in group policies, over a period of time, by randomly adding non-members user or computers at a set interval, to a group f…
This article provides a convenient collection of links to Microsoft provided Security Patches for operating systems that have reached their End of Life support cycle. Included operating systems covered by this article are Windows XP,  Windows Server…
This tutorial will walk an individual through the steps necessary to enable the VMware\Hyper-V licensed feature of Backup Exec 2012. In addition, how to add a VMware server and configure a backup job. The first step is to acquire the necessary licen…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …

656 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question