You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell批量配置并每周校验多台服务器的DNSServerForwarders

用PowerShell批量配置并校验DNS服务器转发器

完全可以通过PowerShell脚本实现批量配置、定期校验DNS服务器转发器的需求,以下是具体实现方案:

1. 定义服务器与转发器的映射关系

先把每台服务器对应的目标DNS转发器IP整理成可维护的配置结构,比如用自定义对象数组:

# 服务器与对应DNS转发器的配置映射
$dnsForwarderConfig = @(
    [PSCustomObject]@{
        ServerName = "server1"
        Forwarders = @("xxx.xxx.xxx.xxx", "yyy.yyy.yyy.yyy")
    },
    [PSCustomObject]@{
        ServerName = "server2"
        Forwarders = @("aaa.aaa.aaa.aaa", "xxx.xxx.xxx.xxx")
    },
    [PSCustomObject]@{
        ServerName = "server3"
        Forwarders = @("yyy.yyy.yyy.yyy", "xxx.xxx.xxx.xxx", "aaa.aaa.aaa.aaa")
    }
)

2. 编写配置校验与更新脚本

遍历每台服务器,对比当前转发器配置与目标配置,不一致则自动更新,同时输出操作日志:

# 遍历配置,执行校验与更新
foreach ($config in $dnsForwarderConfig) {
    try {
        # 远程获取当前DNS转发器IP
        $currentForwarders = Get-DnsServerForwarder -ComputerName $config.ServerName -ErrorAction Stop | Select-Object -ExpandProperty IPAddress
        $currentForwarderStrings = $currentForwarders | ForEach-Object { $_.ToString() }
        $targetForwarders = $config.Forwarders

        # 对比配置是否一致
        $diff = Compare-Object -ReferenceObject $targetForwarders -DifferenceObject $currentForwarderStrings -IncludeEqual
        $hasMismatch = $diff.Where({$_.SideIndicator -ne "=="}, 'First')

        if ($hasMismatch) {
            # 配置不一致,执行更新
            Set-DnsServerForwarder -ComputerName $config.ServerName -IPAddress $targetForwarders -ErrorAction Stop
            Write-Host "[$(Get-Date)] 已更新服务器 $($config.ServerName) 的DNS转发器: $($targetForwarders -join ', ')"
        } else {
            Write-Host "[$(Get-Date)] 服务器 $($config.ServerName) 的DNS转发器配置符合要求,无需更新"
        }
    } catch {
        Write-Host "[$(Get-Date)] 处理服务器 $($config.ServerName) 失败: $_" -ForegroundColor Red
    }
}

3. 定期执行脚本

将上述脚本保存为.ps1文件,通过Windows任务计划程序创建每周定时任务:

  • 任务触发条件设置为每周指定时间
  • 操作选择启动程序,程序路径填powershell.exe,参数填-ExecutionPolicy Bypass -File "脚本完整路径"
  • 确保执行任务的账号拥有所有目标DNS服务器的管理员权限

注意事项

  • 目标服务器需启用WinRM服务(Get-DnsServerForwarder/Set-DnsServerForwarder依赖WinRM远程管理)
  • 可根据需求添加日志写入文件的逻辑,方便后续排查问题

内容的提问来源于stack exchange,提问作者Jerry Yeo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:05:11