2013-07-03 2 views
0

При запуске следующей функции VBS, чтобы проверить, находится ли текущий пользователь в определенной группе безопасности, я получаю ошибку # 500 (переменная не определена) для строки strGroup = LCase(Join(CurrentUser.MemberOf)).Функция VBS всегда возвращает False, когда определенная переменная определена

У меня есть 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

В догадке CurrentUser.MemberOf не то, что вы думаете.

Вам необходимо отладить выполняемый скрипт (или если это невозможно, выполните регистрацию там, где записываются значения в консоль или в файл журнала).

Вам нужно проверить

  1. что CurrentUser не ничего
  2. что CurrentUser.MemberOf не ничего
  3. что CurrentUser.MemberOf массив
  4. что CurrentUser.MemberOf представляет собой массив строк
  5. что CurrentUser.MemberOf содержит группа, что вы ожидающий.

Используйте функцию TypeName, чтобы определить тип переменной/члена

VBScript отладчик можно найти здесь http://www.microsoft.com/en-us/download/details.aspx?id=22185 отладить скрипт, установить отладчик, а затем либо запустить скрипт, передав // х на cscript (cscript //x MyScript.vbs) или поместите ключевое слово stop в свой скрипт, где вы хотите начать отладку

Надеюсь, это поможет.

+0

Спасибо за ответ, я посмотрю на это. Похоже, что ваша ссылка на отладчик неверна, поскольку страница не найдена. Благодарю. –

+0

Спасибо за отзыв по ссылке для загрузки, я исправил ее. –

+0

Спасибо. Выйдя на пару встреч, он захватит его позже сегодня. –

Смежные вопросы