Click here to Skip to main content
12,827,730 members (46,932 online)

Visual Basic

 
GeneralRe: Listbox String to RichTextbox. Help Please! Pin
Gray_Ang3l24-Feb-13 14:29
memberGray_Ang3l24-Feb-13 14:29 
QuestionActive Directory Users OU Pin
dsj4122-Feb-13 9:14
memberdsj4122-Feb-13 9:14 
AnswerRe: Active Directory Users OU Pin
Dave Kreskowiak22-Feb-13 9:45
mvpDave Kreskowiak22-Feb-13 9:45 
GeneralRe: Active Directory Users OU Pin
dsj4124-Feb-13 12:20
memberdsj4124-Feb-13 12:20 
Added tags, thank you.
'=================================================================================
' Check all Active Directory accounts to determine what needs to be disabled. 
' If LastLogonTimeStamp is Null and object is older than specified date, it is 
' disabled and moved. If account has been used, but not within duration specified,
' it is disabled and moved. Does not move already disabled accounts
'==================================================================================

'==================================================================================
' Set Flag to enable the disabling and moving of unused accounts otherwise create
' log of accounts affected
' 1 - Will Disable and move accounts 
' 0 - Will create ouput log only 
bDisable=1 
 
 '=====================================================================================
' Accounts that haven't been logged in for this amount of days are selected 
iLogonDays=60 

'=======================================================================================
' LDAP Location of OUs to search for accounts 
' LDAP location format eg: "OU=Users,OU=Test" 
strSearchOU="OU=Users" 

'========================================================================================
' Search depth to find users 
' Use "OneLevel" for the specified OU only or "Subtree" to search all child OUs as well. 
strSearchDepth="OneLevel" 
 
 '========================================================================================
' Location of new OU to move disabled user accounts to 
' eg: "OU=Disabled_Accounts,OU=Test" 
strNewOU="OU=Disabled_Accounts" 

'=========================================================================================
' Log file and error log file path 
strLogPath=".\logs\" 
' Error log file name appended with date and .err extension) 
strErrorLog="DisabledAccounts_" 
' Output log file name with date and .log extension) 
strOutputLog="DisabledAccounts_" 
 
'==========================================================================================
sDate = Year(Now()) & Right("0" & Month(Now()), 2) & Right("0" & Day(Now()), 2)  
Set oFSO=CreateObject("Scripting.FileSystemObject") 
If Not oFSO.FolderExists(strLogPath) Then CreateFolder(strLogPath) 
Set output=oFSO.CreateTextFile(strLogPath & strOutputLog & sDate & ".log") 
Set errlog=oFSO.CreateTextFile(strLogPath & strErrorLog & sDate & ".err") 
output.WriteLine "Sam Account Name" &vbTab& "LDAP Path" &vbTab& "Last Logon Date" &vbTab& _
"Date Created" &vbTab& "Home Directory" 
errlog.WriteLine "Sam Account Name" &vbTab& "LDAP Path" &vbTab& "Problem" &vbTab& "Error" 

'===========================================================================================
Set rootDSE = GetObject("LDAP://rootDSE") 
Set objConnection = CreateObject("ADODB.Connection") 
objConnection.Open "Provider=ADsDSOObject;" 
Set ObjCommand = CreateObject("ADODB.Command") 
ObjCommand.ActiveConnection = objConnection 
ObjCommand.Properties("Page Size") = 10 
DSEroot=rootDSE.Get("DefaultNamingContext") 
 
Set objNewOU = GetObject("LDAP://" & strNewOU & "," & DSEroot) 
ObjCommand.CommandText = "<LDAP://" & strSearchOU & "," & DSEroot & _
">;(&(objectClass=User)(objectcategory=Person));adspath;" & strSearchDepth 
 
Set objRecordset = ObjCommand.Execute 
 
On Error Resume Next 
 
While Not objRecordset.EOF 
    LastLogon = Null 
    intLogonTime = Null 
 
    Set objUser=GetObject(objRecordset.fields("adspath")) 
 
    If DateDiff("d",objUser.WhenCreated,Now) > iLogonDays Then 
        Set objLogon=objUser.Get("lastlogontimestamp") 
        If Err.Number <> 0 Then 
            WriteError objUser, "Get LastLogon Failed" 
            DisableAccount objUser, "Never" 
        Else 
            intLogonTime = objLogon.HighPart * (2^32) + objLogon.LowPart 
            intLogonTime = intLogonTime / (60 * 10000000) 
            intLogonTime = intLogonTime / 1440 
            LastLogon=intLogonTime+#1/1/1601# 
 
            If DateDiff("d",LastLogon,Now) > iLogonDays Then 
                DisableAccount objUser, LastLogon 
            End If 
        End If 
    End If 
    WriteError objUser, "Unknown Error" 
    objRecordset.MoveNext 
Wend 
 
Sub CreateFolder( strPath ) 
    If Not oFSO.FolderExists( oFSO.GetParentFolderName(strPath) ) Then Call _
	CreateFolder( oFSO.GetParentFolderName(strPath) ) 
    oFSO.CreateFolder( strPath ) 
End Sub 
 
Sub DisableAccount( objUser, lastLogon ) 
    On Error Resume Next 
    If bDisable <> 0 Then 
        If objUser.accountdisabled=False Then 
            objUser.accountdisabled=True 
            objUser.SetInfo 
            WriteError objUser, "Disable Account Failed" 
            objNewOU.MoveHere objUser.adspath, "CN="&objUser.CN 
            WriteError objUser, "Account Move Failed" 
        Else 
            Err.Raise 1,,"Account already disabled. User not moved." 
            WriteError objUser, "Disable Account Failed" 
        End If 
    End If 
    output.WriteLine objUser.samaccountname &vbTab& objUser.adspath &vbTab& lastLogon &vbTab& _
	objUser.whencreated &vbTab& objUser.homedirectory 
End Sub 
 
Sub WriteError( objUser, strProblem ) 
    If Err.Number <> 0 Then 
        errlog.WriteLine objUser.samaccountname &vbTab& objUser.adspath &vbTab& strProblem &vbTab& _
		Replace(Err.Description,vbCrlf,"") 
        Err.Clear 
    End If 
End Sub

GeneralRe: Active Directory Users OU Pin
Dave Kreskowiak25-Feb-13 11:31
mvpDave Kreskowiak25-Feb-13 11:31 
GeneralRe: Active Directory Users OU Pin
dsj4126-Feb-13 1:14
memberdsj4126-Feb-13 1:14 
GeneralRe: Active Directory Users OU Pin
dsj415-Mar-13 2:43
memberdsj415-Mar-13 2:43 
QuestionVolume Button in Text to Speech Convertor Pin
sanju_na21-Feb-13 23:05
membersanju_na21-Feb-13 23:05 
QuestionHttpwebrequest + Socks5 Pin
mathisderaltefuchs20-Feb-13 22:49
membermathisderaltefuchs20-Feb-13 22:49 
AnswerRe: Httpwebrequest + Socks5 Pin
Richard MacCutchan21-Feb-13 0:00
mvpRichard MacCutchan21-Feb-13 0:00 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


Advertise | Privacy | Mobile
Web02 | 2.8.170326.1 | Last Updated 29 Mar 2017
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid