檔案伺服器資源管理員 - 建立配額範本
前一陣子,使用了Microsoft 的 檔案伺服器資源管理員 (File Server Resource Manager,簡稱FSRM),覺得不錯,是個好物!
如果不會使用,或是想知道更多,可以瀏覽右邊這個連結:檔案伺服器資源管理員逐步指南。

檔案伺服器資源管理員可以作到下列這個事情。
# 建立配額以限制磁碟區或資料夾的允許空間,並在接近或超過配額限制時產生電子郵件與其他類型的通知。
# 自動產生並套用配額至所有現有的子資料夾,以及磁碟區或資料夾中的新子資料夾。
# 建立檔案檢測以控制使用者可以儲存的檔案類型,並在使用者嘗試儲存封鎖的類型時傳送通知。
# 定義可輕鬆套用至新磁碟區或資料夾、並可在整個組織中重複使用的配額與檔案檢測範本。
# 建立定期產生存放裝置報告的排程,或視需要立即產生存放裝置報告,您可以利用這些報告來識別磁碟使用情況。
使用起來還滿順手的,但是當我想使用C#操作FSRM時,中文的資料不是很多,稍微研究了一下,在這邊作個紀錄。
首先,從有安裝 FSRM 那台Server 的『C:\Windows\System32\』,Copy『srmlib.dll』到開發環境,並且將這個 DLL 加入參考(加入參考,瀏覽,選擇剛剛那個DLL)。
要使用FSRM的元件前,記得引用他的namespace:
using Microsoft.Storage;
接下來就可以開始寫程式了,
這邊作一個建立配額範本的簡單範例:
public string CreateNewQuotaTemplate(int iSize, string sUnit, string sTemplateName, int iQuotaFlags)
{
string sResult = "配額範本『" + sTemplateName + "』建立成功";
try
{
double dQuotaLimit = iSize;
double dMBSize = 1024 * 1024;
if (sUnit.Trim().ToUpper() == "MB")
{
dQuotaLimit = iSize * dMBSize;
}
else if (sUnit.Trim().ToUpper() == "GB")
{
dQuotaLimit = iSize * 1024 * dMBSize;
}
FsrmQuotaTemplateManager quotaManager = new FsrmQuotaTemplateManager();
IFsrmQuotaTemplate quotaTemplate = quotaManager.CreateTemplate(); //建立配額範本
quotaTemplate.Name = sTemplateName; //指定配額範本的名稱
quotaTemplate.QuotaLimit = dQuotaLimit; //指定配額範本的容量
quotaTemplate.QuotaFlags = iQuotaFlags; //固定配額(256) 或 彈性配額(0)
quotaTemplate.Commit();
}
catch (Exception ex)
{
sResult = ex.ToString();
}
return sResult;
}
如何使用呢?
//建立一個名稱為100MB_Template,容量限制為 100MB 的配額範本(彈性配額) string CreateNewQuotaTemplate1 = CreateNewQuotaTemplate(100,"MB","100MB_Template",0); //建立一個名稱為20GB_Template,容量限制為 20GB 的配額範本(固定配額) string CreateNewQuotaTemplate2 = CreateNewQuotaTemplate(20,"GB","20GB_Template",256);
利用上面的程式,兩個配額範本就會建立好囉!!

在執行上面那一段程式時,如果發生錯誤,有可能是權限不夠,可以參考一下這篇『C# 模擬身份』
把程式改寫成:
PClass.PImpersonate Impersonate_User = new PClass.PImpersonate("網域名稱", "帳號", "密碼");
Impersonate_User.Login();//開始用前面設定的帳號執行程式
CreateNewQuotaTemplate(100,"MB","100MB_Template",0);
CreateNewQuotaTemplate(20,"GB","20GB_Template",256);
Impersonate_User.Logout();//登出
應該就ok囉!
---
上面只是簡單的範例,利用C#也可以作到在特定路徑套用特定的配額範本,
或是設定容量到達配額上限的特定百分比之後,發信通知管理者等等功能,
有空再陸續介紹囉!!


