檔案伺服器資源管理員 – 建立配額範本

前一陣子,使用了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#也可以作到在特定路徑套用特定的配額範本,
或是設定容量到達配額上限的特定百分比之後,發信通知管理者等等功能,
有空再陸續介紹囉!!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *