modules/Azure/Discovery/Public/Update-CIEMAzureResourceRelationship.ps1
|
function Update-CIEMAzureResourceRelationship { [CmdletBinding(DefaultParameterSetName = 'ByProperties')] [OutputType('CIEMAzureResourceRelationship[]')] param( [Parameter(Mandatory, ParameterSetName = 'ByProperties')] [int]$Id, [Parameter(ParameterSetName = 'ByProperties')] [string]$SourceId, [Parameter(ParameterSetName = 'ByProperties')] [string]$SourceType, [Parameter(ParameterSetName = 'ByProperties')] [string]$TargetId, [Parameter(ParameterSetName = 'ByProperties')] [string]$TargetType, [Parameter(ParameterSetName = 'ByProperties')] [string]$Relationship, [Parameter(ParameterSetName = 'ByProperties')] [string]$CollectedAt, [Parameter(Mandatory, ParameterSetName = 'InputObject', ValueFromPipeline)] [PSObject[]]$InputObject, [switch]$PassThru ) process { if ($PSCmdlet.ParameterSetName -eq 'InputObject') { foreach ($obj in $InputObject) { $setClauses = @(); $params = @{ id = $obj.Id } $setClauses += "source_id = @source_id"; $params.source_id = $obj.SourceId $setClauses += "source_type = @source_type"; $params.source_type = $obj.SourceType $setClauses += "target_id = @target_id"; $params.target_id = $obj.TargetId $setClauses += "target_type = @target_type"; $params.target_type = $obj.TargetType $setClauses += "relationship = @relationship"; $params.relationship = $obj.Relationship $setClauses += "collected_at = @collected_at"; $params.collected_at = $obj.CollectedAt Invoke-CIEMQuery -Query "UPDATE azure_resource_relationships SET $($setClauses -join ', ') WHERE id = @id" -Parameters $params -AsNonQuery | Out-Null if ($PassThru) { Get-CIEMAzureResourceRelationship -Id $obj.Id } } } else { $setClauses = @(); $params = @{ id = $Id } $columnMap = @{ SourceId = 'source_id' SourceType = 'source_type' TargetId = 'target_id' TargetType = 'target_type' Relationship = 'relationship' CollectedAt = 'collected_at' } foreach ($paramName in $columnMap.Keys) { if ($PSBoundParameters.ContainsKey($paramName)) { $col = $columnMap[$paramName] $setClauses += "$col = @$col" $params[$col] = $PSBoundParameters[$paramName] } } if ($setClauses.Count -gt 0) { Invoke-CIEMQuery -Query "UPDATE azure_resource_relationships SET $($setClauses -join ', ') WHERE id = @id" -Parameters $params -AsNonQuery | Out-Null } if ($PassThru) { Get-CIEMAzureResourceRelationship -Id $Id } } } } |