Uptime в Windows (на Powershell)

Написал на PowerShell скромный аналог утилиты uptime из Линукса (эта утилита показывает сколько дней компьютер работает без перезагрузки):

[math]::round(((Get-Date) - ($os=gwmi Win32_OperatingSystem).ConvertToDateTime($os.lastbootuptime)).TotalDays, 2)

В основном в сети предлагается запустить «net stats srv» и посмотреть строку «статистика после» («statistics since»), впрочем и вариантов на PowerShell тоже хватает. Кстати, можно сделать ещё и такой вариант:

[math]::round(((Get-Date) - (((net stats srv)[3] -split ' ')[2,3] -join ' ' | Get-Date)).TotalDays, 2)

Почти LISP. И всё-таки мне очень нравится PowerShell.

Комментарии 13

bulychev.info № 1
net stats srv врет :)
Статистика после 01.01.1980 0:00:00
Название ОС: MicrosoftR Windows VistaT Ultimate
Версия ОС: 6.0.6002 Service Pack 2 сборка 6002
kurumbulka № 2
PS C:\> [math]::round(((Get-Date) — ($os=gwmi Win32_OperatingSystem).ConvertToDateTime($os.lastbootuptime)).TotalDays, 2)
9,99
PS C:\> [math]::round(((Get-Date) — (((net stats srv)[3] -split ' ')[2,3] -join ' ' | Get-Date)).TotalDays, 2)
10,73
PS C:\> date
10 апреля 2011 г. 0:11:56

Почему так ? кому верить, как быть.
Евгений Степанищев (bolknote.ru) автор № 3
Вон выше говорят, что net stats srv врёт :)

А что у вас выдаёт «(net stats srv)[3]» и «(gwmi Win32_OperatingSystem).lastbootuptime»? Я думаю, что собака зарыта где-то в часовых поясах.
Евгений Степанищев (bolknote.ru) автор № 4
Я попозже попробую перезагрузить машину и посмотреть какой из методов врёт.
Евгений Степанищев (bolknote.ru) автор № 7
Странно, но после перезагрузки системы оба способа показывают одинаковое время. Так что вопрос какой из способов врёт оставляем открытым.
zg (zg.livejournal.com) № 8
у меня тоже net stats srv выдаёт:
Statistics since 01.01.1980 0:00:00
Евгений Степанищев (bolknote.ru) автор № 9
Выдаёт ли что-то разумное первый PowerShell-скрипт? Что за OS? systeminfo выдаёт правильную информацию?
zg (zg.livejournal.com) № 10
Комментарий для Евгения Степанищева:

первый ps скрипт выдаёт правильный аптайм. ос — сервер 2008. systeminfo тоже всё правильно выдаёт.