Powershell -确定日落和添加时间



我有一个Powershell脚本,用于确定我本地的日出和日落。然而,我的最终目标是在日落后45分钟运行一个函数。我知道我不能使用AddMinutes(45),因为这只适用于Get-Date。我尝试格式化为"日落"返回的值的输出,但即使格式化为匹配Get-Date,它仍然不起作用。我可以用别的方法吗?

$Daylight = (Invoke-RestMethod "https://api.sunrise-sunset.org/json?lat=35.608081&lng=-78.647666&formatted=0").results
$Sunrise  = ($Daylight.Sunrise | Get-Date -Format "HH:mm")
$Sunset   = ($Daylight.Sunset | Get-Date -Format "dddd, MMMM dd, yyyy hh:mm:ss tt")

如果你正在使用PowerShell核心,属性SunriseSunset从你的API查询返回的对象应该已经是类型DateTime,然而在Windows PowerShell,你需要将[datetime]转换为他们从字符串。然后.AddMinutes方法将工作没有问题,如果你想运行一个函数45分钟在日落之后,您可以尝试以下操作,假设这可能是一个计划任务:

$Daylight = (Invoke-RestMethod "urlhere").results
$sunset = [datetime] $Daylight.sunset # => [datetime] only needed in Windows PowerShell
if([datetime]::Now -ge $sunset.AddMinutes(45)) {
# run function here
}

或者,如果您希望脚本执行并等待合适的时间,您可以使用循环:

do {
Start-Sleep -Seconds 60
} until([datetime]::Now -ge $sunset.AddMinutes(45))
# run function here

最新更新