How do I get SID for the group using vbscript?

前端 未结 2 1451
忘掉有多难
忘掉有多难 2021-01-27 10:02

I want to get the SID of a group by input the group name and it will return the SID. Is there any way to do this using vbscript ? Any help would be great

2条回答
  •  粉色の甜心
    2021-01-27 11:00

    I forgot where I got this but here it is:

    Set oAD = GetObject(sLDAP) ' sLDAP starts with "LDAP://"    
    wscript.echo "SID: " & HexSIDToDec(OctetToHexStr(oAD.Get("objectSid"))))
    
    Function HexSIDToDec(strSID)
        ' Function to convert most hex SID values to decimal format.
        Dim arrbytSID, lngTemp, j
        ReDim arrbytSID(Len(strSID)/2 - 1)
        For j = 0 To UBound(arrbytSID)
            arrbytSID(j) = CInt("&H" & Mid(strSID, 2*j + 1, 2))
        Next
        If (UBound(arrbytSID) = 11) Then
            HexSIDToDec = "S-" & arrbytSID(0) & "-" & arrbytSID(1) & "-" & arrbytSID(8)
            Exit Function
        End If
        If (UBound(arrbytSID) = 15) Then
            HexSIDToDec = "S-" & arrbytSID(0) & "-" & arrbytSID(1) & "-" & arrbytSID(8)
            lngTemp = arrbytSID(15)
            lngTemp = lngTemp * 256 + arrbytSID(14)
            lngTemp = lngTemp * 256 + arrbytSID(13)
            lngTemp = lngTemp * 256 + arrbytSID(12)
            HexSIDToDec = HexSIDToDec & "-" & CStr(lngTemp)
            Exit Function
        End If
        HexSIDToDec = "S-" & arrbytSID(0) & "-" & arrbytSID(1) & "-" & arrbytSID(8)
        lngTemp = arrbytSID(15)
        lngTemp = lngTemp * 256 + arrbytSID(14)
        lngTemp = lngTemp * 256 + arrbytSID(13)
        lngTemp = lngTemp * 256 + arrbytSID(12)
        HexSIDToDec = HexSIDToDec & "-" & CStr(lngTemp)
        lngTemp = arrbytSID(19)
        lngTemp = lngTemp * 256 + arrbytSID(18)
        lngTemp = lngTemp * 256 + arrbytSID(17)
        lngTemp = lngTemp * 256 + arrbytSID(16)
        HexSIDToDec = HexSIDToDec & "-" & CStr(lngTemp)
        lngTemp = arrbytSID(23)
        lngTemp = lngTemp * 256 + arrbytSID(22)
        lngTemp = lngTemp * 256 + arrbytSID(21)
        lngTemp = lngTemp * 256 + arrbytSID(20)
        HexSIDToDec = HexSIDToDec & "-" & CStr(lngTemp)
        If (UBound(arrbytSID) > 23) Then
            lngTemp = arrbytSID(27)
            lngTemp = lngTemp * 256 + arrbytSID(26)
            lngTemp = lngTemp * 256 + arrbytSID(25)
            lngTemp = lngTemp * 256 + arrbytSID(24)
            HexSIDToDec = HexSIDToDec & "-" & CStr(lngTemp)
        End If
    End Function
    
    Function OctetToHexStr(ByVal arrbytOctet)
        ' Function to convert OctetString (byte array) to Hex string.
        Dim k
        OctetToHexStr = ""
        For k = 1 To Lenb(arrbytOctet)
            OctetToHexStr = OctetToHexStr & Right("0" & Hex(Ascb(Midb(arrbytOctet, k, 1))), 2)
        Next
    End Function
    

提交回复
热议问题