Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在REST API中使用ODATA筛选Azure备份作业_Rest_Azure_Odata_Odata V4 - Fatal编程技术网

在REST API中使用ODATA筛选Azure备份作业

在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格式返回。但是

我正在尝试使用Azure REST API接收过去24小时的恢复服务备份作业。API似乎默认为与当前UTC日期匹配的作业

据我所知,Azure正在使用ODATA v4,因此我希望查询
$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功能。