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

如何通过域策略以管理员身份在多台客户端执行PowerShell修改DNS及次级DNS?

域策略下用管理员权限执行PowerShell修改DNS服务器配置

一、把DNS修改命令和Start-Process结合提权运行

要让你的DNS修改命令以管理员权限执行,直接用Start-Process的-Verb RunAs参数提权,同时把原有命令作为参数传递给PowerShell,具体写法如下:

Start-Process powershell -Verb RunAs -ArgumentList "-Command", '$Array = Get-DnsClientServerAddress; foreach($element in $Array) { Set-DnsClientServerAddress -InterfaceIndex $($element).InterfaceIndex -ServerAddress "10.128.162.216" }'
  • -Verb RunAs:强制以管理员权限启动PowerShell进程
  • -ArgumentList:传递要执行的命令内容,用引号包裹避免语法错误

二、设置次级DNS服务器的命令

Set-DnsClientServerAddress的-ServerAddress参数支持传入数组,直接把主、次级DNS地址放在数组里就能同时配置,命令如下:

Start-Process powershell -Verb RunAs -ArgumentList "-Command", '$Array = Get-DnsClientServerAddress; foreach($element in $Array) { Set-DnsClientServerAddress -InterfaceIndex $($element).InterfaceIndex -ServerAddress "10.128.162.216", "10.128.162.217" }'

数组里第一个地址是主DNS,第二个就是次级DNS,注意顺序。

三、域策略部署的实用建议

  • 优先用计算机启动脚本:在域策略的「计算机配置→脚本→启动」里添加命令,启动脚本默认以系统权限运行,不用额外提权,比用户侧提权更稳定
  • 限制网卡范围:如果不想修改所有网卡(比如VPN、无线网卡),可以加过滤条件,只修改以太网类网卡:
Start-Process powershell -Verb RunAs -ArgumentList "-Command", '$Array = Get-DnsClientServerAddress | Where-Object {$_.InterfaceAlias -like "*Ethernet*"}; foreach($element in $Array) { Set-DnsClientServerAddress -InterfaceIndex $($element).InterfaceIndex -ServerAddress "10.128.162.216", "10.128.162.217" }'
  • 调整PowerShell执行策略:域策略里可以设置「计算机配置→管理模板→Windows组件→Windows PowerShell→启用脚本执行」,允许本地脚本运行,避免命令被拦截

内容的提问来源于stack exchange,提问作者Tsakiridis Giorgos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:17:21