Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования. Часть 3

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

bokcep

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
добрый день!
 
Подскажите, хочу реализовать через BGInfo (выводит служебную инфу на рабочий стол пользователя). Скрипт смотрит в AD на истечение паролей пользователей и выводит соответствующую информацию.
Мне же нужно реализовать то же самое, но без домена. Подскажите, как это реализовать? Что подправить в скрипте?
 
 
Option Explicit
 
Dim objRoot, objUser, strDomain, strUser, strList
Dim objConnection, objCommand, objRSet, strCommandText, strAttributes
Dim intUserAccountControl, intTimeInterval, dtmValue
Dim objMaxPwdAge, dblMaxPwdNano, dblMaxPwdSecs, dblMaxPwdDays
Const ADS_SCOPE_SUBTREE = 2
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D
Const ONE_HUNDRED_NANOSECOND    = .000000100
Const SECONDS_IN_DAY            = 86400
 
Set objRoot = GetObject("LDAP://RootDSE")
strDomain = objRoot.Get("DefaultNamingContext")
Set objRoot = Nothing
Set objMaxPwdAge = GetObject("LDAP://" & strDomain).Get("maxPwdAge")
If objMaxPwdAge.LowPart = 0 Then
    WScript.Echo "Политика домена не ограничивает максимальный срок действия пароля." & vbNewLine
Else
    strUser = Trim(InputBox("Полное имя пользователя:"))
    If Len(strUser) > 0 Then
        strAttributes = "ADsPath,displayName"
        strCommandText = "SELECT " & strAttributes & " FROM 'LDAP://" & strDomain & _
            "' WHERE objectCategory='Person' AND objectClass='User' AND displayName='" & strUser & "'"
        Set objConnection = CreateObject("ADODB.Connection")
        objConnection.Provider = "ADsDSOObject"
        objConnection.Open "Active Directory Provider"
        Set objCommand = CreateObject("ADODB.Command")
        Set objCommand.ActiveConnection = objConnection
        objCommand.CommandText = strCommandText
        objCommand.Properties("Page Size") = 1000
        objCommand.Properties("Timeout") = 30
        objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
        objCommand.CommandText = strCommandText
        Set objRSet = objCommand.Execute
        If objRSet.RecordCount > 0 Then
            objRSet.MoveFirst
            Do Until objRSet.EOF
                strUser = objRSet.Fields("displayName").Value
                Set objUser = GetObject(objRSet.Fields("ADsPath").Value)
                intUserAccountControl = objUser.Get("userAccountControl")
                If intUserAccountControl And ADS_UF_DONT_EXPIRE_PASSWD Then  
                    strList = strList & strUser & " -> Срок действия пароля не ограничен." & vbNewLine & "------" & vbNewLine
                Else
                    dtmValue = objUser.PasswordLastChanged
                    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then              
                        strList = strList & strUser & " -> Пароль ни разу не устанавливался." & vbNewLine
                    Else
                        intTimeInterval = Int(Now - dtmValue)
                        strList = strList & strUser & " -> Пароль установлен " & _
                                    DateValue(dtmValue) & " в " & TimeValue(dtmValue)  & vbNewLine & _
                                    "Интервал между датой последней установки пароля и текущей датой (в днях): " & intTimeInterval & vbNewLine
                    End If
                    dblMaxPwdNano = Abs(4294967296 * objMaxPwdAge.HighPart + objMaxPwdAge.LowPart)
                    dblMaxPwdSecs = dblMaxPwdNano * ONE_HUNDRED_NANOSECOND
                    dblMaxPwdDays = Int(dblMaxPwdSecs / SECONDS_IN_DAY)
                    strList = strList & "Максимальный срок действия пароля (в днях): " & dblMaxPwdDays & vbNewLine
                    If intTimeInterval >= dblMaxPwdDays Then
                        strList = strList & "Срок действия пароля истёк." & vbNewLine & "------" & vbNewLine
                    Else
                        strList = strList & "Дата истечения срока действия пароля: " & DateValue(dtmValue + dblMaxPwdDays) & vbNewLine & _
                                    "Оставшийся интервал действия пароля (в днях): " & Int((dtmValue + dblMaxPwdDays) - Now) & vbNewLine & "------" & vbNewLine
                    End If
                End If          
                objRSet.MoveNext
            Loop
            Set objUser = Nothing
            MsgBox strList
        Else
            MsgBox "Ничего не найдено."
        End If
        Set objRSet = Nothing: Set objCommand = Nothing
        objConnection.Close: Set objConnection = Nothing
    End If
End If
Set objMaxPwdAge = Nothing
WScript.Quit 0

Всего записей: 1 | Зарегистр. 28-04-2016 | Отправлено: 15:15 28-04-2016
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования. Часть 3


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru