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 } |