Get-Command -Module PSDesiredStateConfiguration
# get all DSC resources
Get-DSCResource
# Get (configurable) properties for specific resource
Get-DSCResource -Name 'File' | Select-Object -ExpandProperty 'Properties'
# Get configuration syntax template
Get-DSCResource -Name 'File' -Syntax
# Get information for specific resource
Get-DSCResource -Name 'Service' | Select-Object *
Configuration MyConfiguration
{
# Import-DSCResource is a keyword and not a PS-command
Import-DSCResource -Module @('WindowsFeature','File','RemoteRegistry')
Node Computername {
WindowsFeature Backup {
Name="Windows-Server-Backup"
Ensure="Present"
}
File Development {
Type="Directory"
Ensure="Present"
DestinationPath="C:\Development"
}
Service RemoteRegistry {
Name="RemoteRegistry",
Startup="Automatic"
State="Running"
}
}
Node @("Server1", "Server2") {
# ...
}
}
# Load configuration
. .\MyConfiguration.ps1
# Create MOF file
MyConfiguration
# Execute configuration on computer
Start-DscConfiguration -Path .\MyConfiguration
$ConfigurationData = @{
AllNodes = @( # required key
@{NodeName = "FP-123"; Role = "FilePrint"},
@{NodeName = "WS-421"; Role = "WebServer"},
@{NodeName = "*"; Features = "Windows-Server-Backup","PowerShell-V4"}
);
MyData = @{ # optional arbitrarily named key
MyData = Import-CSV "C:\Development\Translations.csv"
}
}
Configuration MyConfiguration
{
Node $AllNodes.Nodename {
$Node.features.foreach({
WindowsFeature $_ {
Name = $_
Ensure = "Present"
}
})
Service RemoteRegistry {
Name = "RemoteRegistry",
StartupType = "Automatic"
State = "Running"
}
}
}
[DSCLocalConfigurationManager()]
Configuration PartialConfigDemo
{
Node localhost
{
PartialConfiguration ServiceAccountConfig
{
Description = 'Configuration to add the SharePoint service account to the Administrators group.'
RefreshMode = 'Push'
}
PartialConfiguration SharePointConfig
{
Description = 'Configuration for the SharePoint server'
RefreshMode = 'Push'
}
}
}
PartialConfigDemo