ncomper
asked on
Modify this Powershell script that captures DNS servers so it outputs to CSV
Hi
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.
Thanks
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.
Thanks
# 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
<#
.SYNOPSIS
Outputs the computer name, IP address(es), DNS server address(es), and WINS server addresses for one or more computers.
.DESCRIPTION
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.
.EXAMPLE
PS C:\> Get-DNSandWINS server1
Outputs information for server1.
.EXAMPLE
PS C:\> Get-DNSandWINS server1,server2
Outputs information for server1 and server2.
.EXAMPLE
PS C:\> Get-DNSandWINS (Get-Content ComputerList.txt)
Outputs information for the computers listed in ComputerList.txt.
.EXAMPLE
PS C:\> Get-Content ComputerList.txt | Get-DNSandWINS
Same as previous example (Outputs information for the computers listed in ComputerList.txt).
.EXAMPLE
PS C:\> Get-DNSandWINS server1,server2 -Credential (Get-Credential)
Outputs information for server1 and server2 using different credentials.
#>
param(
[parameter(ValueFromPipeline=$TRUE)]
[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 $_
}
}
}
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
ASKER
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.
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.
Thanks
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Excellent as usual Thanks
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 :)