Я пытаюсь использовать вызов API REST Azure Application Insights для получения сводной информации с помощью Powershell. (https://docs.microsoft.com/en-us/rest/api/monitor/alertsmanagement/alerts/getsummary)
Итак, я создал приложение регистрации в Azure AD (называется AppInsightsRESTTest), назначил ему разрешение (App Insights -> Data -> Read) с помощью параметра делегирования. ,Я сгенерировал Секретный Ключ также для этого. А теперь я скопировал идентификатор приложения и секрет для этого приложения и использовал его в PowerShell ниже. Я также добавил это приложение, которое я зарегистрировал в Azure AD, в свой экземпляр App Insights в качестве роли CONTRIBUTOR.
#SPN ClientId and Secret
$ClientID = "25325f5d-XXXXXXXXXXXXX26fef568d" #Key from Azure AD App ID Created
$ClientSecret = "uX[CNk[XXXXXXXXXXXXgGcN4" #Secret key from Azure AD
$tennantid = "fa061982-XXXXXXXXXXX1ce727" #Directory ID for THREE PROJECt
$SubscriptionID = "d2e4beXXXXXXXXXXXXXXX686542c"
$TokenEndpoint = {https://login.microsoftonline.com/{0}/oauth2/token} -f $tennantid
$ARMResource = "https://management.core.windows.net/";
$Body = @{
'resource'= $ARMResource
'client_id' = $ClientID
'grant_type' = 'client_credentials'
'client_secret' = $ClientSecret
}
$params = @{
ContentType = 'application/x-www-form-urlencoded'
Headers = @{'accept'='application/json'}
Body = $Body
Method = 'Post'
URI = $TokenEndpoint
}
$token = Invoke-RestMethod @params
$token | select access_token, @{L='Expires';E={[timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds($_.expires_on))}} | fl *
$SubscriptionURI = "https://management.azure.com/subscriptions/$SubscriptionID" +'/providers/Microsoft.AlertsManagement/alertsSummary?groupby=alertRule&api-version=2018-05-05'
$params = @{
ContentType = 'application/x-www-form-urlencoded'
Headers = @{
'authorization'="Bearer $($Token.access_token)"
}
Method = 'Get'
URI = $SubscriptionURI
}
Invoke-RestMethod @params
Приведенный выше код возвращает мне токен, но метод Invoke возвращает пустое значение, а не Json. Если я попробую то же самое из браузера, используя AUTHO BEARER TOKEN, он вернет мне правильный Json с соответствующими данными. Может ли кто-нибудь помочь мне с тем, что я мог упустить здесь из-за того, что мой PowerShell ничего мне не возвращает?
Есть ли какая-нибудь помощь по этому поводу?