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 查询返回的对象中的属性 Sunrise
和 Sunset
应该已经是 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
我有一个 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 查询返回的对象中的属性 Sunrise
和 Sunset
应该已经是 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