Vbs 禁用启用网卡

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不适用。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券