Public/Set-SNOWRITMVariable.ps1
function Set-SNOWRITMVariable { <# .SYNOPSIS Set the value of a variable associated with a RITM .DESCRIPTION Updates the value of a variable in the sc_item_option table .EXAMPLE Set-SNOWRITMVariable -Sys_id "a07e6bd947616110d3e5fa8bd36d4339" -Name "business_purpose" -Value "Hello World" Sets the value of business_purpose on a RITM with the sys_id of 'a07e6bd947616110d3e5fa8bd36d4339' to 'Hello World' .EXAMPLE Set-SNOWRITMVariable -Number "RITM0010001" -Name "business_purpose" -Value "Hello World" Sets the value of business_purpose on RITM00100001 to 'Hello World' .EXAMPLE Get-SNOWSCRequestedItem -number "RITM00100001" | Set-SNOWRITMVariable -Name "business_purpose" -Value "Hello World" Sets the value of business_purpose on RITM00100001 to 'Hello World' .LINK https://github.com/insomniacc/PSSnow/blob/main/docs/functions/Set-SNOWRITMVariable.md #> [CmdletBinding(DefaultParameterSetName='sys_id', SupportsShouldProcess)] [alias('Set-SNOWSCRequestedItemVariable')] param ( [Parameter(Mandatory, ValueFromPipelineByPropertyName, ParameterSetName='sys_id')] [ValidateScript({ $_ | Confirm-SysID -ValidateScript })] [alias('sysid')] [string] $Sys_Id, [Parameter(Mandatory, ValueFromPipelineByPropertyName, ParameterSetName='number')] [string] $Number, [Parameter(Mandatory, ParameterSetName='sys_id')] [Parameter(Mandatory, ParameterSetName='number')] [string] $Name, [Parameter(Mandatory, ParameterSetName='sys_id')] [Parameter(Mandatory, ParameterSetName='number')] [string] $Value ) begin {} 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 } } #? Get the MTOM Pointer $MTOMRecord = Get-SNOWObject -Table "sc_item_option_mtom" -Query "request_item=$RitmID^sc_item_option.item_option_new.name=$Name" -Fields @( "sc_item_option.item_option_new.name", "sc_item_option", "sc_item_option.value") -ExcludeReferenceLinks if($null -eq $MTOMRecord){ Write-Error "Unable to locate variable '$Name'" return } #? Update the variable's value in the sc_item_option table if($PSCmdlet.ShouldProcess("RITM: $RitmID \ Variable: $Name","UPDATE")){ Set-SNOWObject -table "sc_item_option" -sys_id $MTOMRecord.sc_item_option -Properties @{value=$Value} } } } |