functions/Get-G2DDscConfigurationString.ps1
<# .SYNOPSIS Convert array of policy rule entries to a DSC configuration script .DESCRIPTION Convert array of policy rule entries to a DSC configuration script .PARAMETER ConfigurationItem The list of configuration items .PARAMETER ConfigurationName The name of the configuration .EXAMPLE Get-ChildItem -Path . -File | Get-G2DObjectFromPolicyRulesFile | Group-Object -Property PolicyName | ForEach-Object { $_.Group | Get-G2DDscConfigurationString -ConfigurationName $_.Name } Convert an entire folder of PolicyRules files to DSC configuration strings #> function Get-G2DDscConfigurationString { param ( [Parameter(Mandatory, ValueFromPipeline)] [object[]] $ConfigurationItem, [Parameter(Mandatory)] [string] $ConfigurationName ) begin { $string = [System.Text.StringBuilder]::new() $null = $string.AppendLine( "configuration '$($ConfigurationName)'" ) $null = $string.AppendLine( '{' ) $null = $string.AppendLine( " Import-DscResource -ModuleName PSDesiredStateConfiguration" ) $null = $string.AppendLine( " Import-DscResource -ModuleName SecurityPolicyDsc" ) $null = $string.AppendLine( " Import-DscResource -ModuleName AuditPolicyDsc" ) $null = $string.AppendLine( '' ) $null = $string.AppendLine( '' ) $count = 0 } process { foreach ($item in $ConfigurationItem) { Write-PSFMessage -Message ($item | Out-String) switch ($item.ObjectType) { 'RegistryItem' { $null = $string.AppendLine( " $($item.ResourceName)" ) $null = $string.AppendLine( " {" ) $null = $string.AppendLine( (" ValueName = '{0}'" -f $item.ValueName)) $null = $string.AppendLine( (" ValueData= '{0}'" -f $($item.ValueData -join '","'))) $null = $string.AppendLine( (" ValueType = '{0}'" -f $Item.ValueType)) $null = $string.AppendLine( (" Key = '{0}'" -f $Item.Key)) $null = $string.AppendLine( " }" ) break } 'UserRightsAssignment' { $null = $string.AppendLine( " $($item.ResourceName)" ) $null = $string.AppendLine( " {" ) $null = $string.AppendLine( (" Identity = '{0}'" -f $($item.Identity -join "','"))) $null = $string.AppendLine( (" Policy = '{0}'" -f $item.Policy)) $null = $string.AppendLine( " }" ) break } 'SecurityOptions' { $null = $string.AppendLine( " $($item.ResourceName)" ) $null = $string.AppendLine( " {" ) $null = $string.AppendLine( " $($item.SettingName) = '$($item.SettingValue)'") $null = $string.AppendLine( " Name = '$($item.ObjectType)$count'") $null = $string.AppendLine( " }" ) $count ++ break } 'AuditPol' { $null = $string.AppendLine( " $($item.ResourceName)" ) $null = $string.AppendLine( " {" ) $null = $string.AppendLine( (" AuditFlag = '{0}'" -f $item.AuditFlag)) $null = $string.AppendLine( (" Name = '{0}'" -f $item.Name)) $null = $string.AppendLine( " }" ) break } } $null = $string.AppendLine( '' ) $null = $string.AppendLine( '' ) } } end { $null = $string.AppendLine( '}' ) $string.ToString() } } |