Active Directory PSO мелкозернистые пароли msDS-MaximumPasswordAge - PullRequest
1 голос
/ 24 декабря 2011

Посмотрим, как создать vbscript для получения максимального количества дней, установленного политикой PSO. Возвращается как значение ... и я не знаю, как получить реальное значение, которое было установлено.

Это то, что я имею до сих пор:

Option Explicit

Const ADS_UF_PASSWD_CANT_CHANGE = &H40
Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000

Dim strFilePath, objFSO, objFile, adoConnection, adoCommand, objCDOConf
Dim objRootDSE, strDNSDomain, strFilter, strQuery, adoRecordset, objMaxPwdAge
Dim strDN, objShell, lngBiasKey, lngBias, blnPwdExpire, strDept, strAdd
Dim objDate, dtmPwdLastSet, lngFlag, k, address, objAdd, objMessage

' Check for required arguments.
If (Wscript.Arguments.Count < 1) Then
    Wscript.Echo "Arguments <FileName> required. For example:" & vbCrLf _
        & "cscript PwdLastChanged.vbs c:\MyFolder\UserList.txt"
    Wscript.Quit(0)
End If

strFilePath = Wscript.Arguments(0)
Set objFSO = CreateObject("Scripting.FileSystemObject")

' Open the file for write access.
On Error Resume Next
Set objFile = objFSO.OpenTextFile(strFilePath, 2, True, 0)
If (Err.Number <> 0) Then
    On Error GoTo 0
    Wscript.Echo "File " & strFilePath & " cannot be opened"
    Wscript.Quit(1)
End If
On Error GoTo 0

Set objShell = CreateObject("Wscript.Shell")
lngBiasKey = objShell.RegRead("HKLM\System\CurrentControlSet\Control\" _
    & "TimeZoneInformation\ActiveTimeBias")
If (UCase(TypeName(lngBiasKey)) = "LONG") Then
    lngBias = lngBiasKey
ElseIf (UCase(TypeName(lngBiasKey)) = "VARIANT()") Then
    lngBias = 0
    For k = 0 To UBound(lngBiasKey)
        lngBias = lngBias + (lngBiasKey(k) * 256^k)
    Next
End If

' Use ADO to search the domain for all users.
Set adoConnection = CreateObject("ADODB.Connection")
Set adoCommand = CreateObject("ADODB.Command")
adoConnection.Provider = "ADsDSOOBject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection

' Determine the DNS domain from the RootDSE object.
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("DefaultNamingContext")

' Filter to retrieve all user objects.
strFilter = "(&(objectClass=msDS-PasswordSettings))"

' Filter to retrieve all computer objects.    
strQuery = "<LDAP://CN=PSO-Information Systems,CN=Password Settings Container,CN=System,DC=yrmc,DC=org>;" _
    & ";cn,msDS-LockoutDuration,msDS-MaximumPasswordAge,msDS-

PasswordSettingsPrecedence;subtree"

    adoCommand.CommandText = strQuery
    adoCommand.Properties("Page Size") = 100
    adoCommand.Properties("Timeout") = 30
    adoCommand.Properties("Cache Results") = False

Set adoRecordset = adoCommand.Execute
Do Until adoRecordset.EOF
    objFile.WriteLine adoRecordset.Fields("cn").Value
    adoRecordset.MoveNext
Loop
adoRecordset.Close

Я могу получить значение для cn и даже msDS-PasswordSettingsPrecedence, но не для msDS-MaximumPasswordAge. Любая помощь будет оценена.

Ответы [ 3 ]

0 голосов
/ 29 мая 2014

Поставьте квадратные скобки вокруг имени нашего атрибута Active Directory:

См. Сообщение в блоге "Как получить значение атрибута активного каталога, в имени которого есть дефис"больше.

0 голосов
/ 17 декабря 2014

вы должны найти местоположение UsersPSO в вашей AD, как это

domainLookupString = ""CN=UsersPSO,CN=Password Settings Container,CN=System,DC=COMPAY,DC=ORG";

затем выполните запрос ldap

ldapFilterString = "(&(objectClass=msDS-PasswordSettings))";

в конце получите атрибут ldap с максимальным сроком действия пароля текущей политики PSO

"msDS-MaximumPasswordAge"
0 голосов
/ 28 августа 2012

В лучшем случае это частичный ответ, но я провел некоторый поиск, и я полагаю, что вам понадобится одно или несколько из следующего:

  1. DSGet / DSQuery
  2. LDIFDE для управления PSO.
  3. Quest " Бесплатные команды PowerShell для Active Directory "

Используя бесплатные инструменты Quest, вы можетенайти эту ссылку удобный

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...