2013-03-19 99 views
0

我一直在一个小脚本上快速工作,以便根据个人组成员资格设置和删除网络驱动器或创建文件夹,但似乎无法正常工作并且没有错误消息,可以做第二双眼睛,我真的很感激它!检查用户组成员身份

DIM CHS 
SET CHS = CreateObject("Scripting.FileSystemObject") 
SET CHSshell = CreateObject("WScript.Shell") 
SET CHSnetwork = CreateObject("WScript.Network") 

PRIVATE FUNCTION isMember(Group) 
    SET netCHS = CreateObject("WScript.Network") 
    Domain = netCHS.UserDomain 
    User = netCHS.UserName 
    isMember = false 
    SET userCHS = GetObject("WinNT://" & Domain & "/" & User & ",user") 
     FOR EACH Group in userCHS.Groups 
      IF (Group.Name = GroupName) THEN 
       isMember = true 
     EXIT FOR 
      END IF 
    NEXT  
    SET userCHS = NOTHING 
    SET netCHS = NOTHING 
END FUNCTION 

SET CHS = NOTHING 

IF (isMember("Domain Admins") = "True") THEN 
    CHSnetwork.RemoveNetworkDrive "z:" 
    WSript.Echo "CHSnetwork.UserName" 
END IF 

回答

1

你叫

isMember("Domain Admins") 

功能

PRIVATE FUNCTION isMember(Group) 

拿起的名称Group参数。但是你(RE /误)在

FOR EACH Group in userCHS.Groups 

使用Group地遍历userCHS.Groups

IF (Group.Name = GroupName) THEN 

得到.NameGroupName比较。 GroupName来自哪里?尝试将功能的标题改为

PRIVATE FUNCTION isMember(GroupName) 

,并考虑使用Option Explicit,以避免这样的错误。

+0

非常感谢你,我没注意到! – 2013-03-19 11:21:48

0

这VBS脚本将显示所有组的用户属于:

Dim fso: Set fso = CreateObject("Scripting.FileSystemObject") 
Dim oNetwork: Set oNetwork = CreateObject("WScript.Network") 

Dim sUserName: sUserName = oNetwork.UserDomain & "/" & oNetwork.UserName 
sUserName = InputBox("Windows User Name","Enter Windows User Name", sUserName) 

If sUserName <> "" Then 
    GetGroups 
End If 

Sub GetGroups 
    Const ADS_READONLY_SERVER = 4 
    Dim oGroup, oUser 
    Dim oShell: Set oShell = Wscript.CreateObject("WScript.Shell") 
    Dim sFolderPath: sFolderPath = GetFolderPath() 
    Dim oNS: Set oNS = GetObject("WinNT:") 
    Dim oList: Set oList = CreateObject("System.Collections.ArrayList") 

    Dim sFilePath: sFilePath = sFolderPath & "\" & Replace(Replace(sUserName,"\","-"),"/","-") & "_groups.txt" 

    Set oUser = oNS.OpenDSObject("WinNT://" & sUserName, "", "", ADS_READONLY_SERVER) 
    For Each oGroup In oUser.groups 
     oList.Add oGroup.Name 
    Next 

    oList.Sort() 

    Dim oLog: Set oLog = fso.CreateTextFile(sFilePath, True) 
    For Each sItem in oList 
     oLog.Write sItem & vbCrLf 
    Next 

    oLog.Close 
    oShell.Run sFilePath 
End Sub 

Function GetFolderPath() 
    Dim oFile 'As Scripting.File 
    Set oFile = fso.GetFile(WScript.ScriptFullName) 
    GetFolderPath = oFile.ParentFolder 
End Function 
相关问题