Try {

$Result = Invoke-DscResource @InvokeParams

} catch {

$Response.errormessage   = $_.Exception.Message
return ($Response | ConvertTo-Json -Compress)

} Finally {

If (![string]::IsNullOrEmpty($UnmungedPSModulePath)) {
  # Reset the PSModulePath
  [System.Environment]::SetEnvironmentVariable('PSModulePath', $UnmungedPSModulePath, [System.EnvironmentVariableTarget]::Machine)
  $env:PSModulePath = [System.Environment]::GetEnvironmentVariable('PSModulePath', 'machine')
}

}

# keep the switch for when Test passes back changed properties Switch ($invokeParams.Method) {

'Test' {
  $Response.indesiredstate = $Result.InDesiredState
  return ($Response | ConvertTo-Json -Compress)
}
'Set' {
  $Response.indesiredstate = $true
  $Response.rebootrequired = $Result.RebootRequired
  return ($Response | ConvertTo-Json -Compress)
}
'Get' {
  $CanonicalizedResult = ConvertTo-CanonicalResult -Result $Result
  return ($CanonicalizedResult | ConvertTo-Json -Compress -Depth 10)
}

}