'Alan dot Kaplan at VA dot Gov 'This script sets a user account password with a mostly random password. '9/27/94 -- based on unlockreset.vbs '12/21/2009 -- improved randomness Option Explicit Dim wshshell Set WshShell = WScript.CreateObject("WScript.Shell") NewPW wshshell.Run ("notepad.exe") while wshshell.appactivate("Untitled - Notepad") = FALSE Wscript.Sleep 10 Wend wshshell.SendKeys "Random Password is: "& vbcrlf & newpw WScript.Quit '====== Subs and Functions Function NewPW() On Error goto 0 Dim lranval dim fso,tfolder,tname, wd, temporaryfolder dim lRVal,spchar,strlc,lchar 'get randomly generated directoryname in format rad*.tmp set fso = CreateObject("Scripting.FileSystemObject") Set tfolder = fso.GetSpecialFolder(TemporaryFolder) tname = fso.GetTempName 'select a special character dim aSpecial aSpecial = array("!","@","!","#","*","?","$","~") lranval = randbetween(0,7) spchar = aSpecial(lranval) 'select a lower case middle char lranval = randBetween(97,122) ' Generate random value from lower case ASCII table. lchar = Chr(lranval) 'get random initial digits and concatenate with above lranval = randbetween(1,99) NewPW = Replace(tname, ".tmp", spchar) newpw = Replace(newpw, "rad", lchar & lranval) newpw = Replace(newpw,"0","9") 'get rid of confusing characters newpw = Replace(newpw,"O","o") lranval = randBetween(97,122) ' Generate random value from lower case ASCII table. lchar = Chr(lranval) NewPW = lchar & NewPW lranval = randBetween(0,9) ' Generate random value to split password below newpw = Right(newpw,lranval) & Left(newpw,9-lranval) End Function Function RandBetween(min,max) Randomize ' Initialize random-number generator. RandBetween = min + Int(Rnd*(max - min + 1)) End Function