Я работал над следующим кодом, который предположительно извлекает все отчеты powerbi с сервера, проверяет, есть ли у них планы refre sh, если они этого не делают, выдает «Нет refre sh pans существует ..», и если он есть, он выводит информацию плана обновления, например, описание.
$webPortalURL = "https://server-pbi.domain.com/reports"
$PBI_Reports_Array = @()
$PBI_Reports_Array = $(Invoke-RestMethod -UseDefaultCredentials -uri $($webPortalURL + "/api/v2.0/PowerBIReports"))
$loopCount = 0
$refreshPlanArray = @()
foreach ($reportPath in $PBI_Reports_Array.value.path) {
$refreshPlanArray += $(Invoke-RestMethod -UseDefaultCredentials -uri $($webPortalURL + "/api/v2.0/PowerBIReports(path='" + $reportPath + "')/CacheRefreshPlans"));
write-host "$($refreshPlanArray[$loopCount])" -foregroundcolor magenta; #testing output here to debug
if ([string]::IsNullOrEmpty($($refreshPlanArray[$loopCount].value))) {
write-host "$loopCount | $reportPath | No Refresh Plan Exists for this report!";
}
else {
write-host "$loopCount | $reportPath | $($refreshPlanArray[$loopCount].value.Description) | $($refreshPlanArray[$loopCount].value.ScheduleDescription)" -foregroundcolor magenta;
}
$loopCount++;
}
У меня странная ошибка. поэтому у меня есть 2 сервера / порталы, на одном из серверов / порталов, когда я запускаю этот скрипт, он извлекает все отчеты и делает именно то, что я ожидаю, что он делает, как описано выше. Когда я подумал, что закончил разработку сценария, я протестировал его на производственном портале / сервере, и он не работал должным образом! я отлаживал в течение многих часов, пока не понял, что происходит, но не знаю, что с этим делать:
В основном, причина, по которой он работал на одном сервере / портале, а не на другом, заключается в том, что непроизводственный портал / сервер не было этой ошибки:
Invoke-RestMethod : The remote server returned an error: (404) Not Found.
очевидно, до того, как эта ошибка произошла на производственном сервере / портале, где произошла ошибка, эта строка write-host "$($refreshPlanArray[$loopCount])"
, которую я добавил для целей отладки, печатала следующие odata context
с до произошла ошибка!
@{@odata.context=https://server-pbi.domain.com/reports/api/v2.0/$metadata#CacheRefreshPlans; value=System.Object[]}
затем, когда ошибка возникла после итерации 4, она перестала печатать оддаты!
почему это так?