private/Functions/Axis/Update-AxisMediaProfile.ps1

Function Update-AxisMediaProfile {
    [cmdletBinding()]
    Param(
        [Parameter()]
        [hashtable]$Object
    )
    
    <#
    Object Definition:
    @{
        IP = [String(Mandatory)]
        Credential = [PSCredential(Mandatory)]
        ProfileID = [int(Mandatory)]
        NewName = [String()]
        FrameRate = [int]
        BitRate = [int]
        Channel = [int]
        Encoding = [String(Mandatory)]
        Resolution = [String]
        PriorityType = [String]
        BitrateControlType = [String]
        H26xProfile = [String]
    }
    #>


    #Set basic Paramters for Invoke-AxisCommand
    $CamCmd = @{
        Arguments = @{
            IP = $Object.IP
            Menu = 'media'
            SubMenu = 'videoprofile'
            Action = 'update'
            Parameters = @()
        }
        Credential = $Object.Credential
    }

    #Add Action Parameters
    $CamCmd.Arguments.Parameters += "Channel=$($Object.Channel)"
    $CamCmd.Arguments.Parameters += "Profile=$($Object.ProfileID)"
    $CamCmd.Arguments.Parameters += "EncodingType=$($Object.Encoding)"

    if($Resolution) {
        $CamCmd.Arguments.Parameters += "Resolution=$($Object.Resolution)"
    }
    if($FrameRate) {
        $CamCmd.Arguments.Parameters += "FrameRate=$($Object.FrameRate)"
    }
    if($BitRate) {
        $CamCmd.Arguments.Parameters += "Bitrate=$($Object.Bitrate)"
    }
    if($NewName) {
        $CamCmd.Arguments.Parameters += "Name=$($Object.NewName)"
    }
    if($H26xProfile) {
        $CamCmd.Arguments.Parameters += "$($Object.Encoding).Profile=$Object.H26xProfile"
    }
    if($BitrateControlType) {
        $CamCmd.Arguments.Parameters += "$($Object.Encoding).BitrateControlType=$Object.BitrateControlType"
    }
    if($PriorityType) {
        $CamCmd.Arguments.Parameters += "$($Object.Encoding).PriorityType=$Object.PriorityType"
    }

    Invoke-AxisCommand @CamCmd
}