Нужен VBScript для отображения отключенных учетных записей - PullRequest
0 голосов
/ 12 июня 2018

Следующий скрипт проверяет локальные компьютеры на наличие неактивных (90 дней и более) учетных записей и отключает их.Сценарий работает нормально, но в нем перечислены все отключенные учетные записи каждый раз, когда выполняется.Мне нужно только перечислить учетные записи, которые были отключены в тот день, когда был выполнен.

Option Explicit
Dim objNetwork, strComputer, objComputer, objUser, dtmLast, objGroup, ObjGroupDict
Dim FSO, OutPutFile

Set FSO = CreateObject("Scripting.FileSystemObject")

'1 = reading, 2 = writing, and 8 = appending. The third parameter is a
'boolean true means a new file can be created if it doesn't exist. False
'means a new file cannot be created.
Set OutPutFile = FSO.OpenTextFile("C:\Test\Result.log", 8, True)

'Bind to the local computer.
Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("WinNT://" & strComputer & ",computer")

'Enumerate all users.
objComputer.Filter = Array("user")
For Each objUser In objComputer
    Set ObjGroupDict = CreateMemberOfObject(objUser)

    If ((Left(objUser.Name,3) <> "au_") And (CBool(ObjGroupDict.Exists("Administrators") = False))) Then
        'Trap error if user never logged in.
        On  Error Resume Next
        dtmLast = objUser.lastLogin
        If (Err.Number <> 0) Then
            dtmLast = #1/1/1970#
        End If

        On  Error GoTo 0

        'Check if last logon was more than 90 days in the past.
        If (DateDiff("d", dtmLast, Now()) > 90) Then
            'Disable the user.
            objUser.AccountDisabled = True
            objUser.SetInfo

            OutPutFile.WriteLine(Now & " " & strComputer & " " & Wscript.ScriptName & " " & objUser.Name & " " & "Disabled")
            'MsgBox objUser.Name

            Set FSO = Nothing
        End If
    End If
Next

Function CreateMemberOfObject(objUser)
    'Given a domain name and username, returns a Dictionary
    'object of groups to which the user is a member of.
    'Inputs: objUser - User Object

    Set CreateMemberOfObject = CreateObject("Scripting.Dictionary")
    CreateMemberOfObject.CompareMode = vbTextCompare
    Dim objGroup
    For Each objGroup In objUser.Groups
        CreateMemberOfObject.Add objGroup.Name, "-"
    Next
End Function

1 Ответ

0 голосов
/ 13 июня 2018

Вы отключаете все учетные записи, чей последний вход был более 90 дней назад, даже если учетная запись уже отключена.Добавьте условие, которое соответствует только учетным записям, которые не отключены, и код будет делать то, что вы хотите:

If DateDiff("d", dtmLast, Now) > 90 <b>And Not objUser.AccountDisabled</b> Then
    ...
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...