Private/Test-MotdIsDue.ps1

<#
.SYNOPSIS
Determines whether the configured cadence says a MOTD is due.
#>

function Test-MotdIsDue {
    [CmdletBinding()]
    [OutputType([bool])]
    Param(
        [Parameter(Mandatory)]
        [ValidateSet('Never', 'EverySession', 'Daily', 'Weekly')]
        [string]
        $Frequency,

        [Parameter(Mandatory)]
        [datetime]
        $LastWrite,

        [datetime]
        $Now = [datetime]::Now
    )

    # Calendar-day semantics: Daily is due on a new calendar date, Weekly after
    # a whole-day gap of this many days. Never/EverySession are explicit cases.
    $requiredDayGap = @{
        Daily  = 1
        Weekly = 7
    }

    switch ($Frequency) {
        'Never'        { return $false }
        'EverySession' { return $true }
        default        { return ($Now.Date - $LastWrite.Date).Days -ge $requiredDayGap[$Frequency] }
    }
}