如何使用 PowerShell 获取 DNS IP 设置?


Ipconfig /all 命令也会检索所有网络接口的 DNS 设置。此命令可以在 cmd 和 PowerShell 中运行。例如,

示例

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

但是此命令的问题在于您无法正确过滤结果。例如,如果您需要检索特定接口的信息,则需要在 PowerShell 中编写许多字符串操作代码。

DNS 客户端设置有一些可用的 GET 动词命令。让我们检查一下。

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

要检索与 DNS 客户端 IP 设置(包括域名)相关的数据,就像 Ipconfig /all 命令一样,我们需要主要 3 个命令。

  • Get-DnsClient

  • Get-DnsClientGlobalSetting

  • Get-DnsClientServerAddress

我们将逐一查看每个命令。

Get-DnsClient

此命令获取在特定计算机上配置的特定网络接口的详细信息。当 Set-DnsClientServerAddress 命令通过管道传输时,此命令还有助于在客户端计算机上设置 DNS 服务器地址。

当您在本地计算机上运行此命令时,它会提供本地接口的详细信息。

Get-DnsClient

如果您需要特定接口地址信息,请使用 -InterfaceIndex 参数。在上面的输出接口索引中,3 是主适配器。

Get-DnsClient -InterfaceIndex 3

输出

要在远程服务器上获取相同的设置,我们可以使用 -CimSession 参数。

$sess = New-CimSession -ComputerName Test1-Win2k16
Get-DnsClient -Session $sess

Get-DNSClientGlobalSetting

此 cmdlet 检索对所有接口通用的 DNS 客户端设置,例如 DNS 后缀搜索列表。运行该命令后,输出将如下所示。

输出

PS C:\Users\Administrator> Get-DnsClientGlobalSetting

UseSuffixSearchList : True
SuffixSearchList    : {labdomain.local}
UseDevolution       : True
DevolutionLevel     : 0

要在远程服务器上获取设置,请使用 CIM 会话参数 -Session

$sess = New-CimSession -ComputerName Test1-Win2k16
Get-DnsClientGlobalSetting -Session $sess

UseSuffixSearchList : True
SuffixSearchList    : {labdomain.local}
UseDevolution       : True
DevolutionLevel     : 0
PSComputerName      : Test1-Win2k16

Get-DnsClientServerAddress

此 cmdlet 检索与计算机上的接口关联的一个或多个 DNS 地址。例如,

示例

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    {}

在上面的输出中,主接口 Ethernet0 关联的 DNS 地址是 192.168.0.106。同样,还有不同的 IPv4 和 IPv6 接口,它们的 DNS 地址显示在服务器地址字段中。

要仅检索与 IPv4 接口关联的 DNS 服务器地址,请使用 -AddressFamily 参数。

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}

要获取特定接口的 DNS 服务器 IP,您需要通过向 -InterfaceIndex 参数提供索引来使用其索引。

Get-DnsClientServerAddress -InterfaceIndex 3

InterfaceAlias               Interface Address ServerAddresses
                             Index     Family
--------------               --------- ------- ---------------
Ethernet0                            3 IPv4    {192.168.0.106}
Ethernet0                            3 IPv6    {}

要在远程系统上获取 DNS 服务器列表,您需要使用 CIM 会话参数 -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}

更新于: 2020年11月11日

19K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告