modules/Devolutions.CIEM.Graph/Private/GetCIEMGraphEntity.ps1
|
function GetCIEMGraphEntity { [CmdletBinding()] param( [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string]$Entity, [Parameter()] [hashtable]$Filters = @{} ) $ErrorActionPreference = 'Stop' $config = GetCIEMGraphEntityConfig -Entity $Entity $query = "SELECT $($config.SelectColumns -join ', ') FROM $($config.Table)" $conditions = [System.Collections.Generic.List[string]]::new() $parameters = @{} foreach ($filterName in ($Filters.Keys | Sort-Object)) { if (-not $config.FilterColumns.ContainsKey($filterName)) { throw "GetCIEMGraphEntity: unknown filter '$filterName' for entity '$Entity'." } $column = $config.FilterColumns[$filterName] $conditions.Add("$column = @$column") $parameters[$column] = $Filters[$filterName] } if ($conditions.Count -gt 0) { $query += "`nWHERE " + ($conditions -join ' AND ') } $rows = @(Invoke-CIEMQuery -Query $query -Parameters $parameters) @(foreach ($row in $rows) { ConvertCIEMGraphEntityRow -Entity $Entity -Row $row }) } |