5154

Good Luck To You!

PowerShell如何批量设置多台电脑的DNS地址?

在Windows系统中,DNS(域名系统)配置的正确性直接影响网络访问速度和稳定性,PowerShell作为Windows强大的命令行工具,提供了灵活且高效的DNS配置方法,尤其适合批量管理或自动化运维场景,以下将详细介绍使用PowerShell设置DNS的多种方式、参数说明及实用技巧。

获取当前网络适配器配置信息

在修改DNS前,需先确定目标网络适配器的名称或索引,可通过以下命令查看所有网络适配器的详细信息:

Get-NetAdapter | Format-Table Name, InterfaceDescription, Status, LinkSpeed -AutoSize

对于无线适配器,通常名称为“Wi-Fi”;有线以太网适配器可能显示为“以太网”或“Ethernet”,若需进一步筛选特定状态的适配器(如“已连接”),可添加Where-Object条件:

Get-NetAdapter | Where-Object {$_.Status -eq "Up"} | Select-Object Name, InterfaceIndex

为指定适配器设置静态DNS

使用Set-DnsClientServerAddress cmdlet可配置静态DNS服务器地址,基本语法为:

Set-DnsClientServerAddress -InterfaceIndex <适配器索引> -ServerAddresses <DNS服务器IP>

为索引为12的以太网适配器设置首选DNS为8.8.8和备用DNS为8.4.4

powershell 设置dns

Set-DnsClientServerAddress -InterfaceIndex 12 -ServerAddresses "8.8.8.8", "8.8.4.4"

若通过适配器名称操作,需结合Get-NetAdapter的结果:

Set-DnsClientServerAddress -InterfaceAlias "以太网" -ServerAddresses "114.114.114.114", "1.1.1.1"

配置DNS后缀搜索列表

DNS后缀用于解析不完全域名(如localhost),可通过Set-DnsClientGlobalSetting修改全局后缀,或使用Set-DnsClient配置特定适配器的连接特定后缀:

# 设置全局DNS后缀
Set-DnsClientGlobalSetting -SuffixSearchList "corp.example.com", "example.com"
# 为指定适配器设置连接特定后缀
Set-DnsClient -InterfaceIndex 12 -ConnectionSpecificSuffix "local.example.com"

清除动态DNS注册

某些场景下需清除已注册的DNS记录,可通过以下命令禁用动态注册并清除现有记录:

Set-DnsClient -InterfaceIndex 12 -RegisterThisConnectionsAddress $false -ResetConnectionSpecificSuffix

批量配置多台计算机的DNS

在域环境中,可结合Invoke-Command对远程计算机批量设置DNS:

powershell 设置dns

$computers = "PC01", "PC02", "PC03"
Invoke-Command -ComputerName $computers -ScriptBlock {
    Set-DnsClientServerAddress -InterfaceAlias "以太网" -ServerAddresses "192.168.1.1", "192.168.1.2"
}

常用参数说明

参数 说明 示例
-InterfaceIndex 网络适配器的索引号 -InterfaceIndex 11
-InterfaceAlias 网络适配器的别名 -InterfaceAlias "Wi-Fi"
-ServerAddresses DNS服务器IP地址数组 -ServerAddresses "8.8.8.8", "1.1.1.1"
-Validate 验证配置是否成功 -Validate
-PassThru 返回配置后的对象 -PassThru

验证DNS配置

修改完成后,可通过以下命令验证DNS设置是否生效:

Get-DnsClientServerAddress -InterfaceIndex 12 | Format-List

或使用nslookup测试域名解析:

nslookup www.example.com

常见问题与解决方案

  1. 提示“拒绝访问”
    原因:PowerShell未以管理员身份运行,解决方法:右键点击PowerShell图标,选择“以管理员身份运行”。

  2. 修改后DNS未生效
    原因:可能是IP地址配置为动态获取导致冲突,需先确保适配器设置为静态IP,或刷新DHCP租约:ipconfig /renew

    powershell 设置dns


FAQs

Q1: 如何通过PowerScript将DNS设置为自动获取?
A: 使用以下命令将指定适配器的DNS服务器地址重置为DHCP自动分配:

Set-DnsClientServerAddress -InterfaceIndex 12 -ResetServerAddresses

Q2: 如何查看当前所有适配器的DNS配置历史记录?
A: PowerShell本身不保存配置历史,但可通过Get-NetAdapterDnsSetting查看当前实时配置:

Get-NetAdapterDnsSetting | Format-Table Name, InterfaceDescription, DnsServer, RegisterThisConnectionsAddress

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright Your WebSite.Some Rights Reserved.