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

出现‘RPC Server is unavailable’错误但脚本仍正常工作的原因排查

为什么PowerShell设置DNS成功却弹出“RPC Server is unavailable”错误?

你遇到的这种“操作生效但报错”的情况其实挺常见的,核心原因并不在DNS设置本身,而是出在WMI与RPC的后续交互环节,具体可以拆解成这几点:

  • WMI对象的RPC连接后续波动:你的脚本里Get-WMIObject已经成功获取到网卡对象,SetDNSServerSearchOrder和SetDynamicDNSRegistration也完成了核心的DNS配置操作。但WMI在处理完这些调用后,会尝试维持RPC连接或者做对象清理操作,这时候如果目标服务器的RPC服务临时响应缓慢、或者网络出现短暂丢包,就会触发这个错误——但核心的DNS设置早已经执行完成了。

  • WMI的异步状态反馈问题:WMI部分操作是异步执行的,虽然DNS配置已经生效,但在返回操作状态的环节,RPC通道出现了异常,导致错误被抛出而非成功信号。简单说就是“活儿干完了,但报信的时候出问题了”。

  • 目标服务器RPC服务的短暂不稳定:目标服务器的**Remote Procedure Call (RPC)**服务可能在脚本执行过程中出现了瞬间的资源占用过高、或者短暂的重启波动,但DNS设置操作本身很快,在RPC服务出问题前就已经完成了,所以只有后续的WMI交互触发了错误。

给你两个实用的小建议:

  1. 手动去目标服务器的services.msc里检查**Remote Procedure Call (RPC)**服务状态,确认它是正常运行的,没有频繁重启的记录。
  2. 换成更稳定的CIM cmdlets替代WMI试试,CIM对RPC的处理更可靠,脚本可以改成这样:
$computer = Get-Content C:\test\DNS_Server_Name.csv 
$NICs = Get-CimInstance Win32_NetworkAdapterConfiguration -ComputerName $computer | Where-Object {$_.IPEnabled -eq $true} 
Foreach($NIC in $NICs) { 
    $DNSServers = "198.102.234.125","198.102.234.126" 
    Invoke-CimMethod -InputObject $NIC -MethodName SetDNSServerSearchOrder -Arguments @{DNSServerSearchOrder=$DNSServers}
    Invoke-CimMethod -InputObject $NIC -MethodName SetDynamicDNSRegistration -Arguments @{FullRegistrationEnabled=$true}
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:23:35