系統測試 ─ Scheduled Tasks

系統測試 ─ Scheduled Tasks

手上的專案終於告一個段落,所以最近在寫一些簡單的測試程式,來確認目前系統設定及

相關服務是否都有正常運作。

 

這裡要分享一個好用的TaskScheduler類別庫,可以用來讀取目前Server上的系統排程運作狀

況,甚至還可以新增排程~相當貼心。

 

使用的方式也很簡單,我是把屬於我的系統的排程先一個一個找出來後,暫存到DataTable

裡面去,然後再Bind到GridView裡面。因為我的排程都是去執行某個執行檔,所以除了確認

排程目前設定的狀況,是否啟用之外,還確認了執行檔的路徑是否正確。

 


/// 確認排程
/// </summary>
private void checkTaskScheduler()
{
	DataTable dt = new DataTable();
	dt.Columns.Add("TaskName");
	dt.Columns.Add("PathCheck");
	dt.Columns.Add("Interval");
	dt.Columns.Add("Enabled");
	
	TaskService ts = new TaskService();
	foreach (Task t in ts.RootFolder.Tasks)
	{
		DataRow row = dt.NewRow();
		row["TaskName"] = t.Name;
		row["PathCheck"] = getExecPath(t.Definition.Actions);
		row["Interval"] = getIntervalStr(t.Definition.Triggers);
		row["Enabled"] = t.Enabled;
		dt.Rows.Add(row);

	}
}

/// <summary>
/// 排程執行時間
/// </summary>
/// <param name="triggers"></param>
/// <returns></returns>
private string getIntervalStr(Microsoft.Win32.TaskScheduler.TriggerCollection triggers)
{
	StringBuilder sb = new StringBuilder();
	int i = 0;
	foreach (Microsoft.Win32.TaskScheduler.Trigger trigger in triggers)
	{
		i++;
		sb.AppendFormat("{0}. {1}", i, trigger.ToString());
	}

	return sb.ToString();
}

/// <summary>
/// 排程執行動作
/// </summary>
/// <param name="actions"></param>
/// <returns></returns>
private bool getExecPath(Microsoft.Win32.TaskScheduler.ActionCollection actions)
{
	bool check = true;
	foreach (Microsoft.Win32.TaskScheduler.Action action in actions)
	{
		string path = "";
		switch (action.GetType().Name.ToLower())
		{
			case "execaction":
				ExecAction ea = (ExecAction)action;
				path = ea.Path;
				File.Exists(path);
				break;
		}
		if (!check) break;
	}
	return check;
}

 

為了容易辨別,所以我用圖來表示目前的狀況,下圖是我寫完的檢測結果:p

image

 

相關網址:Task Scheduler Managed Wrapper

DotBlog 的標籤:,,