Solved

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

Posted on 2008-06-19
5
1,858 Views
Last Modified: 2008-10-28
I need a vbscript that will look at a spreadsheet and then delete those accounts from Active Directory based on the user logon.
0
Comment
Question by:WNottsC
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
5 Comments
 
LVL 24

Accepted Solution

by:
purplepomegranite earned 500 total points
ID: 21820796
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
 
LVL 24

Expert Comment

by:purplepomegranite
ID: 22007922
Thanks for the points, but why the B-grade?

http://www.experts-exchange.com/help.jsp#hi97
0
 

Author Comment

by:WNottsC
ID: 22008005
The solution was very good but I did have to provide a few changes in order to get this fully functioning.
0
 
LVL 24

Expert Comment

by:purplepomegranite
ID: 22008017
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
 
LVL 6

Expert Comment

by:Ahmed Abdel Salam
ID: 22802688
I am looking for same request .. this script is not working

any update on this ??
0

Featured Post

How our DevOps Teams Maximize Uptime

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us. Read the use case whitepaper.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
ejb wildfly example 2 75
How do I fix this situation in GIT? 2 32
Java Inheritance super keyword use 8 40
Ruby or Python 7 63
When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
Today, the web development industry is booming, and many people consider it to be their vocation. The question you may be asking yourself is – how do I become a web developer?
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question