定义某个变量时,VBS函数始终返回False

时间:2013-07-03 08:10:52

标签: variables vbscript

当运行下面的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

1 个答案:

答案 0 :(得分:1)

猜测CurrentUser.MemberOf不是你想象的那样。

您需要调试正在运行的脚本(或者如果不可能,请在那里进行一些将值写入控制台或日志文件的日志记录。)

您需要检查

  1. CurrentUser不是什么
  2. CurrentUser.MemberOf不是什么
  3. CurrentUser.MemberOf是一个数组
  4. CurrentUser.MemberOf是一个字符串数组
  5. CurrentUser.MemberOf包含您所在的群组 期待。
  6. 使用TypeName函数确定变量/成员的类型

    可以在http://www.microsoft.com/en-us/download/details.aspx?id=22185找到VBScript调试器来调试脚本,安装调试器,然后通过将// x传递给cscript(cscript //x MyScript.vbs)来启动脚本,或者放置stop你希望开始调试的脚本中的关键字

    希望这有帮助。