海浩网论坛

 找回密码
 关闭注册
搜索
热搜: 女囚槛 win7
查看: 908|回复: 9
打印 上一主题 下一主题

谁来解释一下wscript脚本 disable/enable NIC [复制链接]

UID
4205
注册时间
2002-1-23
帖子
27645
精华
7
跳转到指定楼层
1#
发表于 2008-6-15 15:35:40 |只看该作者 |倒序浏览
俺需要个命令行来disable/enable NIC,发现下面这个脚本能做,可是啥意思呀?怎么能做到disable后再自动enable?

Const ssfCONTROLS = 3

sConnectionName = "Local Area Connection"

sEnableVerb = "En&able"
sDisableVerb = "Disa&ble"

set shellApp = createobject("shell.application")
set oControlPanel = shellApp.Namespace(ssfCONTROLS)

set oNetConnections = nothing
for each folderitem in oControlPanel.items
if folderitem.name = "Network Connections" then
set oNetConnections = folderitem.getfolder: exit for
end if
next

if oNetConnections is nothing then
msgbox "Couldn't find 'Network Connections' folder"
wscript.quit
end if

set oLanConnection = nothing
for each folderitem in oNetConnections.items
if lcase(folderitem.name) = lcase(sConnectionName) then
set oLanConnection = folderitem: exit for
end if
next

if oLanConnection is nothing then
msgbox "Couldn't find '" & sConnectionName & "' item"
wscript.quit
end if

bEnabled = true
set oEnableVerb = nothing
set oDisableVerb = nothing
s = "Verbs: " & vbcrlf
for each verb in oLanConnection.verbs
s = s & vbcrlf & verb.name
if verb.name = sEnableVerb then
set oEnableVerb = verb
bEnabled = false
end if
if verb.name = sDisableVerb then
set oDisableVerb = verb
end if
next

'debugging displays left just in case...
'
'msgbox s ': wscript.quit
'msgbox "Enabled: " & bEnabled ': wscript.quit

'not sure why, but invokeverb always seemed to work
'for enable but not disable.
'
'saving a reference to the appropriate verb object
'and calling the DoIt method always seems to work.
'
if bEnabled then
' oLanConnection.invokeverb sDisableVerb
oDisableVerb.DoIt
wscript.sleep 1000
for each folderitem in oNetConnections.items
if lcase(folderitem.name) = lcase(sConnectionName) then
set oLanConnection = folderitem: exit for
end if
next

set oEnableVerb = nothing
set oDisableVerb = nothing
s = "Verbs: " & vbcrlf
for each verb in oLanConnection.verbs
s = s & vbcrlf & verb.name
'msgbox verb.name
if verb.name = sEnableVerb then
set oEnableVerb = verb
bEnabled = false
end if
if verb.name = sDisableVerb then
set oDisableVerb = verb
end if
next

oEnableVerb.DoIt
else
' oLanConnection.invokeverb sEnableVerb
oEnableVerb.DoIt
end if

'adjust the sleep duration below as needed...
'
'if you let the oLanConnection go out of scope
'and be destroyed too soon, the action of the verb
'may not take...
'
wscript.sleep 60
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0 支持支持0 反对反对0
境界

版主

弱弱的海豚

UID
40507
注册时间
2004-11-18
帖子
9169
精华
21
2#
发表于 2008-6-15 15:38:40 |只看该作者
本人严正声明:此帖在全世界只有一个沙发。沙发两边的扶手同属于一个沙发。任何企图想制造两个或两个以上沙发的,或是一个沙发一个板凳的行为都必将遭到包括中国人民在内的全世界人民的反对和强烈谴责!
其实我本来什么都没有....


俺是多尔的豌豆.. 俺是墙根...  俺还有那乌黑亮丽的长发...



上得了厅堂,下得了厨房,写得了代码,查得出异常,杀得了木马,翻得了围墙,开得起好车,买得起新房,斗得过二奶,打得过流氓

使用道具 举报

UID
2823
注册时间
2001-9-19
帖子
302926
精华
87
3#
发表于 2008-6-15 15:43:39 |只看该作者
万恶的妮可...占据了全世界的沙发....美利坚人民将和这种霸权主义斗争到底...
PG决定了脑袋...

使用道具 举报

UID
35835
注册时间
2004-4-5
帖子
2744
精华
0
4#
发表于 2008-6-15 16:08:04 |只看该作者
原帖由 妮可宝贝 于 2008-6-15 15:38 发表
本人严正声明:此帖在全世界只有一个沙发。沙发两边的扶手同属于一个沙发。任何企图想制造两个或两个以上沙发的,或是一个沙发一个板凳的行为都必将遭到包括中国人民在内的全世界人民的反对和强烈谴责!

啥意思?和LZ的主题不相合呀
不该说的别说

使用道具 举报

UID
47455
注册时间
2005-9-24
帖子
2963
精华
0
5#
发表于 2008-6-15 16:40:24 |只看该作者
尼可是说谁回答正确这沙发就给谁

使用道具 举报

UID
35502
注册时间
2004-3-24
帖子
20544
精华
2
6#
发表于 2008-6-15 22:30:23 |只看该作者
没人品的没人顶
结婚,结得太早,经不起风霜。
结婚,结得太迟,英雄迟暮。

使用道具 举报

蓝鲸

鲲,别名鱼:D

UID
499
注册时间
2001-3-29
帖子
12198
精华
5
7#
发表于 2008-6-15 22:33:17 |只看该作者
disable后再自动enable  NIC
是先变换网卡设置么。。。。方便运行批处理吗,用netsh exec config.txt命令挺好

使用道具 举报

UID
4205
注册时间
2002-1-23
帖子
27645
精华
7
8#
发表于 2008-6-15 23:34:47 |只看该作者
2K的系统上没有netsh吧?
不是改变设置,只不过时不时笔记本网卡不听使唤

原帖由 fish 于 2008-6-15 22:33 发表
disable后再自动enable  NIC
是先变换网卡设置么。。。。方便运行批处理吗,用netsh exec config.txt命令挺好
境界

使用道具 举报

UID
2882
注册时间
2001-9-19
帖子
15957
精华
7
9#
发表于 2008-6-16 03:26:22 |只看该作者
用Script好象不太容易理解,要不要试一试DevCon,即命令行实用工具可替代设备管理器。不过这种方法是完全禁用硬件设备,然后再启用这个设备。

官方网页:http://support.microsoft.com/kb/311272/zh-cn

我自己试了一下:
先运行devcon hwids * > DevList.txt

然后打开这个文件,找你要禁用的网卡。我电脑上是
PCI\VEN_11AB&DEV_4320&SUBSYS_811A1043&REV_13\4&2E98101C&0&28F0
    Name: Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Adapter, Copper RJ-45
    Hardware ID's:
        PCI\VEN_11AB&DEV_4320&SUBSYS_811A1043&REV_13
        PCI\VEN_11AB&DEV_4320&SUBSYS_811A1043
        PCI\VEN_11AB&DEV_4320&CC_020000
        PCI\VEN_11AB&DEV_4320&CC_0200
    Compatible ID's:
        PCI\VEN_11AB&DEV_4320&REV_13
        PCI\VEN_11AB&DEV_4320
        PCI\VEN_11AB&CC_020000
        PCI\VEN_11AB&CC_0200
        PCI\VEN_11AB
        PCI\CC_020000
        PCI\CC_0200
之后看Hardware ID后的列表,
   随便选一个,如果要禁用,

devcon disable PCI\VEN_11AB&DEV_4320&SUBSYS_811A1043&REV_13

如果要启用
devcon enable PCI\VEN_11AB&DEV_4320&SUBSYS_811A1043&REV_13

官方的网站http://technet2.microsoft.com/wi ... f1033.mspx?mfr=true有很多实用例子。这个网站也有一些介绍:http://bloger.5-it.com/article.asp?id=138
guodl

使用道具 举报

UID
2882
注册时间
2001-9-19
帖子
15957
精华
7
10#
发表于 2008-6-16 03:33:32 |只看该作者
看一看这个,好象很具体:

http://www.experts-exchange.com/OS/Miscellaneous/Q_20708207.html

how to disable network connection using script



since i accept a comment before i checked thoroughly i will ask again

i have a WIN2K server with 2 ethernet cards. each card is in a different subnet
one is connected to the internet and the other is connected to the intranet.
i need a script that will close one and open the other and vice versa so both
cards will never be connected at the same time. ( disable routing is not an option )
the script will run by the scheduler or manualy.

the solution was to use devcon.exe command which is a command line device manager
here is the answer i got :

##################################################################
##################################################################

DevCon Command Line Utility Alternative to Device Manager
http://support.microsoft.com/?kbid=311272

devcon.exe hwids * >> c:\hardware.txt
Search for the NIC you'd like to disable (in my case DEV_1229)

Example:
C:\test\i386>devcon disable *DEV_1229*
PCI\VEN_8086&DEV_1229&SUBSYS_00408086&REV_0C\3&61AAA01&0&48 : Disable
1 device(s) disabled.

C:\test\i386>devcon enable *DEV_1229*
PCI\VEN_8086&DEV_1229&SUBSYS_00408086&REV_0C\3&61AAA01&0&48 : Enabled
1 device(s) enabled.

Works the same as right clicking on the NIC and choosing disable/enable.
guodl

使用道具 举报

您需要登录后才可以回帖 登录 | 关闭注册

2021 , Hello Everyone ^_^ ^_^ ^_^