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) } |