Vbs 禁用启用网卡
在实际工作中,经常碰到需要通过脚本启用禁用网卡的情况,在网上找了一个脚本,实际是通过模拟键盘操作来启用禁用,但对于多种系统和比较复杂的情况操作性不好。
还有一种思路,就是利用netsh命令实现,但是netsh命令必须得到网卡的名字,不同服务器,网卡的名字并不一样。
于是产生了一个思路,利用vbs得到网卡名字,然后调用netsh命令启用禁用网卡。
代码如下
call dis_en_nic()
Function dis_en_nic()
On Error Resume Next
dim objShell
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
set fso=createobject("scripting.filesystemobject")
Dim wshshell
Set wshshell=WScript.CreateObject("WScript.Shell")
arrComputers=Array(".")
For Each strComputer In arrComputers
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
'Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter where AdapterTypeId=0")
'使用where AdapterTypeId=0 可以的得到所有的物理网卡,但是貌似禁用的网卡不能得到,需要进一步测试
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter ")
For Each objItem In colItems
'WScript.Echo "NetConnectionID: " & objItem.NetConnectionID
a=objItem.NetConnectionID
'启用网卡
b="""c:\WINDOWS\system32\cmd.exe /c c:\WINDOWS\system32\netsh.exe interface set interface name="""+a+""" admin=ENABLED """
'禁用网卡
'b="""c:\WINDOWS\system32\cmd.exe /c c:\WINDOWS\system32\netsh.exe interface set interface name="""+a+""" admin=DISABLED """
wshshell.run("%comspec% /c "+b)
Next
Next
Set wshshell=nothing
End Function
说明:
1 环境变量 %comspec% 代表 Windows 命令外壳;这等效于调用 Cmd.exe(它当然会打开一个命令窗口)。那为什么不直接调用 Cmd.exe?是这样,假设您的计算机运行 Windows 98。在这些计算机上,通过运行 Command.com 来调用命令外壳,因为没有 Cmd.exe。使用 %comspec% 有助于确保无论该脚本是在什么版本的 Windows 上运行,都可以获得命令窗口。
2 此方法只适用server 2003 2008 xp不适用。