Private/Convert-WMISettingsToBaseline.ps1

<#
.SYNOPSIS
    Converts WMISettings.json to baseline format for import.
.DESCRIPTION
    WMISettings uses WMI verification format, converts to registry baseline format.
#>

function Convert-WMISettingsToBaseline {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true)]
        [array]$WMISettings
    )

    $baseline = [System.Collections.Generic.List[object]]::new()

    foreach ($item in $WMISettings) {
        if (-not $item.RegistryKeyName) { continue }
        
        $baselineItem = [PSCustomObject]@{
            Source = 0
            KeyName = $item.RegistryKeyName -replace '\\', '\\'
            ValueName = $item.RegistryValueName
            Type = if ($item.DesiredWMIValues -and $item.DesiredWMIValues[0].Type -eq 'bool') { 4 } else { if ($item.DesiredWMIValues -and $item.DesiredWMIValues[0].Type -eq 'string') { 1 } else { 4 } }
            Size = 4
            Data = ""
            RegValue = if ($item.DesiredWMIValues) { $item.DesiredWMIValues[0].Value } else { "" }
            Hive = $item.RegistryHive
            PolicyAction = 0
            FriendlyName = $item.FriendlyName
            URL = ""
            Category = 0
            SubCategory = $null
            DefaultRegValue = $null
            DeviceIntents = @(99)
            ID = [guid]::NewGuid().ToString()
        }
        $baseline.Add($baselineItem)
    }

    return @($baseline)
}