PowerShell - 运行 设定时间前 5 分钟的脚本

PowerShell - Run script 5 minutes before set time

我正在寻找 运行 比较两个不同时间集的脚本。脚本应该只运行在设定时间前5分钟的间隔。

Example:
$CurrentTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$Time2 = "2020-10-05 13:20:00"

如何编写“仅当 $CurrentTime 比 $Time2 早 5 分钟时才编写脚本???”

if($CurrentTime ??5min less than?? $Time2){
    Write-Host "Time match"
} else {
    Write-Host "Time does not match"
}

当您 -format Get-Date cmdlet 时,return 值变为 String,如果您未指定任何格式,则 return 值为一个 DateTime 对象。在不将输出格式化为 String 的情况下,您可以对 DateTime 对象执行一些操作,例如加法或减法。请务必从要比较的 String 创建另一个 DateTime 对象(在本例中为 $Time2。)。

$CurrentTime = Get-Date
$Time2 = Get-Date -Date "2020-10-05 13:20:00"

但是,由于 $CurrentTime 对象将信息保持在毫秒级别,因此很少可能使用 equals 运算符比较这两个对象。我会做的是,我会选择一个比较 window,例如 1 分钟,然后检查这两个对象是否彼此相似 1 分钟 window。在这种情况下,它可以像 $CurrentTime 在 window 中比 $Time2 少 5 或 6 分钟。然后脚本应该包含类似的东西:

if($CurrentTime.AddMinutes(6) -gt $Time2 && $CurrentTime.AddMinutes(5) -lt $Time2){
    Write-Host "Time match"
    }else{
    Write-Host "Time does not match"
    } 

您可以将 window 缩小到秒级,然后改为说如下内容。

if($CurrentTime.AddSeconds(360) -gt $Time2 && $CurrentTime.AddSeconds(330) -lt $Time2){
    Write-Host "Time match"
    }else{
    Write-Host "Time does not match"
    }

如果这对你有帮助,请告诉我!