• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 418
  • Last Modified:

Dump computer accounts into a text file

Hi Experts.  I know this is easy but I have tried to do it on my own and haven't been successful.  I suck at scripting so please be patient.

I need to dump the computer accounts in my domain to a text file.  I am not sure how to write or run this.  Thank you for your help.
  • 5
1 Solution
Install an ldapsearch utility if you don't already have one.  You can get a free one from cygwin.com.  Then you can simply query AD using ldapsearch like so:

ldapsearch -H ldap://server -D username -x -w password -b ou=Workstations,dc=mycompany,dc=com "(objectclass=computer)" "cn" > computers.txt

Obviously, you'll have to look up some of those query parameters from your own AD server.  Configurations vary company to company.
samiam41Author Commented:
Thanks!  That gives me some place to start from.  I will let you know how it goes.
Lee W, MVPTechnology and Business Process AdvisorCommented:
Or, on a DC, type:


Of course, that won't just get the workstations, that will get every computer in the domain.

However, you can still use DSQUERY to get computers in a specific OU if you want to.

More info on DSQUERY
Free recovery tool for Microsoft Active Directory

Veeam Explorer for Microsoft Active Directory provides fast and reliable object-level recovery for Active Directory from a single-pass, agentless backup or storage snapshot — without the need to restore an entire virtual machine or use third-party tools.

samiam41Author Commented:
leew > I don't have access to the DC from where I am.  

I am still working on this and will update later this morning.
samiam41Author Commented:
On the dsquery, maybe I am missing something (wouldn't doubt it) but this looks like it will provide OU's in the domain.

dsquery ou [{<StartNode> | forestroot | domainroot}] [-o {dn | rdn}][-scope {subtree | onelevel | base}][-name <Name] [-desc <Description>] [{-s <Server> | -d <Domain>}] [-u <UserName>] [-p {<Password> | *}] [-q] [-r] [-gc] [-limit <NumberOfObjects>] [{-uc | -uco | -uci}]
samiam41Author Commented:
I found my old post that had the script I needed.

Dim counter
'Create New excel workbook
Set Excel = CreateObject("Excel.Application")
Excel.Visible = True
counter =1 'init to first cell
Function DoRecursive(strObjectDN)
  'Retrieve a list of OU's for this level
 Set oneLevelOU= GetObject("LDAP://" & strObjectDN)
 For Each OU in oneLevelOU
'if ou is computers then add to
 If InStr(1,ou.name,"Computers")>0 Then 
Set objOU = GetObject("LDAP://" &  OU.name & "," & strObjectDN)
objOU.Filter = Array("Computer")
For Each objComputer in objOU
       Excel.Cells(counter,1).Value = objComputer.CN
           Excel.Cells(counter,2).Value = "LDAP://" &  OU.name & "," & strObjectDN
       counter =counter +1
 End If
    DoRecursive( OU.name & "," & strObjectDN)
End Function

Open in new window

samiam41Author Commented:
Thanks for your help.  I never used your suggestion put it gave me an additional resource to try and I will accept your answer.  Take care!


Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now