Link to home
Start Free TrialLog in
Avatar of lovemask
lovemask

asked on

script to list all users profiles in computers in the active directory

i need to collect this information from my client computers in active directory 2003 for example :

Computer Name           Profile
client1                         user1
                                  user2
                                  user3

-------------------------------

also i need the script to get the computers from a text file.and the output  in .csv file.

Thank You
Avatar of lovemask
lovemask

ASKER

if its posible to know each profile size in mb in each computer that will be great.
thanks
Here you go just copy to TXT file customize and later save as .VBS


Const adVarChar = 200
Const MaxCharacters = 255
Const ForReading = 1
Const ForWriting = 2
Const ADS_SCOPE_SUBTREE = 2
Const FOR_WRITING = 2

'************************ Create Server List ****************************

set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists("Serverlist.txt") Then
	objFSO.DeleteFile("Serverlist.txt")
End IF
Set objFile = objFSO.CreateTextFile("Serverlist.txt", FOR_WRITING)
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCOmmand.ActiveConnection = objConnection
Set RootDse = GetObject( "LDAP://RootDse" )
strADSPath = "LDAP://" & RootDse.get( "DefaultNamingContext" )
objCommand.CommandText = _
	    "Select Name, Location from '" & strADSPath &_
		"' Where objectClass='computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

Do Until objRecordSet.EOF
    objFile.WriteLine objRecordSet.Fields("Name").Value
    objRecordSet.MoveNext
Loop



'***********************  Sort Server List  ******************************

Set DataList = CreateObject("ADOR.Recordset")
DataList.Fields.Append "ComputerName", adVarChar, MaxCharacters
DataList.Open

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("serverlist.txt", ForReading)

Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
    DataList.AddNew
    DataList("ComputerName") = strLine
    DataList.Update
Loop

objFile.Close

DataList.Sort = "ComputerName"

DataList.MoveFirst
Do Until DataList.EOF
    strText = strText & DataList.Fields.Item("ComputerName") & vbCrLf
    DataList.MoveNext
Loop

Set objFile = objFSO.OpenTextFile("serverlist.txt", ForWriting)

objFile.WriteLine strText
objFile.Close

Open in new window

Avatar of sirbounty
This should get what you're after...change the first two lines as appropriate for your input/output...
Const ComputerList = "C:\Computers.txt"
Const Output = "C:\Output.csv"
Const hklm=&h80000002

Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objOut : Set objOut = objFSO.CreateTextFile(Output)
Dim objFile : Set objFile = objFSO.OpenTextFile(ComputerList)
arrPCs = Split(objFile.ReadAll, vbNewLine)

For Each pc in arrPCs
  strDefProfile = GetProfilePath (pc)
  wscript.echo pc & vbTab & strDefProfile
  Set objFolder = objFSO.GetFolder ("\\" & pc & "\" & Replace(strDefProfile, ":\", "$\") )
  On Error Resume Next
  For each fld in objFolder.SubFolders
    objOut.Writeline pc & "," & fld & "," & fld.Size
  Next
Next

objOut.Close

Function GetProfilePath (strPC)
  strRegKey =  "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\"
  Dim wmiReg : Set wmiReg =GetObject("winmgmts:\\" & strPC & "\root\default:stdregprov")
  iRet=wmiReg.GetStringValue(hklm, strRegKey, "ProfilesDirectory", strValue)
  If iRet=0 Then
    GetProfilePath = strValue & "\"
  End If
End Function

Open in new window

Oops - didn't refresh.  Sorry about that.
And apparently read it a bit differently...
I've extracted this script from MS Tech Net you can find more in there
http://technet.microsoft.com/en-us/scriptcenter/default.aspx 
About the conversion to CSV later you can find it here very short.
http://www.colinwoodhouse.co.uk/txt-csv.htm
i am getting error in line 13 second script :

Set objFolder = objFSO.GetFolder ("\\" & pc & "\" & Replace(strDefProfile, ":\", "$\") )
What's the error?  If it's an access denied, you don't have admin permissions...
Do you got the error using what script?
the two scripts are working fine. thanks.. but i need 1 thing more which is:

for example if the client is down or unreachable .. i need the script to continue test the next client in the list ... ( On Error Resume next ). also if its possible to get the size of each profile.?


thank you
ASKER CERTIFIED SOLUTION
Avatar of sirbounty
sirbounty
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
thank you.. its perfect
Happy to have helped - thanks for the grade. :^)