Фильтрация заданий Azure Backup с помощью ODATA в REST API

Я пытаюсь использовать Azure REST API для получения заданий резервного копирования служб восстановления за последние 24 часа. Похоже, что API по умолчанию использует задания, соответствующие текущей дате в формате UTC.

Насколько я могу судить, Azure использует ODATA v4, поэтому я ожидаю, что запрос $filter=startTime gt (now() sub duration P1D) будет работать. Однако, когда я выполняю свой скрипт, он игнорирует фильтр и выполняет его по умолчанию (только текущая дата UTC).

В документации по методу API есть примеры использования явного даты, которые отображаются в формате 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
}

person aydeisen    schedule 09.08.2018    source источник


Ответы (1)


мы еще не поддерживаем все значения, поддерживаемые форматом OData. Время начала и время окончания представляют начало/конец запроса диапазона. Не могли бы вы использовать что-то вроде $filter=startTime eq 'string representation of DateTime' вместо больше чем?

person Trinadh Kotturu - MSFT    schedule 27.08.2018
comment
Я бы предпочел не делать этого. Идея состоит в том, чтобы получить резервные копии за последние 24 часа, а не резервные копии с точной датой. Чтобы сделать это, используя строковое представление точной даты, мне пришлось бы выполнить запрос дважды: один для вчера и один для сегодня - person aydeisen; 27.08.2018
comment
В настоящее время мы не поддерживаем нестроковые входные данные. Вы можете использовать startTime и endTime, но со строкой в ​​качестве входных данных, а не с указанием now(). Простите за это. Мы расширим поддержку функциональности OData. - person Trinadh Kotturu - MSFT; 28.08.2018