[12]Windows PowerShell DSC学习系列---PowerShell DSC的几个例子

原创 2017年02月09日 14:12:21

在这节中,笔者给大家分享几个使用PowerShell DSC的例子,并且会持续更新中。。。。。

@修改命令行窗口的背景颜色

把命令行的背景色变成白色

Configuration ChangeCmdBackGroundColor    
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration


    Node $AllNodes.NodeName
    {
        Registry CmdPath
        {
            Key                  = 'HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor'
            ValueName            = 'DefaultColor'
            ValueData            = 'F0'
            ValueType            = 'DWORD'
            Ensure               = 'Present'
            Force                = $true
            Hex                  = $true
            PsDscRunAsCredential = Get-Credential
        }
    }                   
}


$configData = @{
    AllNodes = @(
        @{
            NodeName             = 'localhost';
            PSDscAllowDomainUser = $true
            PSDscAllowPlainTextPassword = $true
        }
    )
}


ChangeCmdBackGroundColor -ConfigurationData $configData
Start-DscConfiguration -path .\ChangeCmdBackGroundColor -wait -Verbose -Force


@解压一个Zip文件

configuration  testzip{
  Import-DscResource –ModuleName 'PSDesiredStateConfiguration'
  Archive ArchiveExample {
    Ensure = "Present"  # You can also set Ensure to "Absent"
    Path = "d:\DSC\22222.zip"
    Destination = "d:\DSC\dd"
  }


}
testzip 
Start-DscConfiguration -path d:\DSC\testZip -wait -Verbose -Force


@安装Chrome浏览器

Configuration InstallGoogleChrome {  
    param (  
        [string[]]$MachineName = "localhost",  
        [Parameter(Mandatory)]$Language,  
        [Parameter(Mandatory)]$LocalPath  
    )  
   
    Import-DscResource -Module xChrome  
   
    Node $MachineName {  
        MSFT_xChrome chrome {  
            Language = $Language  
            LocalPath = $LocalPath  
        }  
    }  
}  
   
InstallGoogleChrome -MachineName (Get-Content -Path "d:\dsc\servers.txt") -Language "en" –LocalPath "C:\Windows\Temp\GoogleChromeStandaloneEnterprise.msi"  

@修改LCM的Debug模式

[DscLocalConfigurationManager()]
Configuration LCMDebugMode{
  Settings{
     DebugMode='ForceModuleImport'
  }


}
LCMDebugMode
Set-DscLocalConfigurationManager -Path .\LCMDebugMode -Force -Verbose

@对于引入的Module制定版本

configuration VersionTest
{
    Import-DscResource -ModuleName xFailOverCluster -ModuleVersion 1.5.0.0


    Node 'localhost'
    {
       xCluster ClusterTest
       {
            Name                          = 'TestCluster'
            StaticIPAddress               = '10.0.0.3'
            DomainAdministratorCredential = Get-Credential
        }
     }
}
VersionTest

@通过数据配置文件(Configuration Data)动态生成MOF文件

#Prompt user for their credentials
#credentials will be unencrypted in the MOF
$promptedCreds = get-credential -Message "Please enter your credentials to generate a DSC MOF:"
# Store passwords in plaintext, in the document itself
# will also be stored in plaintext in the mof
$password = "ThisIsAPlaintextPassword" | ConvertTo-SecureString -asPlainText -Force
$username = "User1"
[PSCredential] $credential = New-Object System.Management.Automation.PSCredential($username,$password)
# DSC requires explicit confirmation before storing passwords insecurely
$ConfigurationData = @{
    AllNodes = @(
        @{
            # The "*" means "all nodes named in ConfigData" so we don't have to repeat ourselves
            NodeName="*"
            PSDscAllowPlainTextPassword = $true
        },
        #however, each node still needs to be explicitly defined for "*" to have meaning
        @{
            NodeName = "TestMachine1"
        },
        #we can also use a property to define node-specific passwords, although this is no more secure
        @{
            NodeName = "TestMachine2";
            UserName = "User2"
            LocalPassword = "ThisIsYetAnotherPlaintextPassword"
        }
        )
}
configuration unencryptedPasswordDemo
{
    Node "TestMachine1"
    {
        # We use the plaintext password to generate a new account
        User User1
        {
            UserName = $username
            Password = $credential
            Description = "local account"
            Ensure = "Present"
            Disabled = $false
            PasswordNeverExpires = $true
            PasswordChangeRequired = $false
        }
        # We use the prompted password to add this account to the local admins group
        Group addToAdmin
        {
            # Ensure the user exists before we add the user to a group
            DependsOn = "[User]User1"
            Credential = $promptedCreds
            GroupName = "Administrators"
            Ensure = "Present"
            MembersToInclude = "User1"
        }
    }
    Node "TestMachine2"
    {
        # Now we'll use a node-specific password to this machine
        $password = $Node.LocalPassword | ConvertTo-SecureString -asPlainText -Force
        $username = $node.UserName
        [PSCredential] $nodeCred = New-Object System.Management.Automation.PSCredential($username,$password)
        User User2
        {
            UserName = $username
            Password = $nodeCred
            Description = "local account"
            Ensure = "Present"
            Disabled = $false
            PasswordNeverExpires = $true
            PasswordChangeRequired = $false
        }
        Group addToAdmin
        {
            Credential = $domain
            GroupName = "Administrators"
            DependsOn = "[User]User2"
            Ensure = "Present"
            MembersToInclude = "User2"
        }
    }
}
unencryptedPasswordDemo -ConfigurationData $ConfigurationData


未完待续。。。。。。。

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

[6] Window PowerShell DSC 学习系列----如何安装最新的PowerShell DSC 5.1 Pull Server?

前面的5个章节做了很多的铺垫,包括Powershell DSC是什么? 能干什么? 其包含了推模式(push)和拉模式(Pull)。 而且笔者也描述了PowerShell DSC的配置文件(Confi...
  • chancein007
  • chancein007
  • 2017年01月24日 00:47
  • 1859

[9] Window PowerShell DSC 学习系列----错误诊断和分析

PowerShell DSC就像一个汽车,内部复杂,司机作为一个普通的用户在使用它,因为知道一些汽车的基本常识,所以当汽车发生一些简单的故障时,可以通过汽车自身带的仪表仪器诊断问题出在哪方面,也可以借...
  • chancein007
  • chancein007
  • 2017年01月31日 00:59
  • 1760

[24]Window PowerShell DSC学习系列---- 如何保护MOF文件里面存储的密码?

在上节笔者分享了[23]Window PowerShell DSC学习系列---- MOF文件能存储用户的密码吗?MOF文件里面能直接存储明文密码,这样是非常不安全的。那么有什么方式能够把MOF里面存...
  • chancein007
  • chancein007
  • 2017年02月24日 15:13
  • 1682

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

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

[4] Window PowerShell DSC 学习系列----PowerShell DSC 5.x 提供了哪些有用好用的工具命令?

在使用PowerShell DSC的时候,我们经常需要使用 PSDesiredStateConfiguration的一些常用的命令去配置或者获取一些DSC的配置信息已经设置DSC的LCM的状态等信息;...
  • chancein007
  • chancein007
  • 2017年01月23日 14:08
  • 1420

[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
  • 1754

[27] Window PowerShell DSC 学习系列----DSC 5.x 查询节点注册和执行报告(Report)查询

我们知道,一旦我们把DSCD额Pull服务器安装成功,且目标节点也注册成功后,我们就可以调用DSC服务的oData的查询。去查询一些信息。请注意,浏览器可能不支持oData的Http的get操作。因此...
  • chancein007
  • chancein007
  • 2017年04月18日 14:22
  • 1772

[31] Window PowerShell DSC 学习系列----PowerShell DSC 专栏竟然在CSDN推荐的优秀专栏里面

PowerShell DSC 专栏竟然在CSDN推荐的优秀专栏里面
  • chancein007
  • chancein007
  • 2017年06月15日 10:02
  • 479

[11] Windows PowerShell DSC学习系列---如何定制一个基于PowerShell脚本实现的DSC Resource

在这片文章中,笔者给大家分享一个更高级的话题,如何定制一个基于PowerShell脚本实现的DSC Resource,为了简单起见,例子的名称为,Hello World的DSC Resource。因为...
  • chancein007
  • chancein007
  • 2017年02月07日 23:36
  • 1344

[14]Windows PowerShell DSC学习系列---如何Debug PowerShell DSC?

在我们开发定制的DSC的资源时候,能Debug DSC的资源非常的重要。Debug DSC的资源的功能直到DSC 5.x 版本以后才支持。言归正传,开门见山,下面笔者描述一下如何进行PowerShel...
  • chancein007
  • chancein007
  • 2017年02月09日 22:06
  • 1082
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[12]Windows PowerShell DSC学习系列---PowerShell DSC的几个例子
举报原因:
原因补充:

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