我正在尝试使用Azure REST API接收过去24小时内的Recovery Services备份作业。该API默认显示为与当前UTC日期匹配的作业。
据我所知,Azure正在使用ODATA v4,因此我希望查询$filter=startTime gt (now() sub duration P1D)
可以正常工作。但是,当我执行脚本时,它似乎会忽略过滤器并执行其默认值(仅适用于当前UTC日期)。
documentation for the API method的示例使用了显式日期,这些日期似乎被格式化为Edm.DateTime
,即使startTime属性似乎以Edm.DateTimeOffset
格式返回。但是我没有在$ filter查询中找到任何用于计算日期的文档。
下面是我的脚本的副本。有人能针对Azure REST API进行类似的事情吗?
$ListRSVaultsParams = @{
Uri = 'https://management.azure.com/subscriptions/' + $SubscriptionID + '/providers/Microsoft.RecoveryServices/vaults?api-version=2018-01-10'
Headers = @{
Authorization = $AuthHeader
}
}
$Vaults = (Invoke-RestMethod @ListRSVaultsParams).value
$Jobs = ForEach ($VaultId in $Vaults.id)
{
$Results = @()
$JobUri = 'https://' + $BaseHost + $VaultId + '/backupJobs?api-version=2018-01-10&$filter=startTime gt (now() sub duration P1D)'
do
{
$JobParams = @{
Uri = $JobUri
Headers = @{
Authorization = $AuthHeader
}
}
$JobResults = Invoke-RestMethod @JobParams
$Results += $JobResults.value
$JobUri = $JobResults.nextLink
} while ($JobResults.psobject.name -contains 'nextLink')
$Results
}
答案 0 :(得分:0)
我们尚不支持OData格式支持的所有值。开始时间和结束时间代表范围查询的开始/结束。你能用类似的东西吗?
$filter=startTime eq 'string representation of DateTime'
而不是大于?