'strComputer = "."
'Set objWMIService = GetObject _
'    ("winmgmts:\\" & strComputer & "\root\cimv2")
'Set colOperatingSystems = objWMIService.ExecQuery _
'    ("Select * from Win32_OperatingSystem")
'For Each objOS in colOperatingSystems
'    dtmBootup = objOS.LastBootUpTime
''    dtmLastBootupTime = WMIDateStringToDate(dtmBootup)
''    Wscript.Echo dtmLastBootupTime
'    Wscript.Echo dtmBootup
'Next



Function WMIDateStringToDate(dtmBootup)
WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" & _
	Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) _
	& " " & Mid (dtmBootup, 9, 2) & ":" & _
	Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup, _
	13, 2))
End Function

strComputer = "."
Dim msg, HoursInPartialDay, MinutesInPartialHour, SecondsInPartialMinute
Dim Days, Hours, Minutes, Seconds
Dim DayMsg, HourMsg, MinuteMsg, SecondMsg
msg = ""
Set objWMIService = GetObject _
	("winmgmts:\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
	("Select * from Win32_OperatingSystem")
For Each objOS in colOperatingSystems
	dtmBootup = objOS.LastBootUpTime
	dtmLastBootupTime = WMIDateStringToDate(dtmBootup)
	Days = DateDiff("d", dtmLastBootUpTime, Now)
	Hours = DateDiff("h", dtmLastBootUpTime, Now) Mod 24
	Minutes = DateDiff("n", dtmLastBootUpTime, Now) Mod 60
	Seconds = DateDiff("s", dtmLastBootUpTime, Now) Mod 60
	
	Dim NumberOfComponents
	NumberOfComponents = 0
	
	If Days = 0 Then
		DayMsg = ""
	Else 
		NumberOfComponents = NumberOfComponents + 1
		If Days = 1 Then
			DayMsg = "1 day"
		Else
			DayMsg = Days & " days"
		End If
	End If
	
	If Hours = 0 Then
		HourMsg = ""
	Else 
		NumberOfComponents = NumberOfComponents + 1
		If Hours = 1 Then
			HourMsg = "1 hour"
		Else
			HourMsg = Hours & " hours"
		End If
	End If

	If Minutes = 0 Then
		MinuteMsg = ""
	Else 
		NumberOfComponents = NumberOfComponents + 1
		If Minutes = 1 Then
			MinuteMsg = "1 minute"
		Else
			MinuteMsg = Minutes & " minutes"
		End If
	End If
	
	If Seconds = 0 Then
		SecondMsg = ""
	Else 
		NumberOfComponents = NumberOfComponents + 1
		If Seconds = 1 Then
			SecondMsg = "1 second"
		Else
			SecondMsg = Seconds & " seconds"
		End If
	End If

	'Format the message in natural language.
	Select Case NumberOfComponents
		Case 0
			msg = ""
		Case 1
			msg = "That's " & DayMsg & HourMsg & MinuteMsg & SecondMsg & " ago."
		Case 2
			msg = ""
			If Days > 0 Then
				msg = "That's " & DayMsg & " and "
			End If
			If Hours > 0 Then
				If Len(msg) = 0 Then
					msg = "That's " & HourMsg & " and "
				Else
					msg = HourMsg & " ago."
				End If
			End If
			If Minutes > 0 Then
				If Len(msg) = 0 Then
					msg = "That's " & MinuteMsg & " and "
				Else
					msg = MinuteMsg & " ago."
				End If
			End If
			If Seconds > 0 Then
				msg = SecondMsg & " ago."
			End If
		Case Else				
			msg = ""
			If Seconds > 0 Then
				msg = " and " & SecondMsg & " ago."
			End If
			If Minutes > 0 Then
				If Len(msg) > 0 Then
					msg = MinuteMsg & ", " & msg
				Else
					msg = " and " & MinuteMsg & " ago."
				End If
			End If
			If Hours > 0 Then
				If Len(msg) > 0 Then
					msg = HourMsg & ", " & msg
				Else
					msg = " and " & HourMsg & " ago."
				End If
			End If
			If Days > 0 Then
				If Len(msg) > 0 Then
					msg = DayMsg & ", " & msg
				Else
					msg = " and " & DayMsg & " ago."
				End If
			End If
			msg = "That's " & msg
	End Select

	Wscript.Echo "The date and time of the latest system restart was " &  dtmLastBootupTime & vbCRLF & vbCRLF & msg
Next
