Scripts/DSC2/Mod2/MVAFeatureCode.psm1
function Get-TargetResource { [CmdletBinding()] [OutputType([System.Collections.Hashtable])] param ( [parameter(Mandatory = $true)] [System.String] $FeatureName, [System.Boolean] $Installed, [ValidateSet("Present","Absent")] [System.String] $Ensure ) #Write-Verbose "Use this cmdlet to deliver information about command processing." #Write-Debug "Use this cmdlet to write debug information while troubleshooting." $FeatureExists = Get-WindowsFeature -Name $FeatureName -ErrorAction SilentlyContinue If ($FeatureExists.installed -eq $Installed) { Write-Verbose "Service status is correct" }Else { write-Verbose "Service status is not correct" } $returnValue = @{ FeatureName = [System.String]$FeatureName Installed = [System.Boolean]$FeatureExists.installed Ensure = [System.String]$Ensure } $returnValue <# $returnValue = @{ FeatureName = [System.String] Installed = [System.Boolean] Ensure = [System.String] } $returnValue #> } function Set-TargetResource { [CmdletBinding()] param ( [parameter(Mandatory = $true)] [System.String] $FeatureName, [System.Boolean] $Installed, [ValidateSet("Present","Absent")] [System.String] $Ensure ) #Write-Verbose "Use this cmdlet to deliver information about command processing." #Write-Debug "Use this cmdlet to write debug information while troubleshooting." Write-verbose "Changing windows feature presence" If ($Installed -eq $True) { Install-WindowsFeature -name $FeatureName }Else { Uninstall-WindowsFeature -name $FeatureName } #Include this line if the resource requires a system reboot. #$global:DSCMachineStatus = 1 } function Test-TargetResource { [CmdletBinding()] [OutputType([System.Boolean])] param ( [parameter(Mandatory = $true)] [System.String] $FeatureName, [System.Boolean] $Installed, [ValidateSet("Present","Absent")] [System.String] $Ensure ) #Write-Verbose "Use this cmdlet to deliver information about command processing." #Write-Debug "Use this cmdlet to write debug information while troubleshooting." $FeatureExists = Get-WindowsFeature -Name $FeatureName -ErrorAction SilentlyContinue if ($Ensure -eq 'Present') { if($FeatureExists -ne $null) { If ($FeatureExists.installed -eq $Installed) { Write-Verbose "Nothing to configure - Feature is installed" Return $True }Else { Write-Verbose "Need to configure - Feature is not installed" Return $False } } else { Write-Verbose "Nothing to configure - Feature do NOT Exist" return $false } } Else { Write-Verbose "Nothing to configure - Ensure is Absent" return $False } <# $result = [System.Boolean] $result #> } Export-ModuleMember -Function *-TargetResource |