Search code examples
windowspowershellbatch-filewmi

how to find first boot time and last shut down time of computer in a particular day?


I need to find when the computer is started first time and shut down at last in a day.

For ex. I would have started my computer at morning 10 and multiple times i would have restarted or put on idle condition. Finally at the day end (9 PM) i would shut down the machine.

I would like to find for the last 2 weeks how long i have spent in front of my computer roughly.

Below command is giving uptime in eventlog message for a day but it is showing multiple uptime in seconds. Instead if i can get first boot time and last shut down time i can easily calculate it.

(get-eventlog -EntryType Information -LogName System -InstanceId 2147489661 -newest 25)

Solution

  • What about getting the very first and last log entry for every day
    provided the pc is shut down and has only one user.

    This script gets the time span between first last log entry for the previous 10 days:

        -1..-10 | ForEach {
        $When =  (Get-Date).AddDays($_)
        $After =  Get-Date $When  -Hour 0  -Minute 0  -Second 0
        $Before = Get-Date $When  -Hour 23 -Minute 59 -Second 59
        $DayEvents =(Get-Eventlog -Entrytype Information -Logname System -After $After -Before $Before).TimeGenerated
        if($dayevents -ne $null) {
            $Span = New-Timespan -Start ($DayEvents | Select -Last 1) -End ($DayEvents | Select -First 1)
            "Your computer worked hard on {0} - for {1}:{2}:{3} hours" -F $When.ToString('yyyy-MM-dd'),$Span.Hours,$Span.Minutes,$Span.Seconds
        }
        else
        {
            $msg = "Holiday for your computer on {0}. It is not powered on" -F $When.ToString('yyyy-MM-dd') 
            Write-host $msg -foregroundcolor green
        }
    }
    

    Sample Output

    Your computer worked hard on 2018-04-19 - for 12:5:22 hours
    Your computer worked hard on 2018-04-18 - for 8:38:51 hours
    Your computer worked hard on 2018-04-17 - for 9:25:5 hours
    Your computer worked hard on 2018-04-16 - for 10:36:36 hours
    Holiday for your computer on 2018-04-15. It is not powered on
    Your computer worked hard on 2018-04-14 - for 14:55:7 hours
    Your computer worked hard on 2018-04-13 - for 13:47:32 hours
    Your computer worked hard on 2018-04-12 - for 13:3:19 hours
    Your computer worked hard on 2018-04-11 - for 12:35:29 hours
    Your computer worked hard on 2018-04-10 - for 10:37:51 hours