如何使用 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}