首页 > 代码库 > 使用C#构建自定义DSC Resource
使用C#构建自定义DSC Resource
准备先决条件
1. VisualStudio 推荐2012或者更高
2. PowerShell4.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")]
classxFiles : OMI_BaseResource
{
[Key] String Ensure;
[Required] String Name;
[Required] String Path;
};
本架构中仅仅定义了三个参数 Ensure,Name,Path 且均为必须
实现架构
打开VS 创建C#类库项目
同时更名程序集名称为DSC 资源名称 即xFiles
添加对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
实现Test-TargetResource 请注意Test-TargetResource 要求返回布尔类型
但是由于重写ProcessRecord() 方法必须要求Void 所以在我们判断资源状态时候
使用WriteObject() 方法 返回布尔类型
实现Set-TargetResource
此后生成解决方案
将生成的xFiles.DLL 与 xFiles.schema.mof 一同放在
C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\DSCResources\xFiles下
如下图
此后编写DSC 配置文件
Configuration aaa
{
node LocalHost
{
xFiles bbb
{
Name = "1.txt"
Path = "c:\2\"
Ensure = "absent"
}
}
}
测试
分别测试资源状态
应用配置(全部配置要求当前都不满足)
应用配置(部分配置状态满足本示例中 c:\2 目录存在)
撤销配置(全部配置要求满足 即全部需要撤销配置当前均存在)
撤销配置(部分配置状态满足 即 c:\2\1.txt 不存在)
本文档由联科教育-黄锦辉-提供,如有疑问,请咨询: QQ2632942715
出自 “锦绣前程” 博客 http://stephen1991.blog.51cto.com
本文出自 “联科的夏天讲技术” 博客,转载请与作者联系!
使用C#构建自定义DSC Resource