2009-05-21 3 views
1

In Active Directory gibt es eine Registerkarte „Dial-In“ genannt, und unter dieser Registerkarte ist ein Steueroptionsfeld mit drei Einstellungen:Wie kann ich die Active Directory DialIn Permission Einstellung von LDAP mit VBScript erhalten?

Allow Access 
Deny Access 
Control access through remote access policy 

ich eine VBScript schreiben möchten, einen Benutzernamen nehmen , und geben Sie die Einstellung für diesen Benutzer zurück. (Ich modifiziere gerade ein bestehendes VBScript, weshalb ich gezwungen bin, dieses Tool zu benutzen).

Was ist der beste Weg, das zu tun?

Antwort

2

Hier ist die beste Lösung, die ich mir vorstellen konnte. Es kann leicht geändert werden, um die Einstellung für alle Benutzer auszugeben.

Main 

Function Main 
    'Usage: cscript /nologo lookup.vbs mydomain username 
    Wscript.Echo CanDialIn(Wscript.Arguments(0), Wscript.Arguments(1)) 
    Main = 0 
End Function 

Function CanDialIn(domainname, username) 
    'Take a user name and query whether they have permission to Dial in or not 
    'http://www.microsoft.com/technet/scriptcenter/resources/qanda/aug05/hey0825.mspx 
    Const ADS_SCOPE_SUBTREE = 2 
    Dim objConnection 
    Dim objCommand 
    Dim objRecordSet 

    Set objConnection = CreateObject("ADODB.Connection") 
    Set objCommand = CreateObject("ADODB.Command") 
    objConnection.Provider = "ADsDSOObject" 
    objConnection.Open "Active Directory Provider" 
    Set objCommand.ActiveConnection = objConnection 

    objCommand.Properties("Page Size") = 1000 
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 

    'Three possible values for msNPAllowDialin: 
    'TRUE = "Allow Access" 
    'FALSE = "Deny Access" 
    'EMPTY = "Control access through remote access policy" 
    objCommand.CommandText = _ 
    "SELECT msNPAllowDialin FROM 'LDAP://dc=" & domainname & ",dc=com' WHERE objectCategory='user' AND sAMAccountName = '" & username & "'" 
    On Error Resume Next 
    Set objRecordSet = objCommand.Execute 
    if objRecordSet.EOF then 
    CanDialIn = "Could not find user " & username 
    else 
    if objRecordSet.Fields("msNPAllowDialin").Value = True then 
     CanDialIn = "Allow" 
    else 
     if objRecordSet.Fields("msNPAllowDialin").Value = False then 
     CanDialIn = "Deny" 
     else 
     CanDialIn = "Control" 
     end if 
    end if 
    end if 
End Function 
Verwandte Themen