2013-07-03 36 views
0

當運行下面的VBS函數來檢查當前用戶是否在某個安全組中時,對於行strGroup = LCase(Join(CurrentUser.MemberOf)),我得到錯誤#500(變量未定義)。當定義了某個變量時,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的類型調試腳本,安裝調試器,然後或者通過使啓動腳本// X到cscript(cscript //x MyScript.vbs)或在您想要開始調試的腳本中輸入stop關鍵字

希望這會有所幫助。

+0

感謝您的回覆,我會看看。看起來您的調試器鏈接不正確,因爲無法找到頁面。謝謝。 –

+0

感謝您對下載鏈接的反饋,我已經解決了它。 –

+0

謝謝。參加幾次會議,今天晚些時候會抓住它。 –