Private/Set-FPControlRegistry.ps1
function Set-FPControlRegistry { <# .SYNOPSIS Process Configuration Control: Registry Settings .DESCRIPTION Process Configuration Control: Registry Settings .PARAMETER DataSet XML data from control file import .EXAMPLE Set-FPControlRegistry -DataSet $xmldata #> [CmdletBinding(SupportsShouldProcess = $True)] param ( [parameter(Mandatory = $True)]$DataSet ) Write-FPLog "--------- registry assignments: begin ---------" foreach ($reg in $DataSet) { $deviceName = $reg.device $collection = $reg.collection $regAction = $reg.action $regpath = $reg.path $regval = $reg.value $regdata = $reg.data $regtype = $reg.type Write-FPLog "device name........... $deviceName" Write-FPLog "collection............ $collection" Write-FPLog "keypath............... $regpath" Write-FPLog "action................ $regAction" switch ($regAction) { 'create' { if ($regdata -eq '$controlversion') { $regdata = $controlversion } if ($regdata -eq '$(Get-Date)') { $regdata = Get-Date } Write-FPLog "device................ $scDevice" Write-FPLog "value................. $regval" Write-FPLog "data.................. $regdata" Write-FPLog "type.................. $regtype" if (-not(Test-Path $regpath)) { Write-FPLog "key not found, creating registry key" if (-not $TestMode) { New-Item -Path $regpath -Force | Out-Null Write-FPLog "updating value assignment to $regdata" New-ItemProperty -Path $regpath -Name $regval -Value "$regdata" -PropertyType $regtype -Force | Out-Null } else { Write-FPLog "TESTMODE: Would have been applied" } } else { Write-FPLog "key already exists" if (-not $TestMode) { try { $cv = Get-ItemProperty -Path $regpath -Name $regval -ErrorAction SilentlyContinue | Select-Object -ExpandProperty $regval } catch { Write-FPLog "$regval not found" $cv = "" } Write-FPLog "current value of $regval is $cv" if ($cv -ne $regdata) { Write-FPLog "updating value assignment to $regdata" New-ItemProperty -Path $regpath -Name $regval -Value "$regdata" -PropertyType $regtype -Force | Out-Null } } else { Write-FPLog "TESTMODE: Would have been applied" } } break } 'delete' { if (Test-Path $regPath) { if (-not $TestMode) { try { Remove-Item -Path $regPath -Recurse -Force | Out-Null Write-FPLog "registry key deleted" } catch { Write-FPLog -Category "Error" -Message $_.Exception.Message } } else { Write-FPLog "TESTMODE: Would have been applied" } } else { Write-FPLog "registry key not found: $regPath" } break } } # switch } # foreach Write-FPLog "--------- registry assignments: finish ---------" } |