Я пытаюсь использовать 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
}