We recently needed to create a PowerShell script to log to the event viewer and reboot the machine on a schedule. This is what we came up with.
The PowerShell
$evt=new-object System.Diagnostics.EventLog("Application")      
$evt.Source="itgroove Scheduled Reboot"       
$infoevent=[System.Diagnostics.EventLogEntryType]::Information       
$vdate=Get-Date       
$val="itgroove Scheduled Reboot Event at: ["+$vdate+"]"       
$evt.WriteEntry($val,$infoevent,70)       
Restart-Computer –Force
You simply put this into a file (such as C:TOPSharePointreboot.ps1)
Basically, the script breaks down as this:
Line 1 – Choose the “Application” event log (you can see this in the screen capture below at the very top)    
Line 2 – The event source (the name of the script logging the event – this can be whatever you want it to be)     
Line 3 – This is just an Information event (as opposed to a Warning, Error, Critical)     
Line 4 – Get the current date stamp     
Line 5 – Assemble the line we’re going to log as the “details” of the event     
Line 6 – Actually write the event to the log (the last parameter is the application specific Event ID – in our case we choose the number 70 – this is a number you choose as the writer of this script)     
Line 7 – Reboot the machine
This is how it maps to the event viewer:
1 = $evt.Source="itgroove Scheduled Reboot" (line 2 in the code above)
2 = $val="itgroove Scheduled Reboot Event at: ["+$vdate+"]" (line 5 above)
3 = $evt.WriteEntry($val,$infoevent,70) (line 6 above)
The Shell Script
@ECHO OFF    
ECHO Performing Reboot     
POWERSHELL "& ‘C:TOPSharePointreboot.ps1’"
You simply put this into a file (such as C:TOPSharePointreboot.cmd)
The Schedule
The last step you have to do is add the above shell script (reboot.cmd) to the task scheduler, and you’re off to the races.
 Colin Phillips (Alumni)
    Colin Phillips (Alumni)
  