使用LDAP和VBScript获取帐户锁定状态,而不绑定到用户对象

使用LDAP和VBScript获取帐户锁定状态,而不绑定到用户对象,vbscript,Vbscript,我正在尝试获取Active Directory帐户的锁定状态,而不必使用VBScript绑定到它们。此查询也跨多个域。我发现了LDAP属性lockoutTime,但无法使其正常工作 Const ADS_SCOPE_SUBTREE = 2 Set objCommand = CreateObject("ADODB.Command") Set objConnection = CreateObject("ADODB.Connection") objConnection.Provider = "ADsD

我正在尝试获取Active Directory帐户的锁定状态,而不必使用VBScript绑定到它们。此查询也跨多个域。我发现了LDAP属性lockoutTime,但无法使其正常工作

Const ADS_SCOPE_SUBTREE = 2

Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

strFilter = "(&(objectClass=User)(sAMAccountName=userid))"
strAttrib = "distinguishedName,userAccountControl,pwdLastSet,lockoutTime"
strQuery = "<GC://dc=domain,dc=com>;" & strFilter & ";" & strAttrib & ";subtree"

objCommand.CommandText = strQuery
Set objRecordSet = objCommand.Execute

If objRecordSet.RecordCount > 0 Then
    If objRecordSet.Fields( "lockoutTime" ) > 0 Then
        MsgBox "Account locked"
    Else
        MsgBox "Account not locked"
    End If
End If

我不想绑定到每个帐户的原因是它大大降低了脚本的速度,我正在结合一个经典的ASP站点来做这件事。我目前有一个网站,它使用一个查询绑定到每个帐户,然后测试了一个只使用LDAP查询的网站,当只使用LDAP查询时,速度要快得多。

有一个很好的脚本可以导出锁定的用户,您可以从中获得一些信息,您感兴趣的是lockoutFlag=adoRecordset.FieldsmsDS-User-Account-Control-Computed.Value。谢谢,我看到了这个属性,但我读到的所有信息都表明,您必须绑定到用户帐户才能获得它。我要试试,因为您指向的脚本在LDAP查询中使用它。好的,测试过了。您可以使用该属性,但只能与LDAP一起使用。它没有存储在全局目录中,因此我无法查询其他域以获取该信息。
Set objLockout = objRecordSet.Fields( "lockoutTime" )
If objLockout.lowpart = 0 And objLockout.highpart = 0 Then
    MsgBox "Account not locked"
Else
    MsgBox "Account locked"
End If