Functions/Set-SettingsValue.ps1
Function Set-SettingsValue { [CmdletBinding()] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification='Don''t nee ShouldPorcess')] param( [PSCustomObject] $settings, [string] $name, [object] $value ) $isJson = Test-JsonCustom $value Write-Debug "Setting: $name from parameters - isJson: $isJSon" if ($isJson) { $value = $value | ConvertFrom-Json } if ($settings | get-member $name) { # Write-Verbose "Overriding $($property.Name) -Value $($property.Value) type $($currentSettings.$Prop.GetType().Name)" if ($null -ne $settings.$name -and $settings.$name -is [PSObject]) { Write-Verbose "Property $($name) is Object so merging that with property of type $($value.GetType())" Merge-Settings -CurrentSettings $settings.$name -newSettings $value } else { $settings.$name = $value } } else { Write-Verbose "Adding $name -Value $value " $settings | Add-Member -MemberType NoteProperty -Name $name -Value $value -Force } } |