程序员人生 网站导航

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

栏目:服务器时间:2017-03-10 10:17:38

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

#1 DSC 资源(The DSC resources

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


  • File: 管理文件和文件夹
  • Archive: 紧缩和解紧缩zip格式的文件
  • Environment: 管理系统的环境变量
  • Log: 把消息写入到PowerShell DSC的事件日志里面
  • Package: 安装或卸载软件包
  • Registry: 管理除HKEY User之外的注册表
  • Script: 在目标节点上面履行PowerShell的命令或脚本
  • Service: 管理Window的服务(比如状态,启动类型)
  • User: 管理本地系统上的用户
  • WindowsFeature:添加或删除1个角色或功能(role/feature)
  • WindowsOptionalFeature: 添加或删除1个可选的角色或功能(role/feature)
  • WindowsProcess: 管理Window的进程
  • WaitForAll / WaitForAny / WaitForSome: 在PowerShell WMF 5.0 的版本中可用。支持跨计算机的同步;且支持不同计算机之间的部署依赖。比如,有1个Web服务器和1个数据库服务器,可以设定当数据库服务器数据库更新后,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

#2 DSC配置格式(DSC Syntax

既然PowerShellDSC能够定义用来定义理想配置状态,那末这个理想配置状态肯定是由1个配置文件来描写的,那末这个配置文件必须遵从1定的格式,下面来介绍1下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部份:包括了要在这个配置文件中使用的参数,相当于1个方法的传入参数。
第3部份 这部份主要用来显示配置需要部署到个服务器
第4部份: 就是你想配置的PowerShell 资源.当前的例子, 其使用了"File"和“WindowFeature”,后面跟上1个友好的名字描写。
第5部份:包括期望的资源的状态的属性描写,其使用键值对描写的“key=value”


下面是1个具体的例子,用来把1个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
    }
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐