Powershell - 确定日落并添加时间

Powershell - Determine Sunset and Add Time

我有一个 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 Core,则 API 查询返回的对象中的属性 SunriseSunset 应该已经是 DateTime 类型,但是在 Windows PowerShell 中,您需要将 [datetime] 转换为 string。然后 .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