[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...

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

在使用PowerShell DSC的时候,我们经常需要使用 PSDesiredStateConfiguration的一些常用的命令去配置或者获取一些DSC的配置信息已经设置DSC的LCM的状态等信息;...

[3] Window PowerShell DSC 学习系列----如何在PowerShell DSC 5.x 安装最新的DSC Module?

在PowerShell DSC 4.0的版本的时候,所有的resource Kit必须从一个网站上下载,然后拷贝到相应的目录(比如 C:\Users\Admin\Documents\WindowsPo...

[13]Windows PowerShell DSC学习系列---直接调用DSC的资源方法

在PowerShell DSC 5.x中,我们能够使用Invoke-DscResource 这个DSC的命令去直接调用DSC 资源文件中定义的方法或者函数(如果是基于MOF的资源的话,其里面包含Get...

Windows PowerShell 实战指南-动手实验-8.10

任务1:找出生随机数字的Cmdlet。解答:Get-Random任务2:找出显示当前时间和日期的Cmdlet解答:Get-Date任务3:任务#2的Cmdlet产生的对象类型是什么?解答:Get-Da...

[3] Window PowerShell DSC 学习系列----如何在PowerShell DSC 5.x 安装最新的DSC Module?

在PowerShell DSC 4.0的版本的时候,所有的resource Kit必须从一个网站上下载,然后拷贝到相应的目录(比如 C:\Users\Admin\Documents\WindowsPo...

[17]Windows PowerShell DSC学习系列---使用WMI Tester调用msft-dsclocalconfigurationmanager类的方法

在这边文章中,其列出了DSC中的本地配置管理引擎中的msft-dsclocalconfigurationmanager类,其列出了这个类中的很多方法。比如GetConfigurationStatus,...

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

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

[23]Window PowerShell DSC学习系列---- MOF文件能存储用户的密码吗?

我们知道,DSC的资源中,有很多的资源是需要访问文件共享目录,进入本地的用户的目录,或者为一个特定的用户安装一个MSI的安装包,修改注册表;这个时候,如果直接执行调用DSC的资源,则可能会弹出“Acc...

[7] Window PowerShell DSC 学习系列----如何被管理的设置节点注册到Pull Server?

在上一节,[6] Window PowerShell DSC 学习系列----如何安装最新的PowerShell DSC 5.1 Pull Server?笔者聊到了如何安装Pull Server。那么...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[12]Windows PowerShell DSC学习系列---PowerShell DSC的几个例子
举报原因:
原因补充:

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