|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Deploying user list to workgroupThis should be easy but I am stumped.
How do I deploy, or copy, 150 user names to a 23 computer workgroup so I don't have to make 3,450 entries? 20 computers are 2K/SP4 and three are XP/SP2. All are on the same workgroup. Thanks, Tom okay, i wrote you a script that will do this for you.
requirements: - admin account on all workstations has same username/password (if not you'll have to run it locally from each machine) -must be able to resolve names of workstations -adds users to Power Users group, change to desired group if Power Users is wrong (search the code for Power Users and replace with group name you want) - on 1 workstation create the file members.txt located at c:\members.txt (this contains the names of all workstations you want the users added to - 1 name per line) - on the same workstation create the text file users.txt located at c:\users.txt (contains user accounts & their passwords - the format must be user,password 1 per line and no space after the comma unless you want the password to start with a space. - on the same workstation create the text file enjoy.txt open it and past the following code inside then save as "enjoy.vbs" with the quotes - Double click enjoy.vbs and come back later - a message will alert you when its done. 'START COPY On error resume next Set WSHShell = WScript.CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") members = "c:\members.txt" users = "c:\users.txt" Const ForReading = 1 strInputFile = members Set objTextStream = objFSO.OpenTextFile(strInputFile, ForReading) arrComputers = Split(objTextStream.ReadAll, vbCrLf) objTextStream.Close Set objTextFile = objFSO.OpenTextFile _ (users, ForReading) For Each strComputer In arrComputers Do Until objTextFile.AtEndOfStream acctInfo = objTextFile.Readline uP = Split(acctInfo, ",", -1, 1) Set colAccounts = GetObject("WinNT://" & strComputer & "") Set objUser = colAccounts.Create("user", uP(0)) objUser.SetPassword uP(1) objUser.SetInfo Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users,group") Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") objGroup.Add(objUseraDD.ADsPath) Loop Next wscript.echo "Accounts have been created" wscript.quit 'END COPY Hope this helps. Nick Show quoteHide quote "Goatbiker" wrote: > This should be easy but I am stumped. > > How do I deploy, or copy, 150 user names to a 23 computer workgroup so I > don't have to make 3,450 entries? 20 computers are 2K/SP4 and three are > XP/SP2. All are on the same workgroup. > > Thanks, > > Tom Thanks Nick. This will be a big help.
Show quoteHide quote "Nick" wrote: > okay, i wrote you a script that will do this for you. > > requirements: > - admin account on all workstations has same username/password (if not > you'll have to run it locally from each machine) > -must be able to resolve names of workstations > -adds users to Power Users group, change to desired group if Power Users is > wrong (search the code for Power Users and replace with group name you want) > - on 1 workstation create the file members.txt located at c:\members.txt > (this contains the names of all workstations you want the users added to - 1 > name per line) > - on the same workstation create the text file users.txt located at > c:\users.txt (contains user accounts & their passwords - the format must be > user,password 1 per line and no space after the comma unless you want > the password to start with a space. > - on the same workstation create the text file enjoy.txt open it and past > the following code inside then save as "enjoy.vbs" with the quotes > - Double click enjoy.vbs and come back later - a message will alert you when > its done. > > 'START COPY > > On error resume next > > Set WSHShell = WScript.CreateObject("WScript.Shell") > Set objFSO = CreateObject("Scripting.FileSystemObject") > > members = "c:\members.txt" > users = "c:\users.txt" > > Const ForReading = 1 > > strInputFile = members > > Set objTextStream = objFSO.OpenTextFile(strInputFile, ForReading) > arrComputers = Split(objTextStream.ReadAll, vbCrLf) > objTextStream.Close > > Set objTextFile = objFSO.OpenTextFile _ > (users, ForReading) > > For Each strComputer In arrComputers > > Do Until objTextFile.AtEndOfStream > acctInfo = objTextFile.Readline > > uP = Split(acctInfo, ",", -1, 1) > > Set colAccounts = GetObject("WinNT://" & strComputer & "") > Set objUser = colAccounts.Create("user", uP(0)) > objUser.SetPassword uP(1) > objUser.SetInfo > > Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users,group") > Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") > objGroup.Add(objUseraDD.ADsPath) > > > Loop > > Next > > wscript.echo "Accounts have been created" > > wscript.quit > 'END COPY > > Hope this helps. > > Nick > > > "Goatbiker" wrote: > > > This should be easy but I am stumped. > > > > How do I deploy, or copy, 150 user names to a 23 computer workgroup so I > > don't have to make 3,450 entries? 20 computers are 2K/SP4 and three are > > XP/SP2. All are on the same workgroup. > > > > Thanks, > > > > Tom Nick,
No Joy. Did as instructed, script runs and says "accounts have been created", but no accounts on computers. It will not deploy and it will not install the user to the computer it is on. Any thoughts? Tom Show quoteHide quote "Nick" wrote: > okay, i wrote you a script that will do this for you. > > requirements: > - admin account on all workstations has same username/password (if not > you'll have to run it locally from each machine) > -must be able to resolve names of workstations > -adds users to Power Users group, change to desired group if Power Users is > wrong (search the code for Power Users and replace with group name you want) > - on 1 workstation create the file members.txt located at c:\members.txt > (this contains the names of all workstations you want the users added to - 1 > name per line) > - on the same workstation create the text file users.txt located at > c:\users.txt (contains user accounts & their passwords - the format must be > user,password 1 per line and no space after the comma unless you want > the password to start with a space. > - on the same workstation create the text file enjoy.txt open it and past > the following code inside then save as "enjoy.vbs" with the quotes > - Double click enjoy.vbs and come back later - a message will alert you when > its done. > > 'START COPY > > On error resume next > > Set WSHShell = WScript.CreateObject("WScript.Shell") > Set objFSO = CreateObject("Scripting.FileSystemObject") > > members = "c:\members.txt" > users = "c:\users.txt" > > Const ForReading = 1 > > strInputFile = members > > Set objTextStream = objFSO.OpenTextFile(strInputFile, ForReading) > arrComputers = Split(objTextStream.ReadAll, vbCrLf) > objTextStream.Close > > Set objTextFile = objFSO.OpenTextFile _ > (users, ForReading) > > For Each strComputer In arrComputers > > Do Until objTextFile.AtEndOfStream > acctInfo = objTextFile.Readline > > uP = Split(acctInfo, ",", -1, 1) > > Set colAccounts = GetObject("WinNT://" & strComputer & "") > Set objUser = colAccounts.Create("user", uP(0)) > objUser.SetPassword uP(1) > objUser.SetInfo > > Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users,group") > Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") > objGroup.Add(objUseraDD.ADsPath) > > > Loop > > Next > > wscript.echo "Accounts have been created" > > wscript.quit > 'END COPY > > Hope this helps. > > Nick > > > "Goatbiker" wrote: > > > This should be easy but I am stumped. > > > > How do I deploy, or copy, 150 user names to a 23 computer workgroup so I > > don't have to make 3,450 entries? 20 computers are 2K/SP4 and three are > > XP/SP2. All are on the same workgroup. > > > > Thanks, > > > > Tom Tom-
I retested the script and it worked fine for me, unfortunately I guess that doesn't really matter since the goal is to get it working for you ;) Do you have any XP boxes where you're at? I'm guessing the reason it's working for me and not for you is I ran it on an XP box and possibly some of the code is not supported when run from 2000. If you want to verify this, open the script in notepad and put an appostrophe before the line on error resume next (should be like the first or second line in the script. Save it and then try running it - I bet you get an error (the on error resume next line basically supresses errors and the appostrophe comments out the line so you can see what's really going on). If my guess is right, then I think the script will still be able to update the 2000 boxes but it might just need to be run via windows xp. Would that be feasable or is there no way you can get a box set up with XP (if not I'll try to modify the script but I don't have a 2k box to test it on so it'll be a bit tricky). Please let me know, thanks. Nick Show quoteHide quote "Goatbiker" wrote: > Nick, > > No Joy. Did as instructed, script runs and says "accounts have been > created", but no accounts on computers. It will not deploy and it will not > install the user to the computer it is on. Any thoughts? > > Tom > > "Nick" wrote: > > > okay, i wrote you a script that will do this for you. > > > > requirements: > > - admin account on all workstations has same username/password (if not > > you'll have to run it locally from each machine) > > -must be able to resolve names of workstations > > -adds users to Power Users group, change to desired group if Power Users is > > wrong (search the code for Power Users and replace with group name you want) > > - on 1 workstation create the file members.txt located at c:\members.txt > > (this contains the names of all workstations you want the users added to - 1 > > name per line) > > - on the same workstation create the text file users.txt located at > > c:\users.txt (contains user accounts & their passwords - the format must be > > user,password 1 per line and no space after the comma unless you want > > the password to start with a space. > > - on the same workstation create the text file enjoy.txt open it and past > > the following code inside then save as "enjoy.vbs" with the quotes > > - Double click enjoy.vbs and come back later - a message will alert you when > > its done. > > > > 'START COPY > > > > On error resume next > > > > Set WSHShell = WScript.CreateObject("WScript.Shell") > > Set objFSO = CreateObject("Scripting.FileSystemObject") > > > > members = "c:\members.txt" > > users = "c:\users.txt" > > > > Const ForReading = 1 > > > > strInputFile = members > > > > Set objTextStream = objFSO.OpenTextFile(strInputFile, ForReading) > > arrComputers = Split(objTextStream.ReadAll, vbCrLf) > > objTextStream.Close > > > > Set objTextFile = objFSO.OpenTextFile _ > > (users, ForReading) > > > > For Each strComputer In arrComputers > > > > Do Until objTextFile.AtEndOfStream > > acctInfo = objTextFile.Readline > > > > uP = Split(acctInfo, ",", -1, 1) > > > > Set colAccounts = GetObject("WinNT://" & strComputer & "") > > Set objUser = colAccounts.Create("user", uP(0)) > > objUser.SetPassword uP(1) > > objUser.SetInfo > > > > Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users,group") > > Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") > > objGroup.Add(objUseraDD.ADsPath) > > > > > > Loop > > > > Next > > > > wscript.echo "Accounts have been created" > > > > wscript.quit > > 'END COPY > > > > Hope this helps. > > > > Nick > > > > > > "Goatbiker" wrote: > > > > > This should be easy but I am stumped. > > > > > > How do I deploy, or copy, 150 user names to a 23 computer workgroup so I > > > don't have to make 3,450 entries? 20 computers are 2K/SP4 and three are > > > XP/SP2. All are on the same workgroup. > > > > > > Thanks, > > > > > > Tom Nick,
That could be it. When I took the XPs off the list it deployed to the 2Ks. I am on my way for now. Tomorrow, I'll try your fix to see what it tells us. Thanks again. Tom Show quoteHide quote "Nick Staff" wrote: > Tom- > > I retested the script and it worked fine for me, unfortunately I guess that > doesn't really matter since the goal is to get it working for you ;) > > Do you have any XP boxes where you're at? I'm guessing the reason it's > working for me and not for you is I ran it on an XP box and possibly some of > the code is not supported when run from 2000. If you want to verify this, > open the script in notepad and put an appostrophe before the line on error > resume next (should be like the first or second line in the script. Save it > and then try running it - I bet you get an error (the on error resume next > line basically supresses errors and the appostrophe comments out the line so > you can see what's really going on). > > If my guess is right, then I think the script will still be able to update > the 2000 boxes but it might just need to be run via windows xp. Would that > be feasable or is there no way you can get a box set up with XP (if not I'll > try to modify the script but I don't have a 2k box to test it on so it'll be > a bit tricky). > > Please let me know, thanks. > > Nick > > "Goatbiker" wrote: > > > Nick, > > > > No Joy. Did as instructed, script runs and says "accounts have been > > created", but no accounts on computers. It will not deploy and it will not > > install the user to the computer it is on. Any thoughts? > > > > Tom > > > > "Nick" wrote: > > > > > okay, i wrote you a script that will do this for you. > > > > > > requirements: > > > - admin account on all workstations has same username/password (if not > > > you'll have to run it locally from each machine) > > > -must be able to resolve names of workstations > > > -adds users to Power Users group, change to desired group if Power Users is > > > wrong (search the code for Power Users and replace with group name you want) > > > - on 1 workstation create the file members.txt located at c:\members.txt > > > (this contains the names of all workstations you want the users added to - 1 > > > name per line) > > > - on the same workstation create the text file users.txt located at > > > c:\users.txt (contains user accounts & their passwords - the format must be > > > user,password 1 per line and no space after the comma unless you want > > > the password to start with a space. > > > - on the same workstation create the text file enjoy.txt open it and past > > > the following code inside then save as "enjoy.vbs" with the quotes > > > - Double click enjoy.vbs and come back later - a message will alert you when > > > its done. > > > > > > 'START COPY > > > > > > On error resume next > > > > > > Set WSHShell = WScript.CreateObject("WScript.Shell") > > > Set objFSO = CreateObject("Scripting.FileSystemObject") > > > > > > members = "c:\members.txt" > > > users = "c:\users.txt" > > > > > > Const ForReading = 1 > > > > > > strInputFile = members > > > > > > Set objTextStream = objFSO.OpenTextFile(strInputFile, ForReading) > > > arrComputers = Split(objTextStream.ReadAll, vbCrLf) > > > objTextStream.Close > > > > > > Set objTextFile = objFSO.OpenTextFile _ > > > (users, ForReading) > > > > > > For Each strComputer In arrComputers > > > > > > Do Until objTextFile.AtEndOfStream > > > acctInfo = objTextFile.Readline > > > > > > uP = Split(acctInfo, ",", -1, 1) > > > > > > Set colAccounts = GetObject("WinNT://" & strComputer & "") > > > Set objUser = colAccounts.Create("user", uP(0)) > > > objUser.SetPassword uP(1) > > > objUser.SetInfo > > > > > > Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users,group") > > > Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") > > > objGroup.Add(objUseraDD.ADsPath) > > > > > > > > > Loop > > > > > > Next > > > > > > wscript.echo "Accounts have been created" > > > > > > wscript.quit > > > 'END COPY > > > > > > Hope this helps. > > > > > > Nick > > > > > > > > > "Goatbiker" wrote: > > > > > > > This should be easy but I am stumped. > > > > > > > > How do I deploy, or copy, 150 user names to a 23 computer workgroup so I > > > > don't have to make 3,450 entries? 20 computers are 2K/SP4 and three are > > > > XP/SP2. All are on the same workgroup. > > > > > > > > Thanks, > > > > > > > > Tom Nick,
I'll try to stop bothering you with this, but I can only deploy to one computer at a time, no matter how many are on the members list. Each computer name (the network ID) is on a seperate line. Any clues? Tom Show quoteHide quote "Nick Staff" wrote: > Tom- > > I retested the script and it worked fine for me, unfortunately I guess that > doesn't really matter since the goal is to get it working for you ;) > > Do you have any XP boxes where you're at? I'm guessing the reason it's > working for me and not for you is I ran it on an XP box and possibly some of > the code is not supported when run from 2000. If you want to verify this, > open the script in notepad and put an appostrophe before the line on error > resume next (should be like the first or second line in the script. Save it > and then try running it - I bet you get an error (the on error resume next > line basically supresses errors and the appostrophe comments out the line so > you can see what's really going on). > > If my guess is right, then I think the script will still be able to update > the 2000 boxes but it might just need to be run via windows xp. Would that > be feasable or is there no way you can get a box set up with XP (if not I'll > try to modify the script but I don't have a 2k box to test it on so it'll be > a bit tricky). > > Please let me know, thanks. > > Nick > > "Goatbiker" wrote: > > > Nick, > > > > No Joy. Did as instructed, script runs and says "accounts have been > > created", but no accounts on computers. It will not deploy and it will not > > install the user to the computer it is on. Any thoughts? > > > > Tom > > > > "Nick" wrote: > > > > > okay, i wrote you a script that will do this for you. > > > > > > requirements: > > > - admin account on all workstations has same username/password (if not > > > you'll have to run it locally from each machine) > > > -must be able to resolve names of workstations > > > -adds users to Power Users group, change to desired group if Power Users is > > > wrong (search the code for Power Users and replace with group name you want) > > > - on 1 workstation create the file members.txt located at c:\members.txt > > > (this contains the names of all workstations you want the users added to - 1 > > > name per line) > > > - on the same workstation create the text file users.txt located at > > > c:\users.txt (contains user accounts & their passwords - the format must be > > > user,password 1 per line and no space after the comma unless you want > > > the password to start with a space. > > > - on the same workstation create the text file enjoy.txt open it and past > > > the following code inside then save as "enjoy.vbs" with the quotes > > > - Double click enjoy.vbs and come back later - a message will alert you when > > > its done. > > > > > > 'START COPY > > > > > > On error resume next > > > > > > Set WSHShell = WScript.CreateObject("WScript.Shell") > > > Set objFSO = CreateObject("Scripting.FileSystemObject") > > > > > > members = "c:\members.txt" > > > users = "c:\users.txt" > > > > > > Const ForReading = 1 > > > > > > strInputFile = members > > > > > > Set objTextStream = objFSO.OpenTextFile(strInputFile, ForReading) > > > arrComputers = Split(objTextStream.ReadAll, vbCrLf) > > > objTextStream.Close > > > > > > Set objTextFile = objFSO.OpenTextFile _ > > > (users, ForReading) > > > > > > For Each strComputer In arrComputers > > > > > > Do Until objTextFile.AtEndOfStream > > > acctInfo = objTextFile.Readline > > > > > > uP = Split(acctInfo, ",", -1, 1) > > > > > > Set colAccounts = GetObject("WinNT://" & strComputer & "") > > > Set objUser = colAccounts.Create("user", uP(0)) > > > objUser.SetPassword uP(1) > > > objUser.SetInfo > > > > > > Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users,group") > > > Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") > > > objGroup.Add(objUseraDD.ADsPath) > > > > > > > > > Loop > > > > > > Next > > > > > > wscript.echo "Accounts have been created" > > > > > > wscript.quit > > > 'END COPY > > > > > > Hope this helps. > > > > > > Nick > > > > > > > > > "Goatbiker" wrote: > > > > > > > This should be easy but I am stumped. > > > > > > > > How do I deploy, or copy, 150 user names to a 23 computer workgroup so I > > > > don't have to make 3,450 entries? 20 computers are 2K/SP4 and three are > > > > XP/SP2. All are on the same workgroup. > > > > > > > > Thanks, > > > > > > > > Tom Tom-
You are not bothering me in the least - if anything it's my fault for giving you code that doesn't work right. I don't know why I did this, but when I initially tested the script I didn't use multiple computer names, I just tested the local machine then ran it again for a remote machine. After your post tonight I tried using multiple machines in the members.txt and it didn't work for me either. I have made the neccesary changes though and now it works. Here is the new code: On error resume next Set WSHShell = WScript.CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") members = "c:\members.txt" users = "c:\users.txt" Const ForReading = 1 Set objMembers = objFSO.OpenTextFile _ (members, ForReading) Do Until objMembers.AtEndOfStream StrComputer = objmembers.Readline Set objTextFile = objFSO.OpenTextFile _ (users, ForReading) Do Until objTextFile.AtEndOfStream acctInfo = objTextFile.Readline uP = Split(acctInfo, ",", -1, 1) Set colAccounts = GetObject("WinNT://" & strComputer & "") Set objUser = colAccounts.Create("user", uP(0)) objUser.SetPassword uP(1) objUser.SetInfo Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users,group") Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") objGroup.Add(objUseraDD.ADsPath) Loop Loop wscript.echo "Accounts have been created" wscript.quit Show quoteHide quote "Goatbiker" wrote: > Nick, > > I'll try to stop bothering you with this, but I can only deploy to one > computer at a time, no matter how many are on the members list. Each > computer name (the network ID) is on a seperate line. Any clues? > > Tom > > "Nick Staff" wrote: > > > Tom- > > > > I retested the script and it worked fine for me, unfortunately I guess that > > doesn't really matter since the goal is to get it working for you ;) > > > > Do you have any XP boxes where you're at? I'm guessing the reason it's > > working for me and not for you is I ran it on an XP box and possibly some of > > the code is not supported when run from 2000. If you want to verify this, > > open the script in notepad and put an appostrophe before the line on error > > resume next (should be like the first or second line in the script. Save it > > and then try running it - I bet you get an error (the on error resume next > > line basically supresses errors and the appostrophe comments out the line so > > you can see what's really going on). > > > > If my guess is right, then I think the script will still be able to update > > the 2000 boxes but it might just need to be run via windows xp. Would that > > be feasable or is there no way you can get a box set up with XP (if not I'll > > try to modify the script but I don't have a 2k box to test it on so it'll be > > a bit tricky). > > > > Please let me know, thanks. > > > > Nick > > > > "Goatbiker" wrote: > > > > > Nick, > > > > > > No Joy. Did as instructed, script runs and says "accounts have been > > > created", but no accounts on computers. It will not deploy and it will not > > > install the user to the computer it is on. Any thoughts? > > > > > > Tom > > > > > > "Nick" wrote: > > > > > > > okay, i wrote you a script that will do this for you. > > > > > > > > requirements: > > > > - admin account on all workstations has same username/password (if not > > > > you'll have to run it locally from each machine) > > > > -must be able to resolve names of workstations > > > > -adds users to Power Users group, change to desired group if Power Users is > > > > wrong (search the code for Power Users and replace with group name you want) > > > > - on 1 workstation create the file members.txt located at c:\members.txt > > > > (this contains the names of all workstations you want the users added to - 1 > > > > name per line) > > > > - on the same workstation create the text file users.txt located at > > > > c:\users.txt (contains user accounts & their passwords - the format must be > > > > user,password 1 per line and no space after the comma unless you want > > > > the password to start with a space. > > > > - on the same workstation create the text file enjoy.txt open it and past > > > > the following code inside then save as "enjoy.vbs" with the quotes > > > > - Double click enjoy.vbs and come back later - a message will alert you when > > > > its done. > > > > > > > > 'START COPY > > > > > > > > On error resume next > > > > > > > > Set WSHShell = WScript.CreateObject("WScript.Shell") > > > > Set objFSO = CreateObject("Scripting.FileSystemObject") > > > > > > > > members = "c:\members.txt" > > > > users = "c:\users.txt" > > > > > > > > Const ForReading = 1 > > > > > > > > strInputFile = members > > > > > > > > Set objTextStream = objFSO.OpenTextFile(strInputFile, ForReading) > > > > arrComputers = Split(objTextStream.ReadAll, vbCrLf) > > > > objTextStream.Close > > > > > > > > Set objTextFile = objFSO.OpenTextFile _ > > > > (users, ForReading) > > > > > > > > For Each strComputer In arrComputers > > > > > > > > Do Until objTextFile.AtEndOfStream > > > > acctInfo = objTextFile.Readline > > > > > > > > uP = Split(acctInfo, ",", -1, 1) > > > > > > > > Set colAccounts = GetObject("WinNT://" & strComputer & "") > > > > Set objUser = colAccounts.Create("user", uP(0)) > > > > objUser.SetPassword uP(1) > > > > objUser.SetInfo > > > > > > > > Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users,group") > > > > Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") > > > > objGroup.Add(objUseraDD.ADsPath) > > > > > > > > > > > > Loop > > > > > > > > Next > > > > > > > > wscript.echo "Accounts have been created" > > > > > > > > wscript.quit > > > > 'END COPY > > > > > > > > Hope this helps. > > > > > > > > Nick > > > > > > > > > > > > "Goatbiker" wrote: > > > > > > > > > This should be easy but I am stumped. > > > > > > > > > > How do I deploy, or copy, 150 user names to a 23 computer workgroup so I > > > > > don't have to make 3,450 entries? 20 computers are 2K/SP4 and three are > > > > > XP/SP2. All are on the same workgroup. > > > > > > > > > > Thanks, > > > > > > > > > > Tom Pure Joy! Works like a charm.
Thank You, Tom Show quoteHide quote "Nick Staff" wrote: > Tom- > > You are not bothering me in the least - if anything it's my fault for giving > you code that doesn't work right. I don't know why I did this, but when I > initially tested the script I didn't use multiple computer names, I just > tested the local machine then ran it again for a remote machine. After your > post tonight I tried using multiple machines in the members.txt and it didn't > work for me either. I have made the neccesary changes though and now it > works. Here is the new code: > > On error resume next > > Set WSHShell = WScript.CreateObject("WScript.Shell") > Set objFSO = CreateObject("Scripting.FileSystemObject") > > members = "c:\members.txt" > users = "c:\users.txt" > > Const ForReading = 1 > > Set objMembers = objFSO.OpenTextFile _ > (members, ForReading) > > Do Until objMembers.AtEndOfStream > StrComputer = objmembers.Readline > > Set objTextFile = objFSO.OpenTextFile _ > (users, ForReading) > > Do Until objTextFile.AtEndOfStream > acctInfo = objTextFile.Readline > > uP = Split(acctInfo, ",", -1, 1) > > Set colAccounts = GetObject("WinNT://" & strComputer & "") > Set objUser = colAccounts.Create("user", uP(0)) > objUser.SetPassword uP(1) > objUser.SetInfo > > Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users,group") > Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") > objGroup.Add(objUseraDD.ADsPath) > > Loop > > Loop > > wscript.echo "Accounts have been created" > > wscript.quit > > "Goatbiker" wrote: > > > Nick, > > > > I'll try to stop bothering you with this, but I can only deploy to one > > computer at a time, no matter how many are on the members list. Each > > computer name (the network ID) is on a seperate line. Any clues? > > > > Tom > > > > "Nick Staff" wrote: > > > > > Tom- > > > > > > I retested the script and it worked fine for me, unfortunately I guess that > > > doesn't really matter since the goal is to get it working for you ;) > > > > > > Do you have any XP boxes where you're at? I'm guessing the reason it's > > > working for me and not for you is I ran it on an XP box and possibly some of > > > the code is not supported when run from 2000. If you want to verify this, > > > open the script in notepad and put an appostrophe before the line on error > > > resume next (should be like the first or second line in the script. Save it > > > and then try running it - I bet you get an error (the on error resume next > > > line basically supresses errors and the appostrophe comments out the line so > > > you can see what's really going on). > > > > > > If my guess is right, then I think the script will still be able to update > > > the 2000 boxes but it might just need to be run via windows xp. Would that > > > be feasable or is there no way you can get a box set up with XP (if not I'll > > > try to modify the script but I don't have a 2k box to test it on so it'll be > > > a bit tricky). > > > > > > Please let me know, thanks. > > > > > > Nick > > > > > > "Goatbiker" wrote: > > > > > > > Nick, > > > > > > > > No Joy. Did as instructed, script runs and says "accounts have been > > > > created", but no accounts on computers. It will not deploy and it will not > > > > install the user to the computer it is on. Any thoughts? > > > > > > > > Tom > > > > > > > > "Nick" wrote: > > > > > > > > > okay, i wrote you a script that will do this for you. > > > > > > > > > > requirements: > > > > > - admin account on all workstations has same username/password (if not > > > > > you'll have to run it locally from each machine) > > > > > -must be able to resolve names of workstations > > > > > -adds users to Power Users group, change to desired group if Power Users is > > > > > wrong (search the code for Power Users and replace with group name you want) > > > > > - on 1 workstation create the file members.txt located at c:\members.txt > > > > > (this contains the names of all workstations you want the users added to - 1 > > > > > name per line) > > > > > - on the same workstation create the text file users.txt located at > > > > > c:\users.txt (contains user accounts & their passwords - the format must be > > > > > user,password 1 per line and no space after the comma unless you want > > > > > the password to start with a space. > > > > > - on the same workstation create the text file enjoy.txt open it and past > > > > > the following code inside then save as "enjoy.vbs" with the quotes > > > > > - Double click enjoy.vbs and come back later - a message will alert you when > > > > > its done. > > > > > > > > > > 'START COPY > > > > > > > > > > On error resume next > > > > > > > > > > Set WSHShell = WScript.CreateObject("WScript.Shell") > > > > > Set objFSO = CreateObject("Scripting.FileSystemObject") > > > > > > > > > > members = "c:\members.txt" > > > > > users = "c:\users.txt" > > > > > > > > > > Const ForReading = 1 > > > > > > > > > > strInputFile = members > > > > > > > > > > Set objTextStream = objFSO.OpenTextFile(strInputFile, ForReading) > > > > > arrComputers = Split(objTextStream.ReadAll, vbCrLf) > > > > > objTextStream.Close > > > > > > > > > > Set objTextFile = objFSO.OpenTextFile _ > > > > > (users, ForReading) > > > > > > > > > > For Each strComputer In arrComputers > > > > > > > > > > Do Until objTextFile.AtEndOfStream > > > > > acctInfo = objTextFile.Readline > > > > > > > > > > uP = Split(acctInfo, ",", -1, 1) > > > > > > > > > > Set colAccounts = GetObject("WinNT://" & strComputer & "") > > > > > Set objUser = colAccounts.Create("user", uP(0)) > > > > > objUser.SetPassword uP(1) > > > > > objUser.SetInfo > > > > > > > > > > Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users,group") > > > > > Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") > > > > > objGroup.Add(objUseraDD.ADsPath) > > > > > > > > > > > > > > > Loop > > > > > > > > > > Next > > > > > > > > > > wscript.echo "Accounts have been created" > > > > > > > > > > wscript.quit > > > > > 'END COPY > > > > > > > > > > Hope this helps. > > > > > > > > > > Nick > > > > > > > > > > > > > > > "Goatbiker" wrote: > > > > > > > > > > > This should be easy but I am stumped. > > > > > > > > > > > > How do I deploy, or copy, 150 user names to a 23 computer workgroup so I > > > > > > don't have to make 3,450 entries? 20 computers are 2K/SP4 and three are > > > > > > XP/SP2. All are on the same workgroup. > > > > > > > > > > > > Thanks, > > > > > > > > > > > > Tom Excellent, I'm very happy - thanks for letting me know!
Show quoteHide quote "Goatbiker" wrote: > Pure Joy! Works like a charm. > > Thank You, > > Tom > > "Nick Staff" wrote: > > > Tom- > > > > You are not bothering me in the least - if anything it's my fault for giving > > you code that doesn't work right. I don't know why I did this, but when I > > initially tested the script I didn't use multiple computer names, I just > > tested the local machine then ran it again for a remote machine. After your > > post tonight I tried using multiple machines in the members.txt and it didn't > > work for me either. I have made the neccesary changes though and now it > > works. Here is the new code: > > > > On error resume next > > > > Set WSHShell = WScript.CreateObject("WScript.Shell") > > Set objFSO = CreateObject("Scripting.FileSystemObject") > > > > members = "c:\members.txt" > > users = "c:\users.txt" > > > > Const ForReading = 1 > > > > Set objMembers = objFSO.OpenTextFile _ > > (members, ForReading) > > > > Do Until objMembers.AtEndOfStream > > StrComputer = objmembers.Readline > > > > Set objTextFile = objFSO.OpenTextFile _ > > (users, ForReading) > > > > Do Until objTextFile.AtEndOfStream > > acctInfo = objTextFile.Readline > > > > uP = Split(acctInfo, ",", -1, 1) > > > > Set colAccounts = GetObject("WinNT://" & strComputer & "") > > Set objUser = colAccounts.Create("user", uP(0)) > > objUser.SetPassword uP(1) > > objUser.SetInfo > > > > Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users,group") > > Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") > > objGroup.Add(objUseraDD.ADsPath) > > > > Loop > > > > Loop > > > > wscript.echo "Accounts have been created" > > > > wscript.quit > > > > "Goatbiker" wrote: > > > > > Nick, > > > > > > I'll try to stop bothering you with this, but I can only deploy to one > > > computer at a time, no matter how many are on the members list. Each > > > computer name (the network ID) is on a seperate line. Any clues? > > > > > > Tom > > > > > > "Nick Staff" wrote: > > > > > > > Tom- > > > > > > > > I retested the script and it worked fine for me, unfortunately I guess that > > > > doesn't really matter since the goal is to get it working for you ;) > > > > > > > > Do you have any XP boxes where you're at? I'm guessing the reason it's > > > > working for me and not for you is I ran it on an XP box and possibly some of > > > > the code is not supported when run from 2000. If you want to verify this, > > > > open the script in notepad and put an appostrophe before the line on error > > > > resume next (should be like the first or second line in the script. Save it > > > > and then try running it - I bet you get an error (the on error resume next > > > > line basically supresses errors and the appostrophe comments out the line so > > > > you can see what's really going on). > > > > > > > > If my guess is right, then I think the script will still be able to update > > > > the 2000 boxes but it might just need to be run via windows xp. Would that > > > > be feasable or is there no way you can get a box set up with XP (if not I'll > > > > try to modify the script but I don't have a 2k box to test it on so it'll be > > > > a bit tricky). > > > > > > > > Please let me know, thanks. > > > > > > > > Nick > > > > > > > > "Goatbiker" wrote: > > > > > > > > > Nick, > > > > > > > > > > No Joy. Did as instructed, script runs and says "accounts have been > > > > > created", but no accounts on computers. It will not deploy and it will not > > > > > install the user to the computer it is on. Any thoughts? > > > > > > > > > > Tom > > > > > > > > > > "Nick" wrote: > > > > > > > > > > > okay, i wrote you a script that will do this for you. > > > > > > > > > > > > requirements: > > > > > > - admin account on all workstations has same username/password (if not > > > > > > you'll have to run it locally from each machine) > > > > > > -must be able to resolve names of workstations > > > > > > -adds users to Power Users group, change to desired group if Power Users is > > > > > > wrong (search the code for Power Users and replace with group name you want) > > > > > > - on 1 workstation create the file members.txt located at c:\members.txt > > > > > > (this contains the names of all workstations you want the users added to - 1 > > > > > > name per line) > > > > > > - on the same workstation create the text file users.txt located at > > > > > > c:\users.txt (contains user accounts & their passwords - the format must be > > > > > > user,password 1 per line and no space after the comma unless you want > > > > > > the password to start with a space. > > > > > > - on the same workstation create the text file enjoy.txt open it and past > > > > > > the following code inside then save as "enjoy.vbs" with the quotes > > > > > > - Double click enjoy.vbs and come back later - a message will alert you when > > > > > > its done. > > > > > > > > > > > > 'START COPY > > > > > > > > > > > > On error resume next > > > > > > > > > > > > Set WSHShell = WScript.CreateObject("WScript.Shell") > > > > > > Set objFSO = CreateObject("Scripting.FileSystemObject") > > > > > > > > > > > > members = "c:\members.txt" > > > > > > users = "c:\users.txt" > > > > > > > > > > > > Const ForReading = 1 > > > > > > > > > > > > strInputFile = members > > > > > > > > > > > > Set objTextStream = objFSO.OpenTextFile(strInputFile, ForReading) > > > > > > arrComputers = Split(objTextStream.ReadAll, vbCrLf) > > > > > > objTextStream.Close > > > > > > > > > > > > Set objTextFile = objFSO.OpenTextFile _ > > > > > > (users, ForReading) > > > > > > > > > > > > For Each strComputer In arrComputers > > > > > > > > > > > > Do Until objTextFile.AtEndOfStream > > > > > > acctInfo = objTextFile.Readline > > > > > > > > > > > > uP = Split(acctInfo, ",", -1, 1) > > > > > > > > > > > > Set colAccounts = GetObject("WinNT://" & strComputer & "") > > > > > > Set objUser = colAccounts.Create("user", uP(0)) > > > > > > objUser.SetPassword uP(1) > > > > > > objUser.SetInfo > > > > > > > > > > > > Set objGroup = GetObject("WinNT://" & strComputer & "/Power Users,group") > > > > > > Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") > > > > > > objGroup.Add(objUseraDD.ADsPath) > > > > > > > > > > > > > > > > > > Loop > > > > > > > > > > > > Next > > > > > > > > > > > > wscript.echo "Accounts have been created" > > > > > > > > > > > > wscript.quit > > > > > > 'END COPY > > > > > > > > > > > > Hope this helps. > > > > > > > > > > > > Nick > > > > > > > > > > > > > > > > > > "Goatbiker" wrote: > > > > > > > > > > > > > This should be easy but I am stumped. > > > > > > > > > > > > > > How do I deploy, or copy, 150 user names to a 23 computer workgroup so I > > > > > > > don't have to make 3,450 entries? 20 computers are 2K/SP4 and three are > > > > > > > XP/SP2. All are on the same workgroup. > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > Tom This is really incredible. Goatbiker, I feel your pain, and I've been
looking for a solution to this problem (the 25 computer, 25 user workgroup problem). I will upgrade to a domain as soon as possible, but right now this script is going to have to do the trick. I have one question/request. I know we're supressing the errors and that if a user is already created it just skips past them. Would it possible to have it change their password to the updated password before it does so? If it could do that, this script would just make my week, literally. P.S. - maybe it does that already and i'm wrong :) i'm wrong quite often. Thanks for the help Nick. -pk oh, and one more thing.
although i'm quite sure it's impossible to do this, could someone knowledgable please verify? it's impossible to remove the old accounts of people that don't work here anymore through this script, right? Thanks again. -pk I've pasted the script below with the requested modifications and some
general updates. The script should be pretty self explanitory when you run it but if not let me know. Enjoy and thank you. On error resume next Set WSHShell = WScript.CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") wscript.echo "In the next window select the file containing a list of computers to modify. Format must be 1 Computer name per line." Set objDialogm = CreateObject("UserAccounts.CommonDialog") objDialogm.Filter = "All Files|*.*" objDialogm.FilterIndex = 1 selMembers = objDialogm.ShowOpen IF selMembers = 0 then wscript.echo "No computers to modify, no reasons to continue." wscript.quit END IF wscript.echo "In the next window select the file containing a list of users to add. Format must be username,password (1 username,password pair per line)." Set objDialogu = CreateObject("UserAccounts.CommonDialog") objDialogu.Filter = "All Files|*.*" objDialogu.FilterIndex = 1 selUsers = objDialogu.ShowOpen addU = 1 IF selUsers = 0 then addU = 0 END IF wscript.echo "In the next window select the file containing the list of users to remove. Format must be 1 User name per line" Set objDialogr = CreateObject("UserAccounts.CommonDialog") objDialogr.Filter = "All Files|*.*" objDialogr.FilterIndex = 1 selRemove = objDialogr.ShowOpen remU = 1 IF selRemove = 0 then remU = 0 END IF IF addU = 0 then IF remU = 0 then wscript.echo "No Users given, No reasons to continue" wscript.quit END IF END IF members = objDialogm.FileName users = objDialogu.FileName remove = objDialogr.Filename modGroup = inputbox("What group should the new account(s) be a member of (Group must already exist on remote machines)? If left blank, accounts will be members of Users group.", "Workgroup Account Creator") IF modGroup = EMPTY then modGroup = Users END IF Const ForReading = 1 Set objMembers = objFSO.OpenTextFile _ (members, ForReading) Do Until objMembers.AtEndOfStream StrComputer = objmembers.Readline IF addU = 1 then Set objTextFile = objFSO.OpenTextFile _ (users, ForReading) Do Until objTextFile.AtEndOfStream acctInfo = objTextFile.Readline uP = Split(acctInfo, ",", -1, 1) Set colAccounts = GetObject("WinNT://" & strComputer & "") Set objUser = colAccounts.Create("user", uP(0)) objUser.SetPassword uP(1) objUser.SetInfo Set objGroup = GetObject("WinNT://" & strComputer & "/" & modGroup & ",group") Set objUseraDD = GetObject("WinNT://" & strComputer & "/" & uP(0) & ",user") objGroup.Add(objUseraDD.ADsPath) Set objUserrP = GetObject("WinNT://" & strComputer & "/" & uP(0) & ", user") objUserrP.SetPassword uP(1) objUserrP.SetInfo Loop END IF IF remU = 1 then Set objTextFiler = objFSO.OpenTextFile _ (remove, ForReading) Do Until objTextFiler.AtEndOfStream remAccount = objTextFiler.Readline Set objComputer = GetObject("WinNT://" & strComputer & "") objComputer.Delete "user", remAccount Loop END IF Loop wscript.echo "Accounts have been created/removed" wscript.quit -- Show quoteHide quoteNick Staff Either I want to be a better person than I am or I am a better person than I want to be. "pk" wrote: > oh, and one more thing. > > although i'm quite sure it's impossible to do this, could someone > knowledgable please verify? it's impossible to remove the old accounts > of people that don't work here anymore through this script, right? > > Thanks again. > > -pk > > wonderful. i just got home from work and checked to see that you wrote
the longest script ever for me. i appreciate it and will try it out on monday. thanks -pk ugh. i'm getting a weird error. i've done research on the internet
about it, but most of those seem related to ASP pages. the error number is 800A01AD and it seems to be particularly pesky. Perhaps it has something to do with having and registering the correct .ocx files? i haven't been able to fix it, but it comes at the line Set objDialogm = CreateObject("UserAccounts.CommonDialog") It seems that maybe this CommonDialog .ocx that I need is available either through office 2003, which I don't have or i need to pay for a license. is that right? -pk Nick, if you're there, perhaps you could help me rewrite it using
something like this? ------- Set objShellAppm = CreateObject ("Shell.Application") Set objMyComputer = objShellApp.NameSpace (&H11&) ' My Computer constant Set objFindFolder = objShellApp.BrowseForFolder (0, "Browse to the desired file", 0) objShellApp.Open objMyComputer ' Opens the My Computer dialog box objShellApp.Open objFindFolder 'Opens the Browse for Folder dialog box -------- This seems to work for me, but I'm not sure how to adapt it to my script. Thanks. -pk I do believe (though I could be wrong of course) that this needs to be run
from an XP box and that should take care of the problem. If you've tried it on XP and it didn't work or you don't have an XP machine then let me know and I'll rewrite it. Also, I work during the day so if you post a message to me please understand I don't even check my personal email until after 8:00pm PST. Also after 11:00PM PST there's no guarantee I'll check any personal mail until 8:00pm the next evening (or course there's no guaranteee about anything but I mean this is my usual routine). Just letting you know so you understand. -- Show quoteHide quoteNick Staff Either I want to be a better person than I am or I am a better person than I want to be. "pk" wrote: > Nick, if you're there, perhaps you could help me rewrite it using > something like this? > > ------- > Set objShellAppm = CreateObject ("Shell.Application") > > Set objMyComputer = objShellApp.NameSpace (&H11&) ' My Computer > constant > Set objFindFolder = objShellApp.BrowseForFolder (0, "Browse to the > desired file", 0) > > objShellApp.Open objMyComputer ' Opens the My Computer dialog box > > objShellApp.Open objFindFolder 'Opens the Browse for Folder dialog box > > -------- > This seems to work for me, but I'm not sure how to adapt it to my > script. Thanks. > > -pk > > Goatbiker wrote:
> This should be easy but I am stumped. OT, but my oh my, why do you have a workgroup if you have 23 computers? You> > How do I deploy, or copy, 150 user names to a 23 computer workgroup > so I don't have to make 3,450 entries? 20 computers are 2K/SP4 and > three are XP/SP2. All are on the same workgroup. > > Thanks, > > Tom must be a glutton for punishment! More than a handful of computers, and workgroups aren't the best choice - not scalable, a pain in the ___ to administer, secure, control, back up, etc..... I strongly suggest that you install a server in there and create a domain. Look into SBS2003 for a very nice affordable package.... My head hurts just thinking about your question. :) Lanwench,
What can I say. Schools do what schools do. I have to work with what I have. Tom Show quoteHide quote "Lanwench [MVP - Exchange]" wrote: > Goatbiker wrote: > > This should be easy but I am stumped. > > > > How do I deploy, or copy, 150 user names to a 23 computer workgroup > > so I don't have to make 3,450 entries? 20 computers are 2K/SP4 and > > three are XP/SP2. All are on the same workgroup. > > > > Thanks, > > > > Tom > > OT, but my oh my, why do you have a workgroup if you have 23 computers? You > must be a glutton for punishment! More than a handful of computers, and > workgroups aren't the best choice - not scalable, a pain in the ___ to > administer, secure, control, back up, etc..... I strongly suggest that you > install a server in there and create a domain. Look into SBS2003 for a very > nice affordable package.... > > My head hurts just thinking about your question. :) > > >
I replaced the missing ntldr file and then...
2003 Server SP1 Issue Simple question - user profiles book recommendations for an computer illiterate... Disable 'always ask before opening this type of file' in Windows 2003 Windows Explorer locking up Windows uninstaller Logon to a Domain through a wireless connection Lost Windows 2000 Pro CD - How Do I Reinstall OS? Error Message During Setup |
|||||||||||||||||||||||