[2] Window PowerShell DSC 学习系列----DSC的资源(Resource)以及配置和格式(Configuration && Sytax )

原创 2017年01月09日 23:19:21

这个章节主要来讲述DSC的资源(Resource)以及配置和格式(Configuration && Sytax )。

#1 DSC 资源(The DSC resources

简单的来说,DSC资源就是被用来配置节点成理想状态的一个最低资源的单位的集合。PowerShell DSC会默认提供一些内置的DSC 资源。比如,我们在PowerShell控制台执行Get- DSCResource这个命令,其会列出所有的内置的可用的资源。


  • File: 管理文件和文件夹
  • Archive: 压缩和解压缩zip格式的文件
  • Environment: 管理系统的环境变量
  • Log: 把消息写入到PowerShell DSC的事件日志里面
  • Package: 安装或者卸载软件包
  • Registry: 管理除了HKEY User以外的注册表
  • Script: 在目标节点上面执行PowerShell的命令或者脚本
  • Service: 管理Window的服务(比如状态,启动类型)
  • User: 管理本地系统上的用户
  • WindowsFeature:添加或者删除一个角色或者功能(role/feature)
  • WindowsOptionalFeature: 添加或者删除一个可选的角色或者功能(role/feature)
  • WindowsProcess: 管理Window的进程
  • WaitForAll / WaitForAny / WaitForSome: 在PowerShell WMF 5.0 的版本中可用。支持跨计算机的同步;且支持不同计算机之间的部署依赖。比如,有一个Web服务器和一个数据库服务器,可以设定当数据库服务器的数据库更新后,Web服务器上的应用程序才能安装。
此外,PowerShell也支持对PowerShell DSC的资源的扩展。最新的扩展的DSC Resouce有下面这些。
  • cFileShare
  • xActiveDirectory
  • xAdcsDeployment
  • xAzure
  • xAzurePack
  • xBitlocker
  • xChrome
  • xComputerManagement
  • xCredSSP
  • xDatabase
  • xDhcpServer
  • xDisk
  • xDismFeature
  • xDnsServer
  • xDscDiagnostics
  • xDSCResourceDesigner
  • xExchange
  • xFailOverCluster
  • xFirefox
  • xHyper-V
  • xInternetExplorerHomePage
  • xJea
  • xMySql
  • xNetworking
  • xOU
  • xPendingReboot
  • xPhp
  • xPowerShellExecutionPolicy
  • xPSDesiredStateConfiguration
  • xReleaseManagement
  • xRemoteDesktopAdmin
  • xRemoteDesktopSessionHost
  • xSafeHarbor
  • xSCDPM
  • xSCOM
  • xSCSMA
  • xSCSPF
  • xSCSR
  • xSCVMM
  • xSmbShare
  • xSqlPs
  • xSQLServer
  • xSystemSecurity
  • xTimeZone
  • xWebAdministration
  • xWindowsRestore
  • xWindowsUpdate
  • xWinEventLog
  • xWordPress

那么如何安装这些额外的资源呢?


Step 1 首先到 https://gallery.technet.microsoft.com/scriptcenter/DSC-Resource-Kit-All-c449312d 下载最新的DSC Resource Tool Kit

Step 2 下载之后,解压缩。

Step 3  用下面的命令查看DSC resource 的扩展模块可以放到什么地方

PS C:\DSC> Get-ChildItem -Path Env:\PSModulePath | Format-List
Name  : PSModulePath
Value : C:\Users\Admin\Documents\WindowsPowerShell\Modules;C:\Program
        Files\WindowsPowerShell\Modules;C:\windows\system32\WindowsPowerShell\v1.0\Modules

Step 4 然后把解压缩后,根目录下面的几十个文件夹已经其内容拷贝到上面的任意路径,笔者拷贝到 C:\Program Files\WindowsPowerShell\Modules 



Step 5 然后,在用Get-DSCResource | Select-Object –Property Name | Format-Wide –Column 1 

命令查看,则可以看到额外的资源已经安装成功。


注意:上面这种方式在PowerShell DSC 4.x和5.x都可以使用,但是在PowerShell DSC 5.x 之后,还有另外一种方式可以使用。

Find-Module -Tag DSCResourceKit 
Find-DscResource

具体用法,笔者将会在后续文章列出。


#2 DSC配置格式(DSC Syntax

既然PowerShellDSC能够定义用来定义理想配置状态,那么这个理想配置状态肯定是由一个配置文件来描述的,那么这个配置文件必须遵从一定的格式,下面来介绍一下DSC配置的结构和格式。其主要结构如下:

ConfigurationConfigName#第1部分
{  
  param(#第2部分
    [Parameter(Mandatory=$true)]
    [String[]]$Param1,
    [Parameter(Mandatory=$true)]
    [String]$Param2,
    [Parameter(Mandatory=$true)]
    [String]$Param3
  )
  Node$Servers#第3部分
  {  
    FileResName#第4部分
    {
        ...  #第5部分
    }
  }  
  Node$Servers#第3部分
  {  
    WindowsFeatureResName2#第4部分
    {
        ...  #第5部分
    }
  }  
}

第1部分:关键字“Configuration”后面紧跟的是配置的名称(ConfigurationName),主要用来描述当前配置文件的作用。
第2部分:包含了要在这个配置文件中使用的参数,相当于一个方法的传入参数。
第3部分 这部分主要用来显示配置需要部署到个服务器上
第4部分: 就是你想配置的PowerShell 资源.当前的例子, 其使用了"File"和“WindowFeature”,后面跟上一个友好的名字描述。
第5部分:包含期望的资源的状态的属性描述,其使用键值对描述的“key=value”


下面是一个具体的例子,用来把一个Hosts文件拷贝到目标机器上。

ConfigurationDeployHostFile
{  
  param(
    [Parameter(Mandatory=$true)]
    [String[]]$Servers,
    [Parameter(Mandatory=$true)]
    [String]$SourceFile,
    [Parameter(Mandatory=$true)]
    [String]$DestinationFile
  )
  Node$Servers
  {  
    FileCopyHostFile
    {
        Ensure="Present"
        Type="File"
        SourcePath=$SourceFile
        DestinationPath=$DestinationFile
    }
  }
}

上面是一个具体的例子,用来把一个Hosts文件拷贝到目标机器上。简单解释一下上面的PowerShell DSC的程序,当前的配置文件名字叫做
DeployHostFile,其包含了3个强制的传入参数($Servers, $SourceFile, $DestinationFile). Node部分显示器有一个File类型的资源,将会在目标节点上生成。

使用下面的命令,可以得到具体的格式的信息。具体信息,请参考https://msdn.microsoft.com/en-us/powershell/dsc/builtinresource

PS>Get-DSCResourceFile-syntax







#3  DSC resource 的实现方式

我们知道,在PowerShell DSC的配置文件里面需要用到PowerShell DSC的resource,那么这些resource可以理解成为具体的执行代码。

其有三种实现方式,Binary(二进制),PowerShell以及Composite(组合)。

  • Binary                      File 
  • PowerShell            Archive,Environment,Service,WindowsFeature
  • Composite            ServiceSet,WindowsFeatureSet


在下一篇文章里面,我们会简单介绍一下,如何应用一个配置文件,并使其生效,敬请期待。




参考文件:

https://www.simple-talk.com/sysadmin/powershell/powershell-desired-state-configuration-the-basics/

版权声明:本文为博主原创文章,未经博主允许不得转载。

[1] Window PowerShell DSC 学习系列----DSC的定义和2种架构模式

PowerShell DSC是PowerShell的一部分,是一个新的管理平台,英文全称为,PowerShell Desired Status Configuration,翻译成中文就是理想管理配置状...
  • chancein007
  • chancein007
  • 2017年01月09日 23:09
  • 1586

DSC模块之Modbus通讯(以PLC为例)

http://digital.ni.com/public.nsf/allkb/F716ABC0F75705ED86257AF5002E1451 主要软件: LabVIEW...
  • leonliufeng
  • leonliufeng
  • 2016年06月21日 10:02
  • 1835

UEFI原理与编程(七):包及.dsc、.dec、.fdf文件

包及.dsc、.dec、.fdf文件  前面的文章中比较详细介绍了UEFI工程文件即.inf。UEFI的包中一般都会包含一个.dsc文件和一个dec文件。在包生成固件Image、Option Rom ...
  • sevensevensevenday
  • sevensevensevenday
  • 2017年04月27日 15:27
  • 2116

[22]Window PowerShell DSC学习系列---- 如何用PowerShell脚本查看DSC服务器的执行报表(Report)

本文只适合DSC 5.x的版本。我们知道在DSC 5.x的版本中,Pull服务器和Report是安装在一起的。那么当目标节点注册成功到Pull和Report服务器之后,且Pull服务器上的MOF和Re...
  • chancein007
  • chancein007
  • 2017年02月14日 13:45
  • 1715

使用AO往MDB和SDE写数据的一些经验之谈

http://blog.163.com/1234_wangmin/blog/static/1276550200923115753767/    往PersonalGDB或SDEGDB中写入要素记...
  • zzh_my
  • zzh_my
  • 2013年12月10日 21:19
  • 829

[16]Windows PowerShell DSC学习系列---基于Class风格定制DSC资源?

前面的章节介绍了,[15]Windows PowerShell DSC学习系列---基于.NET DLL(C#) 定制DSC资源?和 [11] Windows PowerShell DSC学习系列--...
  • chancein007
  • chancein007
  • 2017年02月13日 13:57
  • 1692

[5] Window PowerShell DSC 学习系列----如何生成一个DSC MOF文件?

在前面的四个章节,笔者介绍了一些PowerShell基础的知识,包括PowerShell DSC的基本架构,DSC的资源以及配置格式,已经在PowerShell DSC 如何安装扩展的DSC Modu...
  • chancein007
  • chancein007
  • 2017年01月23日 16:07
  • 1444

[25]Window PowerShell DSC学习系列----如何更换DSC Pull服务器数据库为Access数据库?

我们知道,PowerShell DSC的默认数据库为ESENT文件数据库;或者oleDB形式的Access数据库(数据库文件后缀名为:mdb). 默认安装方式下,如果用xDscWebService D...
  • chancein007
  • chancein007
  • 2017年04月10日 22:24
  • 1966

linux/ubuntu中制作deb安装包

linux/ubuntu中如何制作deb安装包由于要制作一个在arm平台上运行的xorg-server-1.12.4版本的安装包,所以需要学习如何制作deb安装包。这里以一个非常小的工程为例,记录制作...
  • mountzf
  • mountzf
  • 2016年07月08日 20:58
  • 4237

DTU基础知识普及手册

1、什么是DTU?     答:DTU是数据终端设备(Data Terminal unit)的简写。广义地讲,在进行通信时,传输数据的链路两端负责发送数据信息的模块单元都称之为DTU,在它的作用...
  • xutonghuang1986
  • xutonghuang1986
  • 2013年11月20日 15:57
  • 2866
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[2] Window PowerShell DSC 学习系列----DSC的资源(Resource)以及配置和格式(Configuration && Sytax )
举报原因:
原因补充:

(最多只允许输入30个字)