Public/Get-NTBreakTimer.ps1
<#
.SYNOPSIS Mn time based parameter entry this function produces a bool output .DESCRIPTION Used to break from loops/control scripts based on a time value and outputs Bool True not inside defined timings False outside of defined timings .PARAMETER DateTime The Date and Time the command should stop running .PARAMETER StartTime Start time the command starts returning true .PARAMETER EndTime The time the command stop returning true .PARAMETER Time After this time the command returns false .EXAMPLE PS C:\> Get-BreakTimer .OUTPUTS boolean .NOTES Additional information about the function. #> function Get-NTBreakTimer { [CmdletBinding(DefaultParameterSetName = 'Specific')] [OutputType([boolean], ParameterSetName = 'Specific')] [OutputType([boolean], ParameterSetName = 'Range')] [OutputType([boolean], ParameterSetName = 'Time')] param ( [Parameter(ParameterSetName = 'Specific')] [string]$DateTime, [Parameter(ParameterSetName = 'Range')] [int]$StartTime, [Parameter(ParameterSetName = 'Range')] [int]$EndTime, [Parameter(ParameterSetName = 'Time')] [int]$Time ) switch ($PsCmdlet.ParameterSetName) { 'Specific' { # parse input to determine datetime Try { $DateTime = [datetime]::Parse($DateTime) } Catch { Write-Error "Could not validate date time entered, try in the DD/MM/YYYY HH:MM format." } # return results if ($DateTime -gt (Get-Date)) { $true } else { $false } break } 'Range' { # Validate start and end time if ($StartTime -match "\d{1,2}:\d{1,2}(:\d{1,2})?") { try { $StartTime = [datetime]::Parse($StartTime) } Catch { Write-Error "Could not validate start time entered, try in the DD/MM/YYYY HH:MM format." break } try { $EndTime = [datetime]::Parse($EndTime) } Catch { Write-Error "Could not validate end time entered, try in the DD/MM/YYYY HH:MM format." break } } elseif ($StartTime -match "\d{1,2}\/\d{1,2}\/\d{2,4}\s\d{1,2}(:\d{1,2})?") { } break } 'Time' { #TODO: Place script here break } } } |