使用C#構建自定義DSC Resource

準備先決條件
1. Visual Studio 推薦2012 或者更高
2. PowerShell 4.0
3. MOF文件
概述
1. 在使用C#構建DSC 資源時同樣需要MOF(即DSC資源架構文件)爲生成該文件我們可以使用TechNet上發佈的xDSCResource工具進行生成
2. 在使用C#構建DSC 資源時同樣需要需要以下三條Cmdlet 即Get-TargetResource,Set- TargetResource,Test- TargetResource
3. Get-TargetResource  用來獲取當前資源狀態,此命令必須返回哈希字典即 System.Collections.Hashtable
4. Test-TargetResource  用來檢測當前資源狀態與用戶輸入是否一致,此命令必須返回布爾類型 即 System.Boolean
5. Set- TargetResource  用來完成用戶輸入狀態,此命令無需返回
創建MOF 架構文件
本例中我們將實現系統自帶的File 資源 資源名稱爲xFiles
下面是架構文件(文件名 xFiles.schema.mof)

 [ClassVersion("1.0.0.0"), FriendlyName("xFiles")]
class xFiles : OMI_BaseResource
{
 [Key] String Ensure;
 [Required] String Name;
 [Required] String Path;
};
本架構中僅僅定義了三個參數 Ensure,Name,Path 且均爲必須
實現架構
打開VS 創建C#類庫項目

打開VS 創建C#類庫項目
 

同時更名程序集名稱爲DSC 資源名稱 即xFiles

同時更名程序集名稱爲DSC 資源名稱 即xFiles
 添加對System.Management.Automation.dll 引用
路徑爲 (.net 版本不同文件路徑位置可能稍有變化)
C:WindowsMicrosoft.NETassemblyGAC_MSILSystem.Management.Automationv

4.0_3.0.0.0__31bf3856ad364e35System.Management.Automation.dll

實現Get-TargetResource

實現Get-TargetResource


實現Test-TargetResource 請注意Test-TargetResource 要求返回布爾類型
但是由於重寫 Proce***ecord() 方法必須要求Void 所以在我們判斷資源狀態時候
使用WriteObject() 方法 返回布爾類型

使用WriteObject() 方法 返回布爾類型

使用WriteObject() 方法 返回布爾類型
 實現Set-TargetResource

實現Set-TargetResource
 此後生成解決方案
將生成的xFiles.DLL 與 xFiles.schema.mof 一同放在
C:WindowsSystem32WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationDSCResourcesxFiles下如下圖:

將生成的xFiles.DLL 與 xFiles.schema.mof 一同放在
 

 此後編寫DSC 配置文件


Configuration aaa
{
    node LocalHost
    {
        xFiles bbb
        {
            Name = "1.txt"
            Path = "c:2"
            Ensure = "absent"
        }
    }
}
 
測試
分別測試資源狀態
應用配置(全部配置要求當前都不滿足)

應用配置(全部配置要求當前都不滿足)
 
應用配置(部分配置狀態滿足本示例中 c:2 目錄存在)

應用配置(部分配置狀態滿足本示例中 c:2 目錄存在)
 

撤銷配置(全部配置要求滿足 即全部需要撤銷配置當前均存在)

撤銷配置(全部配置要求滿足 即全部需要撤銷配置當前均存在)
 


撤銷配置(部分配置狀態滿足 即 c:21.txt 不存在)

撤銷配置(部分配置狀態滿足 即 c:21.txt 不存在)


 本文已於2014-08-06同步在www.ilync.cn發佈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章