Public/Get-CIEMResourceType.ps1
|
function Get-CIEMResourceType { <# .SYNOPSIS Lists resource types from the SQLite resource_types table. .DESCRIPTION Queries the resource_types table and returns typed objects per provider. Returns PSCustomObjects (not class instances) to ensure compatibility with PSU runspaces, matching the pattern used by Get-CIEMProviderService. .PARAMETER Provider Filter by cloud provider (Azure, AWS). .PARAMETER Name Filter by resource type name (e.g., "KeyVault", "S3Bucket"). .OUTPUTS [PSCustomObject[]] Array of resource type objects. .EXAMPLE Get-CIEMResourceType # Returns all resource types across all providers .EXAMPLE Get-CIEMResourceType -Provider Azure # Returns Azure resource types only .EXAMPLE Get-CIEMResourceType -Provider Azure -Name KeyVault # Returns the KeyVault resource type #> [CmdletBinding()] param( [Parameter()] [string]$Provider, [Parameter()] [string]$Name ) $ErrorActionPreference = 'Stop' $conditions = @() $params = @{} if ($PSBoundParameters.ContainsKey('Provider')) { $conditions += "provider = @provider" $params.provider = $Provider } if ($PSBoundParameters.ContainsKey('Name')) { $conditions += "name = @name" $params.name = $Name } $query = "SELECT * FROM resource_types" if ($conditions.Count -gt 0) { $query += " WHERE " + ($conditions -join ' AND ') } $rows = @(Invoke-CIEMQuery -Query $query -Parameters $params) @(foreach ($row in $rows) { [PSCustomObject]@{ Name = $row.name DisplayName = $row.display_name Provider = $row.provider ServiceName = $row.service_name ArmProviderPrefix = $row.arm_provider_prefix ArnServicePrefix = $row.arn_service_prefix } }) } |