PowerShell — запуск сценария за 5 минут до установленного времени

#powershell #scripting

#powershell #сценарии

Вопрос:

Я хочу запустить скрипт при сравнении 2 разных временных наборов. Сценарий должен выполняться только с интервалом в 5 минут до установленного времени.

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

Как мне написать «Запускать сценарий, только если $ currentTime за 5 минут до $ Time2 ??? «

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

Ответ №1:

При запуске -format Get-Date командлета возвращаемое значение становится a String , и если вы не задаете никакого форматирования, возвращаемое значение является DateTime объектом. Затем, не форматируя выходные данные в a String , вы можете выполнять некоторые операции с DateTime объектом, такие как сложение или вычитание. Просто не забудьте создать другой DateTime объект из String того, который вы хотите сравнить (в данном случае это $Time2 .).

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

Однако, поскольку $CurrentTime объект содержит информацию с точностью до миллисекунды, редко возможно сравнить эти два объекта с equals оператором. Что я хотел бы сделать, так это выбрать окно сравнения, например, 1 минута, а затем проверить, похожи ли эти два объекта друг на друга в течение 1 минуты. окно. В этом случае это может быть похоже $CurrentTime на то, что находится в окне на 5 или 6 минут меньше $Time2 . Затем сценарий должен содержать что-то вроде:

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

Вы можете сузить окно до уровня секунд и вместо этого сказать что-то вроде приведенного ниже.

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

Дайте мне знать, если это вам поможет!