求助:VBS下标越界

miaobing2008 2011-01-06 09:00:56
今天测试一个 批量修改域用户权限的脚本,运行时一直提示:下标越界;不知道这段VBS代码,哪里出的问题!
请高手帮忙指出!将不胜感激
VBS脚本如下:
Const ForReading = 1
Set unNamedArguments = WScript.Arguments.UnNamed
Set objGroupAdm = GetObject("WinNT://" & unNamedArguments.Item(0) & "/Administrators,group")
Set objGroupPower = GetObject("WinNT://" & unNamedArguments.Item(0) & "/Power Users,group")
For Each objUser in objGroupAdm.Members
If objUser.Name <> "Administrator" and objUser.Name <> "Domain Admins" Then
objGroupAdm.Remove(objUser.ADsPath)
objGroupPower.Add(objUser.ADsPath)
WScript.Echo("The user "& unNamedArguments.Item(0)&":"&objUser.Name & " is changed to _ Power Users Group")
End If
Next ' end for



...全文
572 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Microogle 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 microogle 的回复:]

另外可以把unNamedArguments.Item(0)换成"."试试,这个应该是计算机名吧.
[/Quote]
[Quote=引用 18 楼 miaobing2008 的回复:]

唉!没办法就一台台机子去修改咯!
[/Quote]
一般本机都可以用"."来代替计算机名。
在你的脚本里面应该设置一个变量,如果存在参数,则它的值为参数所提供的计算机名,如果没有,则默认为".".
miaobing2008 2011-01-07
  • 打赏
  • 举报
回复
唉!没办法就一台台机子去修改咯!
miaobing2008 2011-01-06
  • 打赏
  • 举报
回复
呵呵,我还不知道如何把 unNamedArguments.Item(0)的值抓出来!
neohope 2011-01-06
  • 打赏
  • 举报
回复
那你看看unNamedArguments.Item(0)是什么呢
miaobing2008 2011-01-06
  • 打赏
  • 举报
回复
自己顶一下!没人有这方面的应用吗?
dianyancao 2011-01-06
  • 打赏
  • 举报
回复
那怎么办,VBS本身就是B语言
miaobing2008 2011-01-06
  • 打赏
  • 举报
回复
VB我几乎不会不会,上学时学过!5年多前做过.net开发,也几乎忘光了,改行做网络管理4年了
dianyancao 2011-01-06
  • 打赏
  • 举报
回复
那你B语言总会了吧,把代码改下,放到编译器中运行,就知道错误在哪一行了。
miaobing2008 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 dianyancao 的回复:]
你改成1试了没有?
[/Quote]
我测试这段脚本的时候,提示下标越界的第一反应就是把下标改了,不过不行!

呵呵,我脚本语言也不熟,只是有这方面的需求,就在CSDN上找了相关资料,虽然知道问题出在哪里,但是不知道怎么修改!
dianyancao 2011-01-06
  • 打赏
  • 举报
回复
你改成1试了没有?
miaobing2008 2011-01-06
  • 打赏
  • 举报
回复
不用那么麻烦,用MsgBox("")抓值就可以测试!我知道值是空的,但是不知道怎么修改!
dianyancao 2011-01-06
  • 打赏
  • 举报
回复
还没发现错误位置,怎么解决呢?
你把代码改成VB的,放到IDE中调试,看下
miaobing2008 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dianyancao 的回复:]
Item(0)改成Item(1)看下
[/Quote]
如果这么简单能完成,我就不会贴在这里了
dianyancao 2011-01-06
  • 打赏
  • 举报
回复
Item(0)改成Item(1)看下
miaobing2008 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dianyancao 的回复:]
unNamedArguments.Item(0)
是一个集合,集合的下标是从1开始的,没有Item(0)
[/Quote]
这个我是知道的,我尽自己的能力做了修改,贴出的代码是 CSDN上看到的,而且我尝试抓过
unNamedArguments.Item的值,是空的;但是我不知道这段代码如何变通?
dianyancao 2011-01-06
  • 打赏
  • 举报
回复
unNamedArguments.Item(0)
是一个集合,集合的下标是从1开始的,没有Item(0)
miaobing2008 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 microogle 的回复:]
WScript.Echo WScript.Arguments.Unnamed.Count
你该不会直接运行没有带参数吧?
[/Quote]
能说的具体些吗?
Microogle 2011-01-06
  • 打赏
  • 举报
回复
另外可以把unNamedArguments.Item(0)换成"."试试,这个应该是计算机名吧.
Microogle 2011-01-06
  • 打赏
  • 举报
回复
WScript.Echo WScript.Arguments.Unnamed.Count
你该不会直接运行没有带参数吧?

6,849

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧