使用C#构建自定义DSC Resource

准备先决条件

  1. 1.     VisualStudio 推荐2012或者更高

  2. 2.     PowerShell4.0

  3. 3.     MOF文件

概述

  1. 1.     在使用C#构建DSC 资源时同样需要MOF(即DSC资源架构文件)为生成该文件我们可以使用TechNet上发布的xDSCResource工具进行生成

  2. 2.     在使用C#构建DSC 资源时同样需要需要以下三条Cmdlet 即Get-TargetResource,Set- TargetResource,Test- TargetResource

  3. 3.     Get-TargetResource  用来获取当前资源状态,此命令必须返回哈希字典即System.Collections.Hashtable

  4. 4.     Test-TargetResource  用来检测当前资源状态与用户输入是否一致,此命令必须返回布尔类型即 System.Boolean

  5. 5.     Set-TargetResource  用来完成用户输入状态,此命令无需返回

创建MOF 架构文件

本例中我们将实现系统自带的File 资源 资源名称为xFiles

下面是架构文件(文件名 xFiles.schema.mof)

 

 

 

 

[ClassVersion("1.0.0.0"),FriendlyName("xFiles")]

classxFiles : OMI_BaseResource

{

       [Key] String Ensure;

       [Required] String Name;

       [Required] String Path;

};

本架构中仅仅定义了三个参数 Ensure,Name,Path 且均为必须

实现架构

打开VS 创建C#类库项目

wKioL1RhcTrxfMUMAAI39fbVxNI503.jpg

 

 

 

同时更名程序集名称为DSC 资源名称 即xFiles

wKioL1RhcUOS8YX5AAEXW5zR198136.jpg

 

 

添加对System.Management.Automation.dll 引用

路径为 (.net 版本不同文件路径位置可能稍有变化)

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

 

 

实现Get-TargetResource

wKioL1RhcU2ThbpPAAIHS9gtGyw273.jpg

 

实现Test-TargetResource 请注意Test-TargetResource 要求返回布尔类型

但是由于重写ProcessRecord() 方法必须要求Void 所以在我们判断资源状态时候

使用WriteObject() 方法 返回布尔类型

wKiom1RhcOuCOgqFAAIdC27D5e0328.jpg

 

 

实现Set-TargetResource

wKiom1RhcPSgYxBgAAI7sTf6gOY972.jpg

 

 

 

此后生成解决方案

将生成的xFiles.DLL 与 xFiles.schema.mof 一同放在

C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\DSCResources\xFiles

如下图

wKiom1RhcP-C7I4TAADfFG5tVIs435.jpg

 

 

 

此后编写DSC 配置文件

 

 

Configuration aaa

{

    node LocalHost

    {

       xFiles bbb

        {

           Name = "1.txt"

           Path = "c:\2\"

           Ensure = "absent"

        }

    }

}

 

测试

分别测试资源状态

应用配置(全部配置要求当前都不满足)

wKioL1RhcXbjL1OjAAUc2jGR_RE622.jpg

应用配置(部分配置状态满足本示例中 c:\2 目录存在)

wKiom1RhcRbwlw3AAAQ4QRLHmvo784.jpg

 

撤销配置(全部配置要求满足 即全部需要撤销配置当前均存在)

wKioL1RhcYzCDfygAAXSmHj46x4374.jpg

 

 

撤销配置(部分配置状态满足 即 c:\2\1.txt 不存在)

wKiom1RhcS7T8sMOAATyXJo4FjU622.jpg

 

 

本文档由联科教育-黄锦辉-提供,如有疑问,请咨询: QQ2632942715

 出自 “锦绣前程” 博客 spacer.gifhttp://stephen1991.blog.51cto.com



本文出自 “联科的夏天讲技术” 博客,转载请与作者联系!

你可能感兴趣的:(C#,powershell)