Public/Get-SNOWRITMVariableSet.ps1

function Get-SNOWRITMVariableSet {
    <#
    .SYNOPSIS
        Gets all associated variables for a RITM
    .DESCRIPTION
        Returns all the RITM variables and display labels
    .EXAMPLE
        Get-SNOWRITMVariableSet -number "RITM0010001"
        Returns RITM Variables for RITM0010001
    .EXAMPLE
        Get-SNOWRITMVariableSet -Sys_id a07e6bd947616110d3e5fa8bd36d4339
        Returns RITM Variables for the RITM with a sys_id of a07e6bd947616110d3e5fa8bd36d4339
    .EXAMPLE
        Get-SNOWRITMVariableSet -number "RITM0010001" -IncludeLabels
        Returns RITM Variables for RITM0010001, adding the display label to the output object
    .EXAMPLE
        Get-SNOWSCRequestedItem -Number "RITM0010001" | Get-SNOWRITMVariableSet
        Returns RITM Variables for RITM0010001
    .LINK
        https://github.com/insomniacc/PSSnow/blob/main/docs/functions/Get-SNOWRITMVariableSet.md
    #>


    [CmdletBinding(DefaultParameterSetName='sys_id')]
    [alias('Get-SNOWSCRequestedItemVariableSet')]
    [alias('Get-SNOWSCRequestedItemVariable')]
    param (
        [Parameter(Mandatory, ValueFromPipelineByPropertyName, ParameterSetName='number')]
        [string]
        $Number,
        [Parameter(Mandatory, ValueFromPipelineByPropertyName, ParameterSetName='sys_id')]
        [ValidateScript({ $_ | Confirm-SysID -ValidateScript })]
        [alias('sysid')]
        [string]
        $Sys_Id,
        [Parameter(ParameterSetName='sys_id')]
        [Parameter(ParameterSetName='number')]
        [switch]
        $IncludeLabels
    )
    begin {
        $table = "sc_item_option_mtom"
    }
    process {
        switch ($PSCmdlet.ParameterSetName) {
            "number" {
                $RITM = Get-SNOWSCRequestedItem -number $Number -Fields @('sys_id')
                if($null -eq $RITM){ 
                    Write-Error "Unable to locate $Number"
                    return         
                }
                $RitmID = $RITM.sys_id
            }
            "sys_id" {
                $RitmID = $sys_id
            }
        }
        
        $MTOMSplat = @{
            Table  = $table
            Query  = "request_item=$RitmID"
            Fields =    @( 
                            "sc_item_option.item_option_new.name",
                            "sc_item_option.item_option_new",
                            "sc_item_option.value"
                        ) 
            ExcludeReferenceLinks = $true
            DisplayValue          = $true
        }
        $RITMVariables = Get-SNOWObject @MTOMSplat 

        if($RITMVariables){
            $OutputObject = [PSCustomObject]@{}

            if($IncludeLabels.IsPresent){
                Foreach($RITMVariable in $RITMVariables){
                    $OutputRow = [PSCustomObject]@{
                        label = $RITMVariable."sc_item_option.item_option_new"
                        value = $RITMVariable."sc_item_option.value"
                    }
                    $OutputObject | Add-Member -MemberType NoteProperty -Name $RITMVariable."sc_item_option.item_option_new.name" -Value $OutputRow
                }
            }else{
                Foreach($RITMVariable in $RITMVariables){
                    $OutputObject | Add-Member -MemberType NoteProperty -Name $RITMVariable."sc_item_option.item_option_new.name" -Value $RITMVariable."sc_item_option.value"
                }
            }

            switch ($PSCmdlet.ParameterSetName) {
                "number" {
                    $OutputObject | Add-Member -MemberType NoteProperty -Name "number" -Value $number
                }
                "sys_id" {
                    $OutputObject | Add-Member -MemberType NoteProperty -Name "sys_id" -Value $sys_id
                }
            }
    
            return $OutputObject
        }
    }
}