powershell 是配置 windows dns 客户端最灵活可靠的工具,需精准定位活跃物理接口(如有线/无线)、用 -interfacealias 指定并加 -resetserveraddresses 清除干扰,再验证解析与支持回滚。
powershell 是配置 windows dns 客户端最灵活、最可靠的工具之一,尤其适合批量部署、域环境或需统一策略的内网终端。关键不在于“能不能设”,而在于“设得准不准、留不留痕、会不会被覆盖”。
精准定位网络接口再配置
直接对所有适配器操作容易误配(比如连着蓝牙或虚拟网卡),必须先识别当前活跃的真实物理接口:
- 查启用中的有线接口:
Get-NetAdapter | Where-Object {$_.Status -eq 'Up' -and $_.Name -match '以太网|Ethernet|LAN'} | Select-Object -First 1 - 查启用中的无线接口:
Get-NetAdapter | Where-Object {$_.Status -eq 'Up' -and $_.Name -match 'WLAN|Wi-Fi|无线'} | Select-Object -First 1 - 确认接口别名后,用
-InterfaceAlias而非模糊匹配,避免因语言/区域设置导致名称不一致的问题
设置静态 DNS 并清除干扰项
只填地址不够,必须确保 DHCP 分配的 DNS 不会悄悄覆盖你设的值:
- 执行命令时务必加上
-ResetServerAddresses参数,例如:Set-DnsClientServerAddress -InterfaceAlias "以太网" -ServerAddresses "10.1.1.10", "10.1.1.11" -ResetServerAddresses - 该参数会清空原有所有 DNS 条目(包括 DHCP 获取的和手动添加的),只保留你指定的两个地址
- 不加此参数,新地址会被追加到末尾,系统仍可能优先使用前面的公网 DNS
验证与回滚机制建议
自动化脚本上线前,应内置基础验证逻辑:
- 配置后立即检查:
Get-DnsClientServerAddress -InterfaceAlias "以太网" | Select-Object ServerAddresses - 测试解析是否生效:
Resolve-DnsName -Name intranet.corp -Server 10.1.1.10 -Type A - 如需恢复 DHCP 获取 DNS,运行:
Set-DnsClientServerAddress -InterfaceAlias "以太网" -ResetServerAddresses -ServerAddresses "0.0.0.0"(实际会触发自动获取)
适配多场景的轻量封装思路
不必写超长脚本,用几行就能支撑常见需求:
- 判断有线/无线并自动选配:
先查$wired = ...和$wireless = ...,再用if/else分支设置对应 DNS - 按 VLAN 或子网区分 DNS:
结合Get-NetIPAddress -AddressFamily IPv4提取本机 IP,再匹配不同段落调用不同 DNS 列表 - 导出当前 DNS 配置作基线备份:
Get-DnsClientServerAddress | Export-Csv -Path dns-backup.csv -NoTypeInformation











