Как получить количество перезапусков сервера за день с помощью c #? - PullRequest
3 голосов
/ 31 мая 2011

Можно ли получить количество раз, когда сервер перезапускается за определенный период времени, используя c #?

Я видел этот пост, который получает время последнего отключения Windows Получить дату-времяпоследнего события закрытия Windows с использованием .NET

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 31 мая 2011

Рассматривали ли вы чтение из журнала событий сервера?

Система событий 'USER32' регистрирует отключения.

Из того, что я прочитал, кажется, что вы должны иметь возможность читать журнал событий удаленного компьютера также программно ( См. Как управлять журналами событий с помощью Visual C # .NET или Visual C # 2005 )

EDIT

Следующее консольное приложение будет работать при запросе четного журнала на удаленном компьютере для типа USER32.

Все, что вам нужно сделать, это включить сравнение даты и времени и добавить имя вашего сервера. Это немного грубо и готово, но я уверен, что вы можете немного украсить его, если хотите.

using System;
using System.Diagnostics;

namespace ReadEventLog
{
    class Program
    {
        static void Main(string[] args)
        {

            string logType = "System";

            //use this if your are are running the app on the server
            //EventLog ev = new EventLog(logType, System.Environment.MachineName);    

            //use this if you are running the app remotely
            EventLog ev = new EventLog(logType, "[youservername]");

            if (ev.Entries.Count <= 0)
                Console.WriteLine("No Event Logs in the Log :" + logType);

            // Loop through the event log records. 
            for (int i = ev.Entries.Count - 1; i >= 0; i--)
            {
                EventLogEntry CurrentEntry = ev.Entries[i];

                //use DateTime type to compare on CurrentEntry.TimeGenerated
                DateTime dt = DateTime.Now;
                TimeSpan ts = dt.Subtract( CurrentEntry.TimeGenerated);
                int hours = (ts.Days * 24) + ts.Hours;

                if (CurrentEntry.Source.ToUpper() == "USER32")
                {
                    Console.WriteLine("Time Generated:" + CurrentEntry.TimeGenerated);
                    Console.WriteLine("Hours ago:" + hours);
                    Console.WriteLine("Event ID : " + CurrentEntry.InstanceId);
                    Console.WriteLine("Entry Type : " + CurrentEntry.EntryType.ToString());
                    Console.WriteLine("Message :  " + CurrentEntry.Message + "\n");
                }
            }
            ev.Close();
        }
    }
}
0 голосов
/ 31 мая 2011

Вы можете создать службу Windows и зарегистрировать событие запуска. Таким образом, вы будете знать, сколько раз служба запускалась (и была закрыта).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...