Azure Application Insights Rest API Get Summary 调用返回空



我正在尝试使用 Azure Application Insights REST API 调用来使用 Powershell 获取一些摘要信息。( https://learn.microsoft.com/en-us/rest/api/monitor/alertsmanagement/alerts/getsummary (

因此,我继续在Azure AD中创建应用注册(称为AppInsightsRESTTest(,并使用委派选项为其分配权限(应用见解->数据-->读取(。我也为它生成了密钥。现在,我复制了此应用程序的应用程序 ID 和机密,并在下面的电源外壳中使用它。我还将在 Azure AD 中注册的此应用作为参与者角色添加到我的应用见解实例。

#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 持有者令牌从浏览器中尝试相同的操作,它会返回带有适当数据的正确 Json。有人可以帮助我解决我在这里错过了什么,因为我的电源外壳没有给我任何东西?

对此有任何帮助吗?

我解决了这个问题,结果我必须做两件事:- 在 Azure AD 上注册应用后,应转到"订阅"页,并向上面注册的应用授予日志分析的"读取者"权限。完成上述操作后,powershell开始工作并返回结果。所以基本上你必须做: 1. 为日志分析读取器分配
应用"读取者"权限(通过"订阅"页上的"IAM"(。

无需分配应用程序见解读取器访问权限。

最新更新