Ok...as my education continues into the world of scripting (still a
infant here), I have some questions.
I need to reset the password of all the local domain accounts on our
servers. I thought a script + GPO would be a handy method.
Since I am pretty new at scripting, I decided to google for some
suggestions and came up with a few interesting things and wanted to
ask some questions here.
First, I found this one from 'The Scripting guy':
Set objOU = GetObject("LDAP://OU=Finance, DC=fabrikam, DC=com")
objOU.Filter = Array("Computer")
For Each objItem in objOU
strComputer = objItem.CN
Set objUser = GetObject("WinNT://" & strComputer & "/
Administrator")
objUser.SetPassword("i5A2sj*!")
Next
You change the OU and Domain as you suggested. Which brings a quick
question. Suppose your OU has spaces. Something like: Server bin
Does that change how you set it up in the script? Do you need to quote
it within the quotes?
That script seems fairly straightforward.
Then I found this one:
'-------------------------------------------------------------------------------
' Initialization - Declare variables
'-------------------------------------------------------------------------------
Dim fsoIn, fsoOut
Dim inFile, outFile
Dim arrComputerNames
Dim objUser
Dim strComputer
Dim newPassword
Dim ErrorOccurred
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const inFilename = "servers.txt"
Const outFilename = "ChangePwdServers.log"
'-------------------------------------------------------------------------------
' Main script
'-------------------------------------------------------------------------------
On Error Resume Next
ErrorOccurred = False
' Insert WARNING here...
Msgbox ("WARNING: This script will change the local administrator
password for every " & _
"computer listed in SERVERS.TXT. If any services are running with
the local " & _
"administrator credentials, those services must be updated, or they
won't " & _
"start on the next boot. For this script to work, you must have
administrative " & _
"privileges on all of the remote computers you are changing the
password for.")
' Get new password
newPassword = Inputbox ("Please enter the new password.")
' Open the input file and skip the header line
Set fsoIn = CreateObject("scripting.filesystemobject")
Set inFile = fsoIn.OpenTextFile(inFilename, ForReading, True)
inFile.Skipline
' Open the log file (append mode) and timestamp the entry
Set fsoOut = CreateObject("scripting.filesystemobject")
Set outFile = fsoOut.OpenTextFile(outFilename, ForAppending, True)
outFile.writeline (Now & vbTab & "Starting script...")
While Not inFile.AtEndOfStream
arrComputerNames = Split(inFile.Readline, vbTab, -1, 1)
' arrComputerNames(0) contains the computer name
strComputer = arrComputerNames(0)
' Connect to the computer\administrator account
Set objUser = GetObject("WinNT://" & strComputer & "/Administrator,
user")
If Err.Number <> 0 Then
outFile.writeline Now & vbTab & "Error connecting to " & strComputer
& " --- " & Err.Description
Err.Clear
ErrorOccurred = True
Else
' Set the password for the account
objUser.SetPassword newPassword
objUser.SetInfo
If Err.Number <> 0 Then
outFile.writeline Now & vbTab & "Error setting password for " &
strComputer & _
"\Administrator" & " --- " & Err.Description
Err.Clear
ErrorOccurred = True
Else
outFile.writeline (Now & vbTab & "Password set for " & strComputer
& "\Administrator")
End If
End If
Wend
' Clean up the environment
outFile.writeline (Now & vbTab & "Ending script...")
inFile.close
outFile.close
If ErrorOccurred Then
msgbox "Script completed with errors. Please check the log file."
Else
MsgBox "Script completed successfully."
End If
Ok...not only is it VERY complex for me, but why the huge need for
code for something like this?
You look at the first one and it seems straightforward and easy. The
second, looks like a lot of extra, possibly unnecessary work.
I thought i'd start here.
Thanks,
Jas