在REST API中使用ODATA筛选Azure备份作业
我正在尝试使用Azure REST API接收过去24小时的恢复服务备份作业。API似乎默认为与当前UTC日期匹配的作业 据我所知,Azure正在使用ODATA v4,因此我希望查询在REST API中使用ODATA筛选Azure备份作业,rest,azure,odata,odata-v4,Rest,Azure,Odata,Odata V4,我正在尝试使用Azure REST API接收过去24小时的恢复服务备份作业。API似乎默认为与当前UTC日期匹配的作业 据我所知,Azure正在使用ODATA v4,因此我希望查询$filter=startTime gt(now()sub duration P1D)能够正常工作。但是,当我执行脚本时,它似乎会忽略过滤器并执行其默认值(仅限当前UTC日期) 示例中使用的显式日期的格式似乎为Edm.DateTime,即使startTime属性似乎以Edm.DateTimeOffset格式返回。但是
$filter=startTime gt(now()sub duration P1D)
能够正常工作。但是,当我执行脚本时,它似乎会忽略过滤器并执行其默认值(仅限当前UTC日期)
示例中使用的显式日期的格式似乎为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
}
我们还不支持OData格式支持的所有值。开始时间和结束时间表示范围查询的开始/结束。你能不能用一些像,
$filter=startTime eq“日期时间的字符串表示法”
而不是大于 我宁愿不去。我们的想法是从过去24小时内获取备份,而不是从确切日期获取备份。要使用精确日期的字符串表示,我必须运行两次查询:一个用于“昨天”,另一个用于“今天”,目前我们不支持非字符串输入。您可以使用startTime和endTime,但可以将字符串作为输入,而不是指定now()。对不起。我们将增强以支持OData功能。