Private/Helper/Confirm-TimeOfDay.ps1
<#
Copyright © 2024 Integris. For internal company use only. All rights reserved. #> FUNCTION Confirm-TimeOfDay { <# .SYNOPSIS Confirms if the current time falls within a specified time range. .DESCRIPTION This function checks if the current time, based on the specified time source (Windows, local, or GMT), falls within the provided start and end times. .PARAMETER UseWindowsTime Switch to use the current Windows system time. .PARAMETER UseLocalTime Switch to use the local time from a time information source. .PARAMETER UseGMTTime Switch to use the GMT time from a time information source. .PARAMETER StartTime The start time of the range to check. .PARAMETER EndTime The end time of the range to check. .EXAMPLE Confirm-TimeOfDay -UseWindowsTime -StartTime "08:00" -EndTime "17:00" .NOTES The function uses Get-Date or Get-TimeInfo to retrieve the current time and compares it with the specified time range. #> [CmdletBinding(DefaultParameterSetName='WindowsTime')] PARAM ( [Parameter(Mandatory, ParameterSetName = 'WindowsTime')] [SWITCH]$UseWindowsTime, [Parameter(Mandatory, ParameterSetName = 'LocalTime')] [SWITCH]$UseLocalTime, [Parameter(Mandatory, ParameterSetName = 'GMTTime')] [SWITCH]$UseGMTTime, [Parameter(Mandatory, ParameterSetName = 'WindowsTime')] [Parameter(Mandatory, ParameterSetName = 'LocalTime')] [Parameter(Mandatory, ParameterSetName = 'GMTTime')] [DateTime]$StartTime, [Parameter(Mandatory, ParameterSetName = 'WindowsTime')] [Parameter(Mandatory, ParameterSetName = 'LocalTime')] [Parameter(Mandatory, ParameterSetName = 'GMTTime')] [DateTime]$EndTime ) $TimeInfo = @() $CurrentTime = "" IF ($UseWindowsTime -eq $True) { $CurrentTime = Get-Date } ELSEIF ($UseLocalTime -eq $True) { TRY { $TimeInfo = Get-TimeInfo } CATCH { TRY { $TimeInfo = Get-TimeInfo } CATCH { $TimeInfo = Get-TimeInfo } } $CurrentTime = $TimeInfo.LocalTime IF ($null -eq $CurrentTime -or $CurrentTime -eq "") { RETURN $False } } ELSEIF ($UseGMTTime -eq $True) { TRY { $TimeInfo = Get-TimeInfo } CATCH { TRY { $TimeInfo = Get-TimeInfo } CATCH { $TimeInfo = Get-TimeInfo } } $CurrentTime = $TimeInfo.GMTTime IF ($null -eq $CurrentTime -or $CurrentTime -eq "") { RETURN $False } } IF ($StartTime.TimeOfDay -lt $EndTime.TimeOfDay) { IF ( ($CurrentTime.TimeofDay -ge $StartTime.TimeOfDay) -and ($CurrentTime.TimeofDay -le $EndTime.TimeOfDay) ) { RETURN $True } ELSE { RETURN $False } } ELSE { IF ( ($CurrentTime.TimeofDay -ge $StartTime.TimeOfDay) -or ($CurrentTime.TimeofDay -le $EndTime.TimeOfDay) ) { RETURN $True } ELSE { RETURN $False } } RETURN $False } |