Эта статья рассказывает о том, как определить uptime в Windows (uptime — это время с момента загрузки компьютера, чаще используется на серверах для контроля, сколько сервер работает без перезагрузки)..
Значение uptime в Winfows можно посмотреть в интерфейсе пользователя в Диспетчере задач:
Но часто задача состоит в том, чтобы получить это значение в скрипте или bat файле.
Скрипт uptime на JScript / WSH
Базовый вариант скрипта считывает значение uptime из класса Win32_PerfFormattedData_PerfOS_System и выводит его в виде числа:
var pcname=".";
var wmi = GetObject("winmgmts:"+
"{impersonationLevel=impersonate}!\\\\" + pcname + "\\root\\cimv2");
var p = wmi.ExecQuery("select * from Win32_PerfFormattedData_PerfOS_System");
var e = new Enumerator(p);
WScript.Echo("System UpTime: " + e.item().SystemUpTime);
Вывод скрипта содержит uptime в секундах:
Этот скрипт работает на любом компьютере, начиная с Windows XP, т.к. не требуется установка на компьютер каких-либо компонентов или библиотек, потому что Windows Script Host (WSH) уже предустановлен.
Скрипт uptime с форматированием значения
Получение значения uptime в секундах не очень-то удобно для просмотра, поэтому лучше использовать вариант скрипта с преобразованием значения в секундах в значение в днях, часах и минутах:
function seconds_to_string(_n)
{
var s = "";
var d = Math.floor( _n/86400 );
var h = Math.floor( (_n % 86400)/3600 );
var m = Math.floor( (_n % 3600)/60 );
var sec = Math.floor( _n % 60 );
if ( d >= 1 )
s += d.toFixed(0) + "d";
if ( s.length || h >= 1 )
s += h.toFixed(0) + "h";
if ( s.length || ( m >= 1 ) )
s += m.toFixed(0) + "m";
s += sec.toFixed(0) + "s";
return s;
}
var pcname=".";
var wmi = GetObject("winmgmts:"+
"{impersonationLevel=impersonate}!\\\\" + pcname + "\\root\\cimv2");
var p = wmi.ExecQuery("select * from Win32_PerfFormattedData_PerfOS_System");
var e = new Enumerator(p);
var uptime = e.item().SystemUpTime;
WScript.Echo("System UpTime: " + uptime +
" (" + seconds_to_string(uptime) + ")");
Функция seconds_to_string() выполняет преобразование из секунда в формат XdXhXmXs:
А, например, вместо 3377355 будет выведено:
System UpTime: 39d2h9m15s
В зависимости от требуемого оформления, можно доработать функцию преобразования:
- вставить пробелы между элементами,
- заменить сокращения на полные названия (чтобы выводилось, например, 3 days 6 hours 15 minutes 45 seconds)
- перевести на русский язык
- секунды можно исключить из вывода, для uptime они не так важны.
Скрипт uptime с выводом в виде окна
Кроме того, можно выводить результат в виде всплывающего окна, если запускать скрипт через wscript:
wscript //nologo uptime.js
Тот же текст будет представлен в форме графического окна:
Запуск скрипта из bat файла
Этот скрипт можно запускать и в bat файле, используя ту же саму. команду
cscript //nologo uptime.js
Для того, чтобы в bat файле можно было обработать значение uptime, нужно в конце скрипта добавить передачу значения uptime как выходного значения (return code):
WScript.Quit(uptime);
Тогда значение uptime в секундах можно будет получить в bat файле в переменной errorlevel и как-то обработать, например, если компьютер работает долго без перезагрузки, то отправить сообщение администратору или сразу перезагрузить компьютер:
cscript //nologo uptime.js
rem Если uptime больше 1 недели, то ...
if errorlevel 604800 ...
Дополнительные возможности
Скрипт позволяет также определять uptime других компьютеров в сети, надо лишь задать сетевое имя в pcname
. Пользователь, от имени которого запущен скрипт, должен иметь соответствующие полномочия на удалённом компьютере.
Особенности uptime
Как именно считается uptime
Результат, возвращаемый uptime, включает время, когда компьютер находится в спящем режиме или режиме гибернации, то есть это время с момента загрузки компьютера. Для серверов это неважно, так как они работают в режиме 24×7, а для рабочих станций или ноутбуков разница может быть существенная (между uptime и временем в активном состоянии).
Как ещё посмотреть uptime
Встроенная программа systeminfo выводит время загрузки, по которому можно определить время работы. Параметр так и называется «Время загрузки системы»..
Узнать больше
Этот и другие скрипты доступны для скачивания
Все скрипты с использованием WMI