我有一个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核心,属性Sunrise
和Sunset
从你的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