Re: Add all users to a grouop - Help please




"Cmor" <cmor1701d@xxxxxxxxx> wrote in message
news:18491687-32c2-4884-8c3a-668c819ecaee@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Hi,

I need to all all domain users to a group. I previously wrote a
script that read all the members of Group1 and added them in this new
group. I re-ran the script for Group2 when asked. That took care of
90% of our users. Now I have been asked to add all users to this
group. To the end I wrote the following code. It is not working and
I'm not sure why. As I am not a domain admin I have to get someone
else to run the script. Please let me know where I am going wrong and
what needs to be done to 'add all domain users to groupX".

TIA --

CODE:
Option Explicit
On Error Resume Next
Const ForReading = 1, ForWriting = 2, ForAppending = 8

Dim objConn, objComm, objRS, objUser, objFSO, oLogFile
Dim strBase, strFilter, strAttrs, strScope, strUser, objNewGroup
'**********************************************************************
'Set the ADO search criteria
'**********************************************************************
strBase = "<LDAP://dc=mydomain,dc=com>;"
strFilter = "(&(objectclass=user)(objectcategory=person));"
strAttrs = "ADsPath;"
strScope = "Subtree"

Set objFSO = CreateObject ("Scripting.FileSystemObject")
Set oLogFile = objFSO.OpenTextFile ("M:\scripts\DNS
\DWA_All_GROUP_Report.txt", ForWriting, True)
oLogFile.WriteLine vbTab & "DWA Group Changes made on: " & Now

set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open
Set objComm = CreateObject("ADODB.Command")
Set objComm.ActiveConnection = objConn
objComm.CommandText = strBase & strFilter & strAttrs & strScope
objComm.Properties("Page Size") = 1000
Set objNewGroup = GetObject("LDAP://
CN=DWA,OU=No5,OU=No4,OU=No3,OU=No2,OU=Departments,DC=mydomain,DC=com")
Set objRS = objComm.Execute()
While not objRS.EOF
Set objUser = GetObject( objRS.Fields.Item("ADsPath").Value )
objNewGroup.Add "LDAP://"; & objUser.distinguishedName
objNewGroup.SetInfo
If Err.Number <> 0 Then
oLogFile.WriteLine vbTab & objUser.name & " Already exists"
Else
oLogFile.WriteLine vbTab & objUser.name & " Added"
End If
objRS.MoveNext
Wend
oLogFile.Close
WScript.Quit

Using "On Error Resume Next" makes it hard to troubleshoot. One thought.
When you use the Add method of the group object there is no need to invoke
the SetInfo method. I would use the IsMember method to check first if the
user is a member. Also, there is no need to bind to the user object. You
could just pass the value of the ADsPath attribute you retrieved to both the
IsMember and Add methods of the group object. The extra binding slows down
the script considerably.

I would suggest not using "On Error Resume Next" and using code similar to:
==========
Dim strADsPath

While not objRS.EOF
strADsPath = objRS.Fields.Item("ADsPath").Value
If (objNewGroup.IsMember(strADsPath) = False) Then
objNewGroup.Add(strADsPath)
oLogFile.WriteLine vbTab & objUser.name & " Added"
Else
oLogFile.WriteLine vbTab & objUser.name & " Already exists"
End If
objRS.MoveNext
Wend

--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
--


.



Relevant Pages

  • Re: users have gray hair in Domain Users group
    ... The members of domain users group in both of the tree domains have ... when I use the below script to enumerate the membership of the ... domain users group in each of the domains, ... any reasons why I cannot enumerate the Domain Local group? ...
    (microsoft.public.win2000.active_directory)
  • Re: users have gray hair in Domain Users group
    ... The members of domain users group in both of the tree domains have ... when I use the below script to enumerate the membership of the ... domain users group in each of the domains, ... any reasons why I cannot enumerate the Domain Local group? ...
    (microsoft.public.win2000.active_directory)
  • Re: Add all users to a grouop - Help please
    ... I need to all all domain users to a group. ... I re-ran the script for Group2 when asked. ... When you are done you will have two groups with exactly the same members. ... "Domain users" will contain all accounts in the domain, ...
    (microsoft.public.scripting.vbscript)
  • Re: Error using LDAP query
    ... If your clients are XP, they have the ADSystemInfo object, so don't worry ... Most likely all of your users have "Domain Users" as their ... member of at least 2 other groups, ... Your script runs without error for me when I am logged into a ...
    (microsoft.public.windows.server.scripting)
  • Re: Listing users from "Domain Users" group using AD query
    ... I want to know how to script listing of users in the "Domain Users" ... I've tried binding to the object and asking for the "members" entry ... but in the 'primaryGroupID' attribute on the user ...
    (microsoft.public.windows.server.scripting)