脚本代码(复制保存为.vbs 文件)
'==========================================================================
' VBScript: 设置静态 IP、子网掩码、网关及 DNS
' 使用方法:以管理员身份运行,修改下方变量值或通过命令行传参
'==========================================================================
' ===== 自定义参数(也可从命令行参数获取) =====
strIP = "192.168.1.100" ' 需要设置的 IP 地址
strSubnet = "255.255.255.0" ' 子网掩码
strGateway = "192.168.1.1" ' 默认网关(可选,可留空)
strDNS1 = "8.8.8.8" ' 首选 DNS
strDNS2 = "8.8.4.4" ' 备用 DNS(可选,可留空)
' 要修改的网络适配器描述(部分匹配即可,留空自动选择第一个启用的适配器)
strAdapter = "以太网" ' "以太网"、"Wi-Fi"、"" 表示自动
'==========================================================================
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
Dim bFound : bFound = False
For Each objAdapter in colAdapters
If strAdapter = "" Or InStr(objAdapter.Description, strAdapter) > 0 Then
bFound = True
WScript.Echo "正在修改适配器: " & objAdapter.Description
' ---------- 1. 设置静态 IP ----------
arrIP = Array(strIP)
arrSubnet = Array(strSubnet)
' 如果原来启用了 DHCP,需先禁用
If objAdapter.DHCPEnabled Then
objAdapter.EnableStatic arrIP, arrSubnet
Else
objAdapter.EnableStatic arrIP, arrSubnet
End If
' 检查 EnableStatic 的返回值(0=成功, 1=需要重启, 其它=失败)
Dim retIP
retIP = Err.Number ' 某些情况需要实际返回值,这里简化处理
If Err.Number <> 0 Then
WScript.Echo "警告:设置 IP 时出现错误,可能已有相同 IP 或权限不足。"
End If
' ---------- 2. 设置网关(如果提供了网关) ----------
If strGateway <> "" Then
arrGateway = Array(strGateway)
arrGatewayMetric = Array(1) ' 跃点(通常为 1)
objAdapter.SetGateways arrGateway, arrGatewayMetric
End If
' ---------- 3. 设置 DNS ----------
' 构建 DNS 数组(至少包含一个有效 DNS)
If strDNS2 <> "" Then
arrDNS = Array(strDNS1, strDNS2)
ElseIf strDNS1 <> "" Then
arrDNS = Array(strDNS1)
Else
arrDNS = Array() ' 清空 DNS 设置(使用空数组)
End If
objAdapter.SetDNSServerSearchOrder arrDNS
' 检查 SetDNSServerSearchOrder 返回值
If Err.Number <> 0 Then
WScript.Echo "警告:设置 DNS 时出现错误,请检查输入格式。"
End If
WScript.Echo "修改完成!"
Exit For
End If
Next
If Not bFound Then
WScript.Echo "未找到符合要求的网络适配器(" & strAdapter & "),请检查适配器名称。"
End If1、修改参数
直接编辑脚本开头的变量:
strIP、strSubnet、strGateway、strDNS1、strDNS2
strAdapter:网卡描述(可通过ipconfig /all 查看),留空则自动选择第一个启用网卡。
2、以管理员身份运行
- 右键点击脚本文件 → 选择“以管理员身份运行”。
- 或者在管理员命令提示符中执行:cscript //nologo 脚本路径.vbs。
3、查看结果
执行完毕后会弹出对话框显示成功与否(如果无交互,可使用cscript 在命令行运行,输出文字)。
“拒绝访问”或“权限不足”
请确保以管理员身份运行脚本。
“找不到适配器”
检查strAdapter 是否匹配实际网卡描述(如“以太网”、“WLAN”),可用ipconfig /all 查看。
设置后未生效
某些配置需要重新启动网卡或重启计算机,脚本执行后一般即时生效,但也可用ipconfig /renew 刷新。
想回退到 DHCP
使用以下脚本片段:
objAdapter.EnableDHCP objAdapter.SetDNSServerSearchOrder Array() ' 清空 DNS,使其自动获取
- 本脚本通过WMI 方式修改,兼容 Windows 7/8/10/11 及 Server 系统。
- 如果需要多个网卡同时修改,删除Exit For 即可遍历所有匹配网卡。
- 更健壮的版本还可以检查EnableStatic 的返回值(0/1/其他),此处为便于阅读做了简化。
文章摘自:https://idc.huochengrm.cn/dns/25862.html
评论
希成天
回复该VBScript脚本通过WMI设置静态IP、网关和DNS,需管理员权限运行,可修改参数以适应不同网络配置。