Powershell脚本检查给定的时间是否在工作时间之间



我所做的是获得当前小时,然后将其与我从系统中获得的输出字符串进行比较,我将该字符串拆分以获得开始小时和结束小时。

无论时间是什么

检查一直显示为True
$current_day = Get-Date -Format "dddd"
$current_hour = Get-Date -Format "HH:mm"
$string = "Sat 16:00 to 00:00".Split(" ")
$day = $string[0]
$from_hour = Get-Date $string[1] -Format "HH:mm"
$to_hour = Get-Date $string[3] -Format "HH:mm"
Write-Output("CURRENT TIME: {0} {1}" -f $current_day, $current_hour)
Write-Output("GIVEN TIME: {0} from {1} to {2}" -f $string_day, $string_from_hour, $string_to_hour)
if($current_hour -le $from_hour -and $current_hour -ge $to_hour)
{
return $true
}
else
{
return $false
}

你的代码只做了一些小小的改变就可以工作了。

最关键的是为你的if语句交换操作符

Write-Output("GIVEN TIME: {0} from {1} to {2}" -f $string_day, $from_hour, $to_hour)
if($current_hour -ge $from_hour -and $current_hour -le $to_hour)

最后,将结束时间改为足够接近政府工作的23:59,而不是与00:00午夜进行比较。完成了这两件事,它就可以工作了。

CURRENT TIME: Thursday 19:13
GIVEN TIME:  from 16:00 to 23:59
True

您可以尝试这样做:

$StartTime = "16:00";
$EndTime = "00:00"
$EndTime_ = (Get-Date $EndTime).AddDays(1);

if (((Get-Date) -gt (Get-Date $StartTime)) -and ((Get-Date) -lt ($EndTime_))) {
Get-Date -Format "hh:mm";
}
else {
$false
}

感谢大家的建议。我不能错过一分钟,因为脚本打算每小时运行一次。所以我所做的就是把00:00转换成99:99(当前时间和工作时间),它完美地工作了。

最新更新