当运行下面的VBS函数来检查当前用户是否在某个安全组中时,我得到行strGroup = LCase(Join(CurrentUser.MemberOf))
的错误#500(变量未定义)。
我在脚本中声明了Option Explicit
,所以这并不奇怪。但是,当我声明变量(Dim strGroup
)时,函数停止工作并始终返回false。
Function is_group_member(group)
Dim objNetwork
Dim objUser
Dim CurrentUser
' Set our default return value
is_group_member = False
' Directory Lookup
Set objNetwork = CreateObject("WScript.Network")
Set objUser = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & objUser.UserName)
strGroup = LCase(Join(CurrentUser.MemberOf))
' Set return value to true if the user is in the selected group
If InStr(strGroup, lcase(group)) Then
is_group_member = True
End If
End Function
答案 0 :(得分:1)
猜测CurrentUser.MemberOf
不是你想象的那样。
您需要调试正在运行的脚本(或者如果不可能,请在那里进行一些将值写入控制台或日志文件的日志记录。)
您需要检查
CurrentUser
不是什么CurrentUser.MemberOf
不是什么CurrentUser.MemberOf
是一个数组CurrentUser.MemberOf
是一个字符串数组CurrentUser.MemberOf
包含您所在的群组
期待。使用TypeName函数确定变量/成员的类型
可以在http://www.microsoft.com/en-us/download/details.aspx?id=22185找到VBScript调试器来调试脚本,安装调试器,然后通过将// x传递给cscript(cscript //x MyScript.vbs
)来启动脚本,或者放置stop
你希望开始调试的脚本中的关键字
希望这有帮助。