DSC approaches declarative syntax that describes what needs to be done rather than covering imperative syntax that specifies how a task can be performed.
To use DSC, first define a desired configuration. Like functions, configurations in DSC can be defined in the Windows PowerShell language by using the
Configuration keyword and stored in script (
.ps1) or module (
.psm1) files. Also, similar to functions, configurations need to be defined and then run.
To use a configuration, invoke the
Configurationblock the same way you would invoke a Windows PowerShell function, passing in any expected parameters you have defined (two in the preceding sample). For example, in this case, the
MyWebConfigconfiguration can be invoked as follows:
PS C :\>MyWebConf -MachineName $env:COMPUTERNAME –WebsitePath \\PSShare\MyWebSites
This will create a folder with the same name as your configuration name and will contain our MOF output file.
The following command creates an MOF file known as the configuration instance document.
Pathrepresents the target directory where your MOF files are located.
Waitcauses the execution of the DSC resources to run in the background, that is, an interactive process.
PS C :\>Start-DscConfiguration -Path .\ MyWebConf –Wait –Verbose
Each Configuration block must have at least one Node block. Each Node block can have one or more resource provider blocks. You can use the same role provider more than once in the same Node block.
In addition to new language keywords, DSC includes the following set of CMDLETs for managing configurations:
Start-DscConfiguration: This CMDLET deploys a configuration to one or more target nodes and applies the configuration on those nodes by using the local configuration manager
Get-DscConfiguration: This CMDLET returns the current configuration from one or more target machines:
PS C :\>$Sess = New-CimSession -ComputerName localhost PS C :\>Get-DscConfiguration –CimSession $Sess
Restore-DscConfiguration: This CMDLET restores the current configuration from one or more target machines:
PS C :\>$Sess = New-CimSession -ComputerName localhost PS C :\>Restore-DscConfiguration –CimSession $Sess
There is one more CMDLET that helps to detect the configuration drift:
Test-DscConfiguration: This CMDLET checks for one or more target nodes and returns a Boolean value indicating whether the current desired state matches the actual state. Have a look at the following command:
PS C :\>$session = New-CimSession -ComputerName localhost PS C :\>Test-DscConfiguration –CimSession $session
This will either return
Truewhen the current and actual configuration matches or
Falseif there's a mismatch