Private/Get-SnowCompletionValue.ps1
|
function Get-SnowCompletionValue { [CmdletBinding()] param( [Parameter(Mandatory)][ValidateSet('Table', 'Field', 'Profile')][string]$Kind, [string]$Table, [string]$Word = '' ) try { if ($Kind -eq 'Table') { $items = $script:SnowSchemaCache.Tables if (-not $items) { $items = @(Invoke-SnowRequest -Table sys_db_object -Fields name,label -PageSize 1000) $script:SnowSchemaCache.Tables = $items } $values = @($items | ForEach-Object { $_.name } | Where-Object { $_ -like "$Word*" } | Sort-Object -Unique) } elseif ($Kind -eq 'Profile') { $values = @(Read-SnowProfileStore | ForEach-Object { $_.Name } | Where-Object { $_ -like "$Word*" } | Sort-Object -Unique) } else { $items = $script:SnowSchemaCache.Fields[$Table] if (-not $items -and $Table) { $items = @(Invoke-SnowRequest -Table sys_dictionary -Query "name=$Table" -Fields element -PageSize 1000) $script:SnowSchemaCache.Fields[$Table] = $items } $values = @($items | ForEach-Object { $_.element } | Where-Object { $_ -and $_ -like "$Word*" } | Sort-Object -Unique) } foreach ($value in $values) { [System.Management.Automation.CompletionResult]::new($value, $value, 'ParameterValue', $value) } } catch { } } |