Список всех объектов настройки пароля (PSO) с использованием LDAP - PullRequest
1 голос
/ 07 сентября 2011

как мне получить все активные PSO в определенном домене.

Я знаю, что этот домен содержит следующие PSO:

CN=PSO-Standard
CN=PSO-Sensitive

Но я должен создать отчет для отображенияих, поэтому я должен загружать их динамически.

Я полагаю, что существует своего рода фильтр для получения контейнера PSO и последующего циклического перебора его набора записей.

например

.filter = "(CN=Password Settings Container)"

.attributes = "msDS-PasswordSettingsContainer"

спасибо заранее.

используя классический asp с vbscript

1 Ответ

2 голосов
/ 08 сентября 2011

Фильтр, который вы ищете: "(objectClass = msDS-PasswordSettings)"

Вот пример Vbscript для тестирования:

'==========================================================================
'
' NAME: SearchPSO.vbs
'
' AUTHOR: JPB , Silogix
' DATE  : 29/06/2011
'
' COMMENT: 
'
'==========================================================================
Option Explicit
Dim machine
Dim oRootDSE ' Root Directory Service Specific Entry
Dim DomainContainer ' The Roor of the Domain
Dim conn ' ADODB connexion
Dim ldapBase ' Base DN of the search
Dim ldapFilter ' Search filter
Dim ldapAttributes ' Attributs to get
Dim ldapScope ' Search scope
Dim ldapStr ' String to execute
Dim rs ' Search result
Dim f '
Dim oADSI ' ADSI access


' ADODB cooking
machine = "WM2008R2ENT"
Set oRootDSE = GetObject("LDAP://"&machine&"/"&"RootDSE")
DomainContainer = oRootDSE.Get("defaultNamingContext")

Set conn = CreateObject("ADODB.Connection")
conn.Provider = "ADSDSOObject"
conn.Properties("User ID") = "jpb"
conn.Properties("Password") = "test.2011"
conn.Properties("Encrypt Password") = True

conn.Open "ADs Provider"

' Building the request to exécute
ldapBase = "<LDAP://" & machine &"/"& DomainContainer & ">" 
ldapFilter = "(objectClass=msDS-PasswordSettings)"
ldapAttributes = "cn,msDS-LockoutDuration,msDS-MaximumPasswordAge"
ldapScope = "subtree"
ldapStr = ldapBase&";"&ldapFilter&";"&ldapAttributes&";"&ldapScope

' Search request execution
Set rs = conn.Execute(ldapStr)

' Restitution du résultat
While Not rs.EOF
  'For each f in rs.Fields
  '  WScript.Echo f.Name & ":" & f.Value
  'Next
  WScript.Echo rs.Fields("cn").Value
  rs.MoveNext
Wend
...