Public/Set-PlexItemRating.ps1

function Set-PlexItemRating
{
    <#
        .SYNOPSIS
            Sets the rating on a Plex item.
        .DESCRIPTION
            Sets the rating on a Plex item. Must be between 1-5.
        .PARAMETER Id
            The id of the item.
        .PARAMETER Rating
            Rating value.
        .EXAMPLE
            Set-PlexItemRating -Id 12345 -Rating 3
    #>


    [CmdletBinding(SupportsShouldProcess)]
    param(
        [Parameter(Mandatory = $true)]
        [String]
        $Id,

        [Parameter(Mandatory = $true)]
        [ValidateRange(1, 5)]
        [Int]
        $Rating
    )

    #############################################################################
    #Region Import Plex Configuration
    if(!$script:PlexConfigData)
    {
        try
        {
            Import-PlexConfiguration -WhatIf:$False
        }
        catch
        {
            throw $_
        }
    }
    #EndRegion

    #############################################################################
    #Region Submit rating
    if($PSCmdlet.ShouldProcess($Id, "Set rating to $Rating"))
    {
        Write-Verbose -Message "Function: $($MyInvocation.MyCommand): Submitting rating"
        try
        {
            $RestEndpoint = ":/rate"
            $Params = [Ordered]@{
                key        = $Id
                rating     = $($Rating * 2)
                identifier = 'com.plexapp.plugins.library'
            }
            $Uri = Get-PlexAPIUri -RestEndpoint $RestEndpoint -Params $Params
            Invoke-RestMethod -Uri $Uri -Method Put
        }
        catch
        {
            throw $_
        }
    }
    #EndRegion
}