Private/Get-DateFromWeekDay.ps1

function Get-DateFromWeekDay
{
    param
    (
        [Parameter(Mandatory, Position = 1)]
        [ValidateSet('This', 'Next')]
        [string]$Week,

        [Parameter(Mandatory, Position = 2)]
        [System.DayOfWeek]$DayOfWeek,

        [ValidateNotNullOrEmpty()]
        [DateTime]$ReferenceDate = (Get-Date),

        [System.DayOfWeek]$FirstDayOfWeek = [System.DayOfWeek]::Monday
    )

    if ($Week -eq 'Next')
    {
        $ReferenceDate = $ReferenceDate.AddDays(7);
    }

    $DatesToConsider = -6..6 | ForEach-Object { $ReferenceDate.AddDays($_) }
    $FirstDayOfThisWeek = $DatesToConsider | Where-Object DayOfWeek -EQ $FirstDayOfWeek | Select-Object -First 1
    $DatesToConsider | Where-Object Date -GE $FirstDayOfThisWeek.Date | Where-Object DayOfWeek -EQ $DayOfWeek | Select-Object -First 1 -ExpandProperty Date
}