How to get DNS IP Settings using PowerShell?

Ipconfig /all command also retrieves the DNS settings for all the network interfaces. This command can be run on both cmd and PowerShell. For example,
PS C:\Users\Administrator> ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : Test1-Win2k16
   Primary Dns Suffix  . . . . . . . : labdomain.local
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : labdomain.local

Ethernet adapter Ethernet0:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Intel(R) 82574L Gigabit Network Connection
   Physical Address. . . . . . . . . : 00-0C-29-E1-28-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   IPv4 Address. . . . . . . . . . . : 192.168.0.108(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.0.1
   DHCPv6 IAID . . . . . . . . . . . : 33557545
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-26-A9-34-58-00-0C-29-E1-28-E0
   DNS Servers . . . . . . . . . . . : 192.168.0.105
   NetBIOS over Tcpip. . . . . . . . : Enabled

Tunnel adapter isatap.{5F9A3612-A410-4408-A7A8-368D2E16D6A8}:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Microsoft ISATAP Adapter #2
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes

But the problem with this command is you can not filter out the results properly. For example, if you need to retrieve the information for a specific interface then you need to write many string manipulation codes in PowerShell.
There are few GET verb commands available for DNS client-side settings. Let's check them.
Get-Command -Verb Get -Noun DNS*

Name                       Version
----                       -------
Get-DnsClient              1.0.0.0
Get-DnsClientCache         1.0.0.0
Get-DnsClientGlobalSetting 1.0.0.0
Get-DnsClientNrptGlobal    1.0.0.0
Get-DnsClientNrptPolicy    1.0.0.0
Get-DnsClientNrptRule      1.0.0.0
Get-DnsClientServerAddress 1.0.0.0
To retrieve the data related to DNS client IP settings including domain name like Ipconfig /all command, we need mainly 3 commands.
Get-DnsClient
Get-DnsClient
Get-DnsClientGlobalSetting
Get-DnsClientGlobalSetting
Get-DnsClientServerAddress
Get-DnsClientServerAddress
We will see each command one by one.
This command gets the details of the specific network interfaces configured on the specific computer. This command also helps you to set the DNS server address on the client computers when the Set-DnsClientServerAddress command is pipelined.
When you run this command on the local computer, it gives the details of the local interface.
Get-DnsClient
If you need specific interface address information then use -InterfaceIndex parameter. In the above output Interface Index, 3 is the primary adapter.
Get-DnsClient -InterfaceIndex 3
To get the same settings on the remote server, we can use the -CimSession parameter.
$sess = New-CimSession -ComputerName Test1-Win2k16
Get-DnsClient -Session $sess
This cmdlet retrieves the DNS client settings which are common to all the interfaces like the DNS suffix search list. Once you run the command, the output will be shown as below.
PS C:\Users\Administrator> Get-DnsClientGlobalSetting

UseSuffixSearchList : True
SuffixSearchList    : {labdomain.local}
UseDevolution       : True
DevolutionLevel     : 0
To get the settings on the remote server, use the CIM session parameter -Session.
$sess = New-CimSession -ComputerName Test1-Win2k16
Get-DnsClientGlobalSetting -Session $sess

UseSuffixSearchList : True
SuffixSearchList    : {labdomain.local}
UseDevolution       : True
DevolutionLevel     : 0
PSComputerName      : Test1-Win2k16
This cmdlet retrieves one or more DNS address associated with the interfaces on the computer. For example,
Get-DnsClientServerAddress

PS C:\Users\Administrator> Get-DnsClientServerAddress

InterfaceAlias               Interface Address ServerAddresses
                             Index     Family
--------------               --------- ------- ---------------
Ethernet0                            3 IPv4    {192.168.0.106}
Ethernet0                            3 IPv6    {}
Loopback Pseudo-Interface 1          1 IPv4    {}
isatap.{5F9A3612-A410-440...         4 IPv4    {192.168.0.106}
isatap.{5F9A3612-A410-440...         4 IPv6    {}


In the above output, the main interface Ethernet0 has associated DNS address is 192.168.0.106. Likewise, there are different IPv4 and IPv6 interfaces, and their DNS addresses are displayed in the Server Address field.
To retrieve only IPv4 interface associated DNS server address, use -AddressFamily parameter.
Get-DnsClientServerAddress -AddressFamily IPv4
InterfaceAlias               Interface Address ServerAddresses
                             Index     Family
--------------               --------- ------- ---------------
Ethernet0                            3 IPv4    {192.168.0.106}
Loopback Pseudo-Interface 1          1 IPv4    {}
isatap.{5F9A3612-A410-440...         4 IPv4    {192.168.0.106}
To get the DNS server IPs of the specific interface, you need to use its index by supplying index to the -InterfaceIndex Parameter.
Get-DnsClientServerAddress -InterfaceIndex 3

InterfaceAlias               Interface Address ServerAddresses
                             Index     Family
--------------               --------- ------- ---------------
Ethernet0                            3 IPv4    {192.168.0.106}
Ethernet0                            3 IPv6    {}
To get the DNS server list on the remote system, you need to use the CIM session parameter -Session.
Get-DnsClientServerAddress -AddressFamily IPv4 -Session $sess

InterfaceAlias               Interface Address ServerAddresses
                             Index     Family
--------------               --------- ------- ---------------
Ethernet0                            3 IPv4    {192.168.0.106}
Loopback Pseudo-Interface 1          1 IPv4    {}
isatap.{5F9A3612-A410-440...         4 IPv4    {192.168.0.106}