繁体   English   中英

检查用户组成员身份

[英]Checking a users group memberships

我一直在快速处理一个小脚本,以便可以根据人员组成员身份设置和删除网络驱动器或创建文件夹,它似乎不起作用,也没有错误消息,可以使用第二对眼睛,我真的很感激!

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

你打电话

isMember("Domain Admins")

功能

PRIVATE FUNCTION isMember( Group )

在名称Group选取参数。 但是,您(重新/错误)使用“ Group

FOR EACH Group in userCHS.Groups

遍历userCHS.Groups

IF (Group.Name = GroupName) THEN

获取.NameGroupName进行比较。 GroupName来自何处? 尝试将函数的标头更改为

PRIVATE FUNCTION isMember( GroupName )

并考虑使用Option Explicit来避免此类错误。

此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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM