Haven't posted a script in a while. Here is a recent one I wrote for Microsoft Service Manager. We are making the move over to Service Manager for our call logging and we have the option of creating quick links / shortcuts to apps and commands. Wrote this one for unlocking / resetting AD user accounts. I could of created a dialog, however wanted to keep it simple, feedback welcome.

Code: Select all
Let>MSG_HEIGHT=320
Let>MSG_WIDTH=500
Let>MSG_STAYONTOP=1
Let>MSG_CENTERED=1
ExtractFileName>Command_Line,strFileName
ExtractFileExt>Command_Line,strExt
StringReplace>%strFileName%,",,strFileName
StringReplace>%strExt%,",,strExt
StringReplace>%strFileName%,%strExt%,,strFileName
Trim>%strFileName%,strFileName
Let>APP_TITLE=%strFileName%
GoSub>GetCurrentDay
If>vUsername={"vUsername"}
MDL>No Username Was Specified. The Application Must Be Run With A Command Line Switch Like Below.%CRLF%%CRLF%%COMMAND_LINE%/vUsername=%USER_NAME%%CRLF%%CRLF%Written By Michael Allen © 2013%CRLF%[email protected]%CRLF%Mobile: 0413 392 169%CRLF%%CRLF%MJTECH MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. MJTECH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL MJTECH BE LIABLE TO YOU OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE, STRICT LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. MJTECH WILL NOT PROVIDE ANY TRAINING OR OTHER SUPPORT FOR THE SOFTWARE.
Let>INPUT_BROWSE=0
Input>vUsername,Please Enter Username To Unlock / Reset,
If>vUsername=,End
Uppercase>%vUsername%,vUsername
GoSub>AccountCheck
Else
Uppercase>%vUsername%,vUsername
GoSub>AccountCheck
EndIf
SRT>AccountCheck
Let>RP_WAIT=1
Let>RP_WINDOWMODE=0
Let>RP_DISPLAYERROR=0
Run>%SYS_NATIVE%\cmd.exe /c net user /DOMAIN %vUsername% | Find "Account active" > %TEMP_DIR%AcctChk.txt
Run>%SYS_NATIVE%\cmd.exe /c net user /DOMAIN %vUsername% | Find "Full Name" > %TEMP_DIR%AcctName.txt
ReadFile>%TEMP_DIR%AcctChk.txt,vAcctChkResult
ReadLn>%TEMP_DIR%AcctName.txt,1,vAcctNameResult
DeleteFile>%TEMP_DIR%AcctChk.txt
DeleteFile>%TEMP_DIR%AcctName.txt
Trim>%vAcctChkResult%,vAcctChkResult
Trim>%vAcctNameResult%,vAcctNameResult
StringReplace>%vAcctChkResult%,Account active,,vAcctChkResult
StringReplace>%vAcctNameResult%,Full Name,,vAcctNameResult
StringReplace>%vAcctChkResult%,%SPACE%%SPACE%%SPACE%,,vAcctChkResult
StringReplace>%vAcctChkResult%,%SPACE%%SPACE%,,vAcctChkResult
StringReplace>%vAcctNameResult%,%SPACE%%SPACE%%SPACE%,,vAcctNameResult
StringReplace>%vAcctNameResult%,%SPACE%%SPACE%,,vAcctNameResult
UpperCase>%vAcctChkResult%,vAcctChkResult
UpperCase>%vAcctNameResult%,vAcctNameResult
If>%vAcctChkResult%=
MDL>No Account Found For Username: %vUsername%.%CRLF%%CRLF%Please Check The Spelling And Try Again!
Goto>SubEnd
EndIf
MDL>ACTIVE ACCOUNT: %vAcctChkResult%%CRLF%USERS NAME: %vAcctNameResult%%CRLF%USERS ID: %vUsername%
Ask>Would You Like To Unlock The User Account %vUsername%?,vAskResult
If>%vAskResult%=YES
Run>%SYS_NATIVE%\cmd.exe /c net user /DOMAIN %vUsername% /ACTIVE:YES > %TEMP_DIR%UnlockStatus.txt
ReadFile>%TEMP_DIR%UnlockStatus.txt,vUnlockStatus
DeleteFile>%TEMP_DIR%UnlockStatus.txt
MDL>%vUnlockStatus%
EndIf
Ask>Would You Like To Reset The User Password For Account %vUsername%?,vAskResult
If>%vAskResult%=YES
Let>INPUT_BROWSE=0
Input>vNewPassword,Please Enter New Password,%vDefaultNewPass%
Run>%SYS_NATIVE%\cmd.exe /c net user /DOMAIN %vUsername% %vNewPassword% /ACTIVE:YES > %TEMP_DIR%ResetStatus.txt
ReadFile>%TEMP_DIR%ResetStatus.txt,vResetStatus
DeleteFile>%TEMP_DIR%ResetStatus.txt
MDL>%vResetStatus%
EndIf
Label>SubEnd
END>AccountCheck
SRT>GetCurrentDay
Day>the_day
DayOfWeek>vDayResult
Goto>Day%vDayResult%
Label>Day1
Let>DayString=Sunday
Goto>Continue
Label>Day2
Let>DayString=Monday
Goto>Continue
Label>Day3
Let>DayString=Tuesday
Goto>Continue
Label>Day4
Let>DayString=Wednesday
Goto>Continue
Label>Day5
Let>DayString=Thursday
Goto>Continue
Label>Day6
Let>DayString=Friday
Goto>Continue
Label>Day7
Let>DayString=Saturday
Goto>Continue
Label>Continue
Let>vDefaultNewPass=%DayString%%the_day%
END>GetCurrentDay
Label>End