使用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#类库项目

同时更名程序集名称为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

实现Test-TargetResource
请注意Test-TargetResource 要求返回布尔类型
但是由于重写 ProcessRecord() 方法必须要求Void
所以在我们判断资源状态时候
使用WriteObject() 方法
返回布尔类型

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

实现Set-TargetResource
 此后生成解决方案
将生成的xFiles.DLL 与
xFiles.schema.mof 一同放在
C:WindowsSystem32WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationDSCResourcesxFiles下如下图:

此后编写DSC 配置文件

Configuration aaa
{
    node LocalHost
    {
        xFiles bbb
        {
            Name = "1.txt"
            Path = "c:2"
            Ensure = "absent"
        }
    }
}
 
测试
分别测试资源状态
应用配置(全部配置要求当前都不满足)


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

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

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

本文已于2014-08-06同步在www.ilync.cn发布

时间: 2024-08-01 16:06:18

使用C#构建自定义DSC Resource的相关文章

十六、C# 常用集合类及构建自定义集合(使用迭代器)

常用集合类及构建自定义集合 1.更多集合接口:IList<T>.IDictionary<TKey,TValue>.IComparable<T>.ICollection<T> 2.主要集合类:List<T>.IDictionary<TKey,TValue>.SortedDictionary<TKey,TValue>和SortedList<T> Stack<T>.Queue<T>.Linke

详细例子构建自定义cell

在实际做项目中,使用系统自带的tableView时,cell的样式单一,不易改变.而使用xib时,能改变cell的样式,但是项目不具有可改性,xib 一旦创立,内容不会改变,这里,利用封装的思想,用纯代码建立自定义cell,数据使用plist文件存储 1.首先建立一个数据模型(moreBang),在头文件中(moreBang.h)定义模型中的属性,并将字典转为模型数据: 在moreBang.m中实现方法:(在对象方法中还可以使用KVC转化) 2.其次,在建立cell的frame模型,设置各个空间

Linux下基于官方源代码RPM包构建自定义MySQL RPM包

1.首先安装rpmbuild #yum install rpm-build gcc gcc-c++ cmake bison ncurses-devel zlib  -y 2.下载官方源码包(tar.gz格式),并解压 #wget  http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz #tar -xvf mysql-5.6.15.tar.gz 3.新建RPM文件夹 #cd  mysql-5.6.15 #mkdir rpm

Docker | 第五章:构建自定义镜像

前言 上一章节,主要是介绍了下Dockerfile的一些常用命令的说明.我们知道,利用Dockerfile可以构建一个新的镜像,比如运行Java环境,就需要一个JDK环境的镜像,但直接使用公共的镜像时,一般上大小都比较大.所以本章节就主要结合Dockerfile文件及commit方式,构建属于自己的镜像,同时对镜像进行压缩和优化,同时也是对Dockerfile知识的一个实践. 利用Dockerfile构建自定义镜像 选定基础镜像 准备JRE版本 编写Dockerfile 实践:运行SpringB

构建自定义docker镜像,上传至docker hub

docker 优势 (外部参考) Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后 发布到任何流行的Linux机器上,便可以实现虚拟化.Docker改变了虚拟化的方 式,使开发者可以直接将自己的成果放入Docker中进行管理.方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就能完成. 安装docker(请参考外部链接) [Ubuntu Docker 安装](http://www.runoob.com/dock

Dockerfile详解,以及构建自定义镜像

Dockerfile使用 前面的操作我们一直下载下载官方已经构建好的镜像,直接下载后就可以run,如果我们想要在镜像中添加自己的应用,比如在tomcat中添加自己的app,构建一个自定义的镜像,那么我们应该怎么做,这个时候就用到了Dockerfile.Dockerfile是由一系列命令和参数构成的脚本,Docker可以根据这个脚本基于某个基础镜像创建一个新的定制化的镜像,大大提高了我们部署的效率,使用Dockfile最终的结果是帮助我们定制化自己的镜像. Dockerfile初体验 下面就基于t

WPF 中,动态创建Button,并使Button得样式按照自定义的Resource样式显示

第一步:自定义一个Button的样式 1.新建一个xaml文件,在其中自定义好自己的Resources 这个Resource 的根节点是 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"></ResourceDictio

使用 Yocto Project 构建自定义嵌入式 Linux 发行版

概述 Yocto Project 是一个开源协作项目,它提供了一些模板.工具和方法来支持面向嵌入式产品的自定义 Linux 系统,不管硬件架构是什么.我想要告诉那些对 yocto 这个名称不甚理解的用户的是,术语 yocto是最小的 SI 单元.最为一个前缀,yocto 表示 10^-24. 本文将提供一个分步指导,向您介绍如何使用 Yocto Project 的行业标准开源工具为嵌入式设备创建自定义的 Linux 操作系统,并使用 QEMU 在一台虚拟机中启动操作系统.Yocto Projec

使用VisualStudio构建自定义Snap-In

Snap-In 即在PowerShell V1 时候引入的二进制管理单元,必须使用 Visual Studio 等开发工具进行开发.用于扩展系统功能,自定义CmdLet由于这种方法专业性强,普通用户无法独立完成.故在PowerShell V2的时候引入全新的概念 "模块", 此时 用于扩展系统功能的"模块" 不再需要专业开发人员进行开发,普通用户可以使用PowerShell 本身的语句,命令进行自定义开发,因其友好,简单,而且易于实现.成为现阶段普通用户扩展 Pow