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

这个章节主要来讲述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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值