How do I delete user account from AD using vbscript and a spreadsheet with the accounts to remove

I need a vbscript that will look at a spreadsheet and then delete those accounts from Active Directory based on the user logon.
WNottsCAsked:
Who is Participating?
 
purplepomegraniteCommented:
The attached should do what you want.

I have tested the Excel code part (just change the variables at the beginning of the script for your needs), but I have been unable to check the AD part due to not being on a domain right now (or having access to a lab domain), so this part needs testing.

It should work - it was taken from another script to delete user accounts that worked.  Let me know!
strSourceWorkbook="E:\ee\AD\Delete AD Accounts from Excel List\test.xls" ' The workbook containing the account list
strSourceSheet="Sheet1" ' Set this to the name of the sheet containing the username list
rngUsername="B2" ' Set this to the first cell containing username in Excel
 
On Error Resume Next
Const ADS_PROPERTY_DELETE = 4
Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D
 
' Initialise Excel
set oExcel=CreateObject("excel.application")
if Err.Number<>0 then
	Err.Clear
	WScript.Echo "Failed to open Excel"
	WScript.Quit
end if
oExcel.Visible=false
oExcel.DisplayAlerts=false ' Don't show any dialog box prompts
 
' Initialise connection
set adoCon = CreateObject("ADODB.Connection")
set adoCmd =   CreateObject("ADODB.Command")
adoCon.Provider = "ADsDSOObject"
adoCon.Open "Active Directory Provider"
set adoCmd.ActiveConnection = adoCon
adoCmd.Properties("Page Size") = 1000
adoCmd.Properties("Timeout") = 30
adoCmd.Properties("Cache Results") = False
 
' Obtain usernames from Excel file
set srcWorkbook=oExcel.Workbooks.Open(strSourceWorkBook)
if Err.Number=0 then
	i=0
	while not srcWorkbook.Sheets(strSourceSheet).Range(rngUsername).Offset(i).Value=""
		strUsername=srcWorkbook.Sheets(strSourceSheet).Range(rngUsername).Offset(i).Value
		wsclript.echo "Deleting user " & strUserName
		DeleteUser strUsername
		i=i+1
	wend
	srcWorkbook.Close
else
	wscript.echo "Couldn't open workbook: " & Err.Description
	Err.Clear
end if
oExcel.Quit
 
' Close connection
adoRec.Close
set adoRec = Nothing
adoCon.Close
set adoCon = Nothing
 
 
sub DeleteUser(strUsername)
	set objRootDSE = GetObject("LDAP://RootDSE")
	strDNSDomain = objRootDSE.Get("defaultNamingContext")
	strFilter = "(&(SAMAccountType=805306368)(SAMAccountName=" & strUsername & "))"
	strFields = "distinguishedName, ADsPath"
 
	strQuery = "<LDAP://" & strDNSDomain & ">;" & strFilter & ";" & strFields & ";subtree"
	adoCmd.CommandText = strQuery
	set adoRec = adoCmd.Execute
	while not adoRec.EOF
	      set objUser = GetObject(adoRec.Fields("ADsPath").Value)
			wscript.echo "Deleting " & objRecordSet.Fields("distinguishedName").Value
			Set objUser = GetObject("LDAP://" & objRecordSet.Fields("distinguishedName").Value)
			objUser.Delete "user", "distinguishedName=" & objRecordSet.Fields("distinguishedName").Value
	      adoRec.MoveNext
	wend
end sub

Open in new window

0
 
purplepomegraniteCommented:
Thanks for the points, but why the B-grade?

http://www.experts-exchange.com/help.jsp#hi97
0
 
WNottsCAuthor Commented:
The solution was very good but I did have to provide a few changes in order to get this fully functioning.
0
 
purplepomegraniteCommented:
Thanks for clarifying.  Would it be possible to post the changes so that this question has a complete solution for anyone else looking for a similar function?  And also for my reference, of course! :-)
0
 
Ahmed Abdel SalamPh.D. CandidateCommented:
I am looking for same request .. this script is not working

any update on this ??
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.