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 |