0

以下の VBS 関数を実行して、現在のユーザーが特定のセキュリティ グループに属しているかどうかを確認すると、行でエラー #500 (変数が定義されていません) が発生しますstrGroup = LCase(Join(CurrentUser.MemberOf))

スクリプトで宣言して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
4

1 に答える 1

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スクリプト内のデバッグを開始する場所にキーワードを入れます

お役に立てれば。

于 2013-07-03T08:25:30.403 に答える