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-SNOWRITMVariable -number "RITM0010001"
        Returns RITM Variables for RITM0010001
    .EXAMPLE
        Get-SNOWRITMVariable -number "RITM0010001" -IncludeLabels
        Returns RITM Variables for RITM0010001, adding the display label to the output object
    .EXAMPLE
        Get-SNOWSCRequestedItem -Number "RITM0010001" | Get-SNOWRITMVariable
        Returns RITM Variables for RITM0010001
    .LINK
        https://github.com/insomniacc/PSSnow/blob/main/docs/functions/Get-SNOWRITMVariable.md
    #>


    [CmdletBinding(DefaultParameterSetName='number')]
    [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()]
        [switch]
        $IncludeLabels
    )
    begin {
        Assert-SNOWAuth
        $table = "sc_item_option_mtom"
    }
    process {
        switch ($PSCmdlet.ParameterSetName) {
            "number" {
                $operator = "LIKE"
                $RitmID = $number
            }
            "sys_id" {
                $operator = "="
                $RitmID = $sys_id
            }
        }
        
        $MTOMSplat = @{
            Table  = $table
            Query  = "request_item$operator$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){
            if($IncludeLabels.IsPresent){
                $OutputObject = [PSCustomObject]@{}
                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{
                $OutputObject = [PSCustomObject]@{}
                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
        }
    }
}