Public/Update-CIEMProvider.ps1
|
function Update-CIEMProvider { <# .SYNOPSIS Updates an existing CIEM cloud provider. .DESCRIPTION Modifies properties of a provider in the CIEM SQLite database. Only specified parameters are updated; unspecified ones are preserved. Authentication context is managed separately via provider-specific functions (e.g., *-CIEMAzureAuthenticationProfile). .PARAMETER Name Provider name to update (case-insensitive). .PARAMETER Enabled Whether the provider is enabled. .PARAMETER PassThru Returns the updated provider object. By default, this function produces no output. .OUTPUTS [CIEMProvider] When -PassThru is specified, the updated provider object with computed CheckCount. .EXAMPLE Update-CIEMProvider -Name 'GCP' -Enabled $true #> [CmdletBinding()] [OutputType('CIEMProvider')] param( [Parameter(Mandatory)] [string]$Name, [Parameter()] [bool]$Enabled, [Parameter()] [switch]$PassThru ) $ErrorActionPreference = 'Stop' $providerId = $Name.ToLower() $now = (Get-Date).ToString('o') # Verify provider exists $existing = Invoke-CIEMQuery -Query "SELECT id, type FROM providers WHERE id = @id" -Parameters @{ id = $providerId } if (-not $existing) { throw "Provider '$Name' not found. Use New-CIEMProvider to create it." } # Update enabled flag if ($PSBoundParameters.ContainsKey('Enabled')) { Invoke-CIEMQuery -Query "UPDATE providers SET enabled = @enabled, updated_at = @now WHERE id = @id" -Parameters @{ id = $providerId; enabled = if ($Enabled) { 1 } else { 0 }; now = $now } -AsNonQuery | Out-Null } if ($PassThru) { Get-CIEMProvider -Name $Name } } |