[решено] Автоматическое удаление пользователей в системе на состоящей в АД

Аватара пользователя
Daemonstar

Re: [решено] Автоматическое удаление пользователей в системе на состоящей в АД

Сообщение Daemonstar »

Добавлено логирование и мейл нотификация.




читать дальше »


Set wshShell = WScript.CreateObject( "WScript.Shell" )

Dim strComputer

Dim objIADsContainer

Dim objIADsUser

Dim dtLastLogon

Dim objDictExcludeUsers

dateStamp = Now()



Set objDictExcludeUsers = WScript.CreateObject("Scripting.Dictionary")



With objDictExcludeUsers

.Add "excludе_login1", ""

.Add "exclude_login2", ""

.Add "exclude_login3", ""

.Add "login4", ""

End With



Set ObjFSO = CreateObject("Scripting.FileSystemObject")

Set objLog = objFSO.CreateTextFile("C:\blocked_users_log.txt")

objLog.WriteLine (cstr(dateStamp))



StrComputer = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )

Set objIADsContainer = GetObject("WinNT://" & strComputer & ",computer")

objIADsContainer.Filter = Array("user")

For Each objIADsUser In objIADsContainer

On Error Resume Next

dtLastLogon = CDate(objIADsUser.LastLogin)

If Err.Number = 0 Then

On Error Goto 0

If DateDiff("d", dtLastLogon, Now()) > 90 And (objIADsUser.AccountDisabled = False) Then

If Not objDictExcludeUsers.Exists(objIADsUser.Name) Then

objLog.WriteLine "Blocked account: " & objIADsUser.Name & " Last login: " & dtLastLogon & vbNewLine

objIADsUser.AccountDisabled = True

objIADsUser.SetInfo

End If

End If

End If

Next

objLog.Close

On Error Goto 0

Set S = CreateObject("Wscript.Shell")

set FSO=createobject("scripting.filesystemobject")

Call SendPost("smtp.server.com","to_email1@example.com, [url=mailto:to_email2@example.com]to_email2@example.com","from_email@example.com[/url]","Accounts blocked on "&StrComputer,"")

Function SendPost(strSMTP_Server,strTo,strFrom,strSubject,strBody)

Set iMsg=CreateObject("CDO.Message")

Set iConf=CreateObject("CDO.Configuration")

Set Flds=iConf.Fields

Flds.Item("
http://schemas.microsoft.com/cdo/config ... /sendusing
")=2

Flds.Item("
http://schemas.microsoft.com/cdo/config ... thenticate
")=0

Flds.Item("
http://schemas.microsoft.com/cdo/config ... ndusername
")="blabla"

Flds.Item("
http://schemas.microsoft.com/cdo/config ... ndpassword
")="xXx"

Flds.Item("
http://schemas.microsoft.com/cdo/config ... smtpserver
")="smtp.example.com"

Flds.Item("
http://schemas.microsoft.com/cdo/config ... serverport
")=25

Flds.Update

iMsg.Configuration=iConf

iMsg.To=strTo

iMsg.From=strFrom

iMsg.Subject=strSubject

iMsg.TextBody=strBody

'iMsg.AddAttachment "C:\blocked_users_log.txt"

Const FileToBeUsed = "C:\blocked_users_log.txt"

Set objLog = objFSO.OpenTextFile(FileToBeUsed)

'** The ReadAll method reads the entire file into the variable BodyText

iMsg.Textbody = objLog.ReadAll

'** Close the file

objLog.Close

'** Clear variables

Set objLog = Nothing

iMsg.Send

End Function

Set iMsg=Nothing

Set iConf=Nothing

Set Flds=Nothing

WScript.Quit 0
Аватара пользователя
Iska

Re: [решено] Автоматическое удаление пользователей в системе на состоящей в АД

Сообщение Iska »

Для работы со списком исключений (в данном случае) можно обойтись только строковыми функциями. Я обычно делаю так:



Код:

Код: Выделить всё

strExclude = "Иванова;Петров;Сидоров;"
strUser = "Иванов"
If InStr(1, strExclude, strUser & ";", vbTextCompare) = 0 Then
    WScript.Echo "Не является исключением."
Else
    WScript.Echo "Является исключением."
End If
Ответить

Вернуться в «Microsoft Windows NT/2000/2003»