' From the book "Active Directory, Third Edition"
' ISBN: 0-596-10173-2
'**********************************************************************
'How to unlock and enable a Active Directory user via arguments
' to this script
' Parameters should be <domain> <username>, where domain specifies
' a fully qualified AD domain like dc=mycorp,dc=com
'**********************************************************************
Option Explicit
Dim wshArgs, objUser, strOutput, arrSearchResults
On Error Resume Next
'**********************************************************************
'Get the arguments
'**********************************************************************
Set wshArgs = Wscript.Arguments
'**********************************************************************
'If no arguments passed in, then quit
'**********************************************************************
If wshArgs.Count = 0 Then
WScript.Echo "ERROR: No arguments passed in." & vbCrLf & vbCrLf _
& "Please use AD-UNLOCK <domain> <username>" & vbCrLf & vbCrLf
WScript.Quit
End If
'**********************************************************************
'Error checking of the arguments could go here if we wanted to
'**********************************************************************
'**********************************************************************
'Use SearchAD function from the end of Chapter 22 to scan the entire
'Active Directory for this user and return the ADsPath. If the search
'failed for whatever reason, then quit
'**********************************************************************
If Not SearchAD("LDAP://" & wshArgs(0), _
"(&(objectcategory=person)(objectClass=user)(sAMAccountName=" _
& wshArgs(1) & "))", "SubTree", "ADsPath", arrSearchResults) Then
WScript.Echo "ERROR: No users found." & vbCrLf & vbCrLf
WScript.Quit
Else
'**********************************************************************
'Attempt to bind to the first ADsPath specified in the array
'(as there should be only one)
'**********************************************************************
Set objUser = GetObject(arrSearchResults(0,0))
If Err Then
Wscript.Echo "Error: Could not bind to the following user: " & vbCrLf _
& vbCrLf & arrSearchResults(0,0) & vbCrLf & vbCrLf
WScript.Quit
Else
strOutput = "Connected to user " & arrSearchResults(0,0) & vbCrLf
End If
'**********************************************************************
'Attempt to enable the user (but don't quit if you fail)
'**********************************************************************
Err.Clear
objUser.AccountDisabled = False
objUser.SetInfo
If Err Then
strOutput = strOutput & vbTab & "Error: Could not enable the user." & vbCrLf
Else
strOutput = strOutput & vbTab & "User enabled." & vbCrLf
End If
'**********************************************************************
'Attempt to unlock the user
'**********************************************************************
Err.Clear
objUser.IsAccountLocked = False
objUser.SetInfo
If Err Then
strOutput = strOutput & vbTab & "Error: Could not unlock the user." & vbCrLf
Else
strOutput = strOutput & vbTab & "User unlocked." & vbCrLf
End If
WScript.Echo strOutput
End If
|