http://www.servicefirst.com/KB/a156/how-do-i-schedule-my-server-to-automatically-reboot.aspx
Windows Server 2003
Navigate to Start -> All Programs -> Accessories -> System Tools -> Scheduled Tasks.
Click on "Add Scheduled Task".
You should now see the Add Scheduled Task Wizard. Click Next.
Disregard the list of programs, and click the Browse button.
By default, the browse button will bring you to the root of the C: drive. Navigate to WINDOWS -> system32 and locate the file named ‘shutdown.exe’. Highlight it, and click Open.
Enter your desired name for this task (such as "Auto Reboot"). Next, choose how often you would like your server to reboot, whether it is daily, weekly, or monthly.
Next you can select the time and date of the month you would like the server to automatically reboot. Click Next
Type in the password for the user you would like this task to run under. If you are setting this task to run under your ‘ServerAdmin’ login, enter the ‘ServerAdmin’ password. Once entered, click Next.
Place a check-mark in the option for 'Open advanced properties for this task when I click Finish'. Click Finish.
Add the following line in the Run field:
C:\windows\system32\shutdown.exe -r -t 00
You will need to enter your ‘ServerAdmin’ password to confirm the changes. Once entered, click OK.
You have now set Windows to automatically reboot as the time you have specified.
Windows 2008
Navigate to Start > Administrative Tools > Task Scheduler
Name the task to reflect the nature of the request. Click Next
The next two screens will allow you to set the frequency of the task. Do so then click Next as you are ready
Select "Start a program", then click Next
In the "Program/Script" box enter in "C:\Windows\system32\shutdown.exe." If this is a x64 bit operating system, you will want to use "C:\Windows\SysWOW64\shutdown.exe". Click Next when finished
The last screen will allow you to view the settings before creating the task. When ready, click Finish.
Monday, May 06, 2013
Map Drive with Domain Password Masked (Windows XP)
'#############################################################
'Author: Scot Geer //
'Script Purpose: Script to map a drive
'Script Reason: Issue with end-users connecting to VPN that
' cannot connect to an "already" mapped drive
' on an active directory domain. The fix is
' to manually map the drive (issue with cached
' credentials?)
'Script Date: Aug 2006
'Script Updated: April 2008
'Script Actions: Prompts user for username/password, then
' maps the drive to the domain share. It also
' has error-handling built-in (checks for
' network, bad password, etc.) and informs the
' user as such.
' *Observe the password is masked when the
' user types it in*
'Script Requirements:
' 1. XP or above is required (thanks to
' "ScriptPW.Password", it will *not* work
' on Win2k or below). FYI, this does *not* work in Vista
' or Windows 7 due to the lack of the scriptpw.dll file.
' It *might* work if you copy over that file from an XP
' machine
' 2. This script must be run in a command line
' window (with the 'cscript' parameter):
' "cscript scriptName.vbs"
' 3. To automate this script, create a batch
' file with the line:
' "start cmd /k cscript /nologo scriptName.vbs"
' Batch file and vbs script should reside
' in the same folder
' 4. Technician will have to edit parameters
' "drvLetter", "ShareDir", & "domain" in
' order for this script to work
'
'#############################################################
Option Explicit
Dim objShell,objNetwork,objPassword
Dim drvLetter,shareDir,domain,userName,userPswd
Dim driveAlreadyMapped,errorNOS
Dim error001,error002,error003
Set objShell = WScript.CreateObject("Wscript.Shell")
Set objNetwork = WScript.CreateObject("WScript.Network")
Set objPassword = CreateObject("ScriptPW.Password")
driveAlreadyMapped = False
errorNOS = False
drvLetter = "S:" 'change to any drive letter desire
shareDir = "\\serverName\shareName" 'change to your server share
domain = "domainName\" 'keep the backslash
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WScript.StdOut.Write "Please enter your username:"
userName = WScript.StdIn.ReadLine
WScript.Echo
If userName = "" Then
WScript.Echo
Wscript.StdOut.WriteLine String(60, "#")
Wscript.Echo "No Username Entered or User Cancelled"
quitscript
End If
Wscript.StdOut.Write "Please enter your password:"
userPswd = objPassword.GetPassword()
Wscript.Echo
WScript.Echo
mapDrive drvLetter,shareDir,domain,userName,userPswd
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Maps drive w/username, pswd. Invokes error handler if drive is already mapped
'******************************************************************************
Sub mapDrive(drv,share,dom,usr,pswd)
On Error Resume Next
objNetwork.MapNetworkDrive drv, share, "false", dom & usr, pswd
errorHandler_mapDrive
If Not(driveAlreadyMapped) And Not(errorNOS) Then
WScript.Echo
Wscript.StdOut.WriteLine String(60, "#")
Wscript.StdOut.WriteLine "Success!"
WScript.Echo
Wscript.StdOut.WriteLine "You may now open your ""Shared"" files"
Wscript.StdOut.WriteLine String(60, "#")
End If
End Sub
'*******************************************************************|
'Notifies user if drive is already mapped, bad username/pswd, or off network
'******************************************************************************
Sub errorHandler_mapDrive
If Err.Number<>0 Then
error001 = InStr(1,Err.Description,"already",1)
error002 = InStr(1,Err.Description,"found",1)
error003 = InStr(1,Err.Description,"password",1)
If (error001) Then
driveAlreadyMapped = True
WScript.Echo
Wscript.StdOut.WriteLine String(60, "#")
Wscript.StdOut.WriteLine "Your ""Shared"" drive is already mapped"
WScript.Echo
WScript.StdOut.WriteLine "Open your ""Shared"" files as normal"
WScript.Echo
WScript.StdOut.WriteLine "Notice001"
Wscript.StdOut.WriteLine String(60, "#")
ElseIf (error002) Then
errorNOS = True
WScript.Echo
Wscript.StdOut.WriteLine String(60, "#")
Wscript.StdOut.WriteLine "The path to the drive could not be found"
WScript.Echo
WScript.StdOut.WriteLine "Drive = " & shareDir
WScript.Echo
Wscript.StdOut.WriteLine "Check your network connection to ensure " _
& "you are connected to the Internet"
WScript.Echo
Wscript.StdOut.WriteLine "Make sure you are connected to the VPN"
WScript.Echo
Wscript.StdOut.WriteLine "Notice002"
Wscript.StdOut.WriteLine String(60, "#")
ElseIf (error003) Then
errorNOS = True
WScript.Echo
Wscript.StdOut.WriteLine String(60, "#")
Wscript.StdOut.WriteLine "Wrong username or password"
WScript.Echo
Wscript.StdOut.WriteLine "Run this script again"
WScript.Echo
WScript.StdOut.WriteLine "Ensure you are typing your username " _
& "& password correctly"
WScript.Echo
WScript.StdOut.WriteLine "Check your CAPS LOCK"
WScript.Echo
Wscript.StdOut.WriteLine "Notice003"
Wscript.StdOut.WriteLine String(60, "#")
End If
Err.Clear
End If
End Sub
'*******************************************************************|
'Ends Script with a notification to the user
'******************************************************************************
Sub quitscript
WScript.Echo
WScript.Echo "Quitting Now"
Wscript.StdOut.WriteLine String(60, "#")
Wscript.Quit
End Sub
'*******************************************************************|
'Author: Scot Geer //
'Script Purpose: Script to map a drive
'Script Reason: Issue with end-users connecting to VPN that
' cannot connect to an "already" mapped drive
' on an active directory domain. The fix is
' to manually map the drive (issue with cached
' credentials?)
'Script Date: Aug 2006
'Script Updated: April 2008
'Script Actions: Prompts user for username/password, then
' maps the drive to the domain share. It also
' has error-handling built-in (checks for
' network, bad password, etc.) and informs the
' user as such.
' *Observe the password is masked when the
' user types it in*
'Script Requirements:
' 1. XP or above is required (thanks to
' "ScriptPW.Password", it will *not* work
' on Win2k or below). FYI, this does *not* work in Vista
' or Windows 7 due to the lack of the scriptpw.dll file.
' It *might* work if you copy over that file from an XP
' machine
' 2. This script must be run in a command line
' window (with the 'cscript' parameter):
' "cscript scriptName.vbs"
' 3. To automate this script, create a batch
' file with the line:
' "start cmd /k cscript /nologo scriptName.vbs"
' Batch file and vbs script should reside
' in the same folder
' 4. Technician will have to edit parameters
' "drvLetter", "ShareDir", & "domain" in
' order for this script to work
'
'#############################################################
Option Explicit
Dim objShell,objNetwork,objPassword
Dim drvLetter,shareDir,domain,userName,userPswd
Dim driveAlreadyMapped,errorNOS
Dim error001,error002,error003
Set objShell = WScript.CreateObject("Wscript.Shell")
Set objNetwork = WScript.CreateObject("WScript.Network")
Set objPassword = CreateObject("ScriptPW.Password")
driveAlreadyMapped = False
errorNOS = False
drvLetter = "S:" 'change to any drive letter desire
shareDir = "\\serverName\shareName" 'change to your server share
domain = "domainName\" 'keep the backslash
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WScript.StdOut.Write "Please enter your username:"
userName = WScript.StdIn.ReadLine
WScript.Echo
If userName = "" Then
WScript.Echo
Wscript.StdOut.WriteLine String(60, "#")
Wscript.Echo "No Username Entered or User Cancelled"
quitscript
End If
Wscript.StdOut.Write "Please enter your password:"
userPswd = objPassword.GetPassword()
Wscript.Echo
WScript.Echo
mapDrive drvLetter,shareDir,domain,userName,userPswd
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Maps drive w/username, pswd. Invokes error handler if drive is already mapped
'******************************************************************************
Sub mapDrive(drv,share,dom,usr,pswd)
On Error Resume Next
objNetwork.MapNetworkDrive drv, share, "false", dom & usr, pswd
errorHandler_mapDrive
If Not(driveAlreadyMapped) And Not(errorNOS) Then
WScript.Echo
Wscript.StdOut.WriteLine String(60, "#")
Wscript.StdOut.WriteLine "Success!"
WScript.Echo
Wscript.StdOut.WriteLine "You may now open your ""Shared"" files"
Wscript.StdOut.WriteLine String(60, "#")
End If
End Sub
'*******************************************************************|
'Notifies user if drive is already mapped, bad username/pswd, or off network
'******************************************************************************
Sub errorHandler_mapDrive
If Err.Number<>0 Then
error001 = InStr(1,Err.Description,"already",1)
error002 = InStr(1,Err.Description,"found",1)
error003 = InStr(1,Err.Description,"password",1)
If (error001) Then
driveAlreadyMapped = True
WScript.Echo
Wscript.StdOut.WriteLine String(60, "#")
Wscript.StdOut.WriteLine "Your ""Shared"" drive is already mapped"
WScript.Echo
WScript.StdOut.WriteLine "Open your ""Shared"" files as normal"
WScript.Echo
WScript.StdOut.WriteLine "Notice001"
Wscript.StdOut.WriteLine String(60, "#")
ElseIf (error002) Then
errorNOS = True
WScript.Echo
Wscript.StdOut.WriteLine String(60, "#")
Wscript.StdOut.WriteLine "The path to the drive could not be found"
WScript.Echo
WScript.StdOut.WriteLine "Drive = " & shareDir
WScript.Echo
Wscript.StdOut.WriteLine "Check your network connection to ensure " _
& "you are connected to the Internet"
WScript.Echo
Wscript.StdOut.WriteLine "Make sure you are connected to the VPN"
WScript.Echo
Wscript.StdOut.WriteLine "Notice002"
Wscript.StdOut.WriteLine String(60, "#")
ElseIf (error003) Then
errorNOS = True
WScript.Echo
Wscript.StdOut.WriteLine String(60, "#")
Wscript.StdOut.WriteLine "Wrong username or password"
WScript.Echo
Wscript.StdOut.WriteLine "Run this script again"
WScript.Echo
WScript.StdOut.WriteLine "Ensure you are typing your username " _
& "& password correctly"
WScript.Echo
WScript.StdOut.WriteLine "Check your CAPS LOCK"
WScript.Echo
Wscript.StdOut.WriteLine "Notice003"
Wscript.StdOut.WriteLine String(60, "#")
End If
Err.Clear
End If
End Sub
'*******************************************************************|
'Ends Script with a notification to the user
'******************************************************************************
Sub quitscript
WScript.Echo
WScript.Echo "Quitting Now"
Wscript.StdOut.WriteLine String(60, "#")
Wscript.Quit
End Sub
'*******************************************************************|
Sunday, October 03, 2010
Server Scheduled Tasks Script
'Author: Scot Geer ()
'Purpose: Reads all scheduled tasks listed, compiles their last run, last result, etc.
' & then sends it to specified recipient(s) via text email
'Date Created: 07 Oct 2008
'Instructions: Modify only the parameters in the "modify" section below
'Tips: If this script cannot send an email to the SMTP server, it will fail silently
' & write to the Event Log. Put a bad ip address in there, then run it, then check
' your event log (application, ERROR, WSH)
'##########################################################################################
Option Explicit
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set objShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFSO, objDocument, objShell
Dim commandsArr, schTasksArr(), groupedTasksArr()
Dim myCmd, x, fullCommand, totalTaskLinesRequested
Dim reqSchTasksLinesArr, myTimeDateNow
myCmd = "cmd /c "
' !!! Modify this section only !!!
'##########################################################################################
'commandsArr is an array of command line commands
'CLI Scheduled Tasks reference found here:
'http://technet.microsoft.com/en-us/library/cc772785.aspx
commandsArr = Array("schtasks /query /fo LIST /v")
'run this CLI command "schtasks /query /fo LIST /v" and pick which lines you want here:
reqSchTasksLinesArr = Array("TaskName:","Next Run Time:","Last Run Time:","Last Result:")
'Modify this section only for the 'sendEmail' function
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Dim eFrom,eTo,eSubject,eBody,eAttachment,eUsername,ePassword
Dim eSmtpServer,eSmtpPort,eSmtpUseSSL
Const eNetworkType = 1 'use '1' if script will run on machine with SMTP installed
'Const eNetworkType = 2 'use '2' if script will run on SMTP box somewhere on network
eFrom = "s@some-domain.com"
eTo = "me@some-email.com"
eSubject = "Daily Scheduled Tasks Report (Server-Name - 10.12.14.21)"
eBody = ""
'Type in full path and filename with extension here if you want an attachment
eAttachment = "%homepath%\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup01.log"
'Note: use domain\username if going to exchange server
'Note: use username@domain.com if going to public Internet SMTP server
'Note: only use username/password if SMTP server is on separate machine
eUsername = ""
ePassword = ""
eSmtpServer = "Name-of-SMTP-Server"
eSmtpPort = 25
eSmtpUseSSL = False
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'##########################################################################################
' !!! Modify this section only !!!
totalTaskLinesRequested = ((UBound(reqSchTasksLinesArr))+1)
'Main Code
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
myTimeDateNow = FormatDateTime(Time,0) & ", " & Date
For x=0 To UBound(commandsArr)
fullCommand = myCmd & commandsArr(x)
'replace Null with fullPath if writing to file
runCommands fullCommand, Null
Next
groupTaskResults
eBody = prettyUpResults 'builds results into body of email
sendEmail eFrom,eTo,eSubject,eBody,eAttachment,eUsername,ePassword, _
eNetworkType,eSmtpServer,eSmtpPort,eSmtpUseSSL
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Action: runs commands via command line, reads each line or reads all
'Dependencies: 'appendTextToFile()' (only if you want to write to file)
' global declaration of schTasksArr to enter results
' global declaration of totalTaskLinesRequested
' 'groupTaskResults()'
'Parameters: 'pCommand' --> command line (ex: "schtasks /query /fo LIST /v")
' 'pPath' --> fullPath of text file to write info to (if applicable)
'Returns: Nothing
'******************************************************************************
Sub runCommands(pCommand,pPath)
Dim objExecObject, strLine, y, w
Set objShell = WScript.CreateObject("WScript.Shell")
Set objExecObject = objShell.Exec(pCommand)
y = 0
Do Until objExecObject.StdOut.AtEndOfStream
strLine = objExecObject.StdOut.ReadLine
For w=0 To UBound(reqSchTasksLinesArr)
If InStr(strLine, reqSchTasksLinesArr(w)) Then
ReDim Preserve schTasksArr(y)
schTasksArr(y) = strLine
' appendTextToFile pPath,schTasksArr(y) 'write to text file
y=y+1
End If
Next
Loop
End Sub
'********************************************************************|
'Action: pulls 3 specific lines from the 'schTasksArr' array and groups them
' into their own sections for easy display or printing to a file
'Dependencies: 'schTasksArr' --> lines from --> "schtasks /query /fo LIST /v"
' global declaration of 'totalTaskLinesRequested'
' 'totalTaskLinesRequested' = # of lines wanted from schtasks cmd
'Parameters: none
'Returns: nothing returned but it does build the global groupedTasksArr array
'******************************************************************************
Function groupTaskResults
'making info into groups of 3 lines
'we want 3 specific lines from each sch task
Dim m, w, groupedTasks, groupedTaskResults, tempPlaceHolder
w = 0
'get number of total task lines, divide by totalTaskLinesRequested
'to get # of sections needed
groupedTasks = (UBound(schTasksArr) + 1)/totalTaskLinesRequested
'don't forget to subtract 1 (starts at zero)
For x=0 To groupedTasks - 1
'grouping each scheduled task sections
'don't forget to subtract 1 (starts at zero)
For m=0 To totalTaskLinesRequested - 1
tempPlaceHolder = tempPlaceHolder & schTasksArr(w) & vbCrLf
w = w + 1
Next
groupedTaskResults = tempPlaceHolder
tempPlaceHolder = Null
ReDim Preserve groupedTasksArr(x)
groupedTasksArr(x) = groupedTaskResults
'Keep this echo line here for testing purposes
' WScript.Echo groupedTasksArr(x) & vbTab & "This is the grouped tasks"
Next
End Function
'*******************************************************************|
'Action: formats array results into a readable/printable form
'Dependencies: globally declared array of some kind
'Parameters: none
'Returns: 'myPrettyPrint' --> properly formatted results
'******************************************************************************
Function prettyUpResults
Dim myPrettyPrint
For x=0 To UBound(groupedTasksArr)
myPrettyPrint = myPrettyPrint & groupedTasksArr(x) _
& vbCrLf & "Current System Time" _
& String(9, ".") & myTimeDateNow _
& vbCrLf & String(40, "#") & vbCrLf & vbCrLf
Next
prettyUpResults = myPrettyPrint
End Function
'*******************************************************************|
'Action: sends email & attachment (attachment optional)
'Dependencies: global declaration of "modify" section below
'Parameters: see "modify" section below
'Returns: nothing
'******************************************************************************
Function sendEmail(pFr,pTo,pSu,pTe,pAtt,eUser,ePswd,pType,pSmtp,ePort,eSSL)
'Modify this section only for the 'sendEmail' function
'Put this section in the global declaration section of this script
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' Dim eFrom,eTo,eSubject,eBody,eAttachment,eUsername,ePassword
' Dim eSmtpServer,eSmtpPort,eSmtpUseSSL
'Const eNetworkType = 1 'use '1' if script will run on machine with SMTP installed
'Const eNetworkType = 2 'use '2' if script will run on SMTP box somewhere on network
' eFrom = "username@domain.com"
' eTo = "recipient@domain.com"
' eSubject = "Subject Message"
' eBody = "Body of email"
'Type in full path and filename with extension here if you want an attachment
' eAttachment = "c:\temp\logs\backup01.log"
'Note: use domain\username if going to exchange server
'Note: use username@domain.com if going to public Internet SMTP server
' eUsername = "domain\username" 'don't use this line if eNetworkType=1
' ePassword = "password" 'don't use this line if eNetworkType=1
' eSmtpServer = "serverName or IP address"
' eSmtpPort = 25
' eSmtpUseSSL = False
'
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
On Error Resume Next
Dim objEmail, extraMessages
Set objEmail = CreateObject("CDO.Message")
extraMessages = "Check the parameters in the 'email modify' section" _
& " of the script" _
& vbCrLf & "Rob I. is a Hottie! :D"
objEmail.From = pFr
objEmail.To = pTo
objEmail.Subject = pSu
objEmail.Textbody = pTe
objEmail.AddAttachment(pAtt)
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = pType
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = pSmtp
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = ePort
'Only use this section if running this script from a non-SMTP server, such as a
'workstation. Simply remove the apostrophe's at the beginning of each line.
'##############################################################################
' objEmail.Configuration.Fields.Item _
' ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
' objEmail.Configuration.Fields.Item _
' ("http://schemas.microsoft.com/cdo/configuration/sendusername") = eUser
' objEmail.Configuration.Fields.Item _
' ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = ePswd
' objEmail.Configuration.Fields.Item _
' ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = eSSL
' objEmail.Configuration.Fields.Item _
' ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
'##############################################################################
objEmail.Configuration.Fields.Update
objEmail.Send
myErrHandler(extraMessages)
End Function
'*******************************************************************|
'Action: generic error handler module that writes to the system event log
'Dependencies: global declaration of 'objShell'
'Parameters: 'pMsg' = extra message you want written to the event log
'Returns: nothing
'******************************************************************************
Sub myErrHandler(pMsg)
Dim errMessage, eventLogMessage
If Err.Number<>0 Then
errMessage = Err.Description
eventLogMessage = WScript.ScriptFullName _
& vbCrLf & vbCrLf & errMessage _
& vbCrLf & pMsg
' WScript.Echo eventLogMessage
objShell.LogEvent 1, eventLogMessage
End If
Err.Clear
End Sub
'*******************************************************************|
'Action: quits the script and prompts the user "Quitting Now"
'Dependencies: none
'Parameters: nothing
'Returns: nothing
'******************************************************************************
Sub quitScript
WScript.Echo "Quitting Now"
Wscript.Quit
End Sub
'*******************************************************************|
Subscribe to:
Posts (Atom)