Windows Server 2019下如何通过VBScript控制特定网卡自定义链路Up/Down属性
解决方案
你要控制特定网卡的自定义链路Up/Down属性,可以通过以下两种可行路径实现:
方案1:访问网卡厂商提供的WMI扩展类
大多数商用网卡厂商会将自定义配置能力注册到WMI的root\wmi命名空间下的专有类中,你可以先枚举该命名空间下的类,找到对应网卡的控制类后读写指定属性即可,参考示例代码:Set locator = CreateObject("WbemScripting.SWbemLocator") ' 连接到存放厂商自定义属性的root\wmi命名空间 Set wmiSvc = locator.ConnectServer(".", "root\wmi") wmiSvc.Security_.ImpersonationLevel = 3 ' 替换为你网卡的厂商关键词,比如Intel、Realtek、Broadcom Const VENDOR_KEY = "Intel" For Each cls In wmiSvc.SubclassesOf() If InStr(1, cls.Path_.Class, VENDOR_KEY, vbTextCompare) > 0 Then WScript.Echo "找到厂商扩展类:" & cls.Path_.Class End If Next找到对应类后,你可以进一步枚举类的属性和方法,找到控制链路状态的对应项直接调用即可。
方案2:修改网卡自定义属性对应的注册表值
网卡所有可配置的自定义属性最终都存储在系统注册表中,路径固定为HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\<网卡序号>\,你可以先在注册表编辑器中搜索你截图中属性的名称,找到对应的键值后,用VBScript直接读写该注册表项,修改后可配合你原有的网卡禁用/启用逻辑让配置生效,参考示例代码:Set shell = CreateObject("WScript.Shell") ' 替换为你实际找到的注册表属性路径,1代表链路Up,0代表Down,可根据实际取值调整 shell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0001\LinkControl", 1, "REG_DWORD" ' 重启网卡让配置生效 Set wmiSvc = GetObject("winmgmts:\\.\root\cimv2") Set adapters = wmiSvc.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE PNPDeviceID='你的网卡PNPID'") For Each adp In adapters adp.Disable() WScript.Sleep 1500 adp.Enable() Next
如果以上两种方法都无法实现,你可以联系网卡厂商索要对应的命令行配置工具,VBScript可以直接调用该工具的命令行参数完成属性控制。
内容的提问来源于stack exchange,提问作者Jomin
相关产品推荐
相关产品推荐

