Set-DhcpServerv4OptionValue无法追加DNS服务器地址问题求助
解决Set-DhcpServerv4OptionValue无法追加DNS服务器地址的问题
现有DHCP作用域的006 DNS服务器选项已配置10.1.2.2和10.1.2.3,使用以下原始脚本添加新DNS地址时,会直接覆盖原有地址,无法实现追加效果(预期结果是保留原地址并新增10.2.2.3、10.2.2.4):
$dnsArray = "10.2.2.3","10.2.2.4" Set-DhcpServerv4OptionValue -ComputerName "dhcp01" -ScopeId "1.1.1.0" -DnsServer $dnsArray
解决方案:先获取现有DNS地址再合并更新
通过先读取当前作用域的DNS服务器配置,将原有地址与新地址合并后再写入,即可实现追加效果。以下是修正后的脚本:
$computerName = "DHCP01" $newDnsServers = "10.2.2.3", "10.2.2.4" # 替换为实际需要追加的DNS地址 $scopeIds = "1.1.1.0" # 替换为目标DHCP作用域ID foreach ($scopeId in $scopeIds) { # 获取当前作用域的006 DNS选项配置 $currentOption = Get-DhcpServerv4OptionValue -ComputerName $computerName -ScopeId $scopeId -OptionId 6 # 初始化现有DNS地址数组 $existingDnsServers = @() # 若已有配置,提取现有DNS地址 if ($currentOption.Value) { $existingDnsServers = $currentOption.Value } # 合并新旧DNS地址并自动去重 $mergedDnsServers = $existingDnsServers + $newDnsServers | Select-Object -Unique # 将合并后的完整地址列表写入DHCP配置 Set-DhcpServerv4OptionValue -ComputerName $computerName -ScopeId $scopeId -DnsServer $mergedDnsServers -Force }
核心逻辑说明:
- 读取现有配置:使用
Get-DhcpServerv4OptionValue指定OptionId 6(对应DNS服务器选项),获取当前作用域已配置的所有DNS地址。 - 合并去重:将原有地址数组与新地址数组合并,通过
Select-Object -Unique避免重复添加相同的DNS地址。 - 覆盖写入完整列表:用
Set-DhcpServerv4OptionValue写入合并后的完整地址列表,-Force参数确保配置生效,此时覆盖的是包含新旧地址的完整集合,而非仅新地址。
内容的提问来源于stack exchange,提问作者Arbelac
相关产品推荐
相关产品推荐

