Powershell 在web请求中使用azure凭据

Powershell 在web请求中使用azure凭据,powershell,office365api,Powershell,Office365api,我需要创建一个解决方案,从这里定期下载使用情况报告:{tenantid}/UserActivity 这应该简单到: $cred = Get-AutomationPSCredential -Name 'reportingserviceaccount' $uri = "https://reports.office.com/pbi/v1.0/{tenantid}/UserActivity" Invoke-RestMethod -Method Get -Uri $uri -Credential $cre

我需要创建一个解决方案,从这里定期下载使用情况报告:{tenantid}/UserActivity

这应该简单到:

$cred = Get-AutomationPSCredential -Name 'reportingserviceaccount'
$uri = "https://reports.office.com/pbi/v1.0/{tenantid}/UserActivity"
Invoke-RestMethod -Method Get -Uri $uri -Credential $cred -OutFile C:\users\Public\output.json 


但是,在这两种情况下,我只下载了登录表单,而没有下载数据。当我在浏览器中打开url时,我可以正确地看到json响应。有人能给我一个提示我缺少什么吗?

这将适用于基本身份验证。您需要使用Oauth。您可以通过几种不同的方式来实现这一点。关键的一点是你需要获得一个授权令牌,你将把它放在你的头上
-headers=@{'authorization'=“Bearer$YourToken”}
你可以使用App/Secret(因此它是100%)透明的,或者让用户通过Oauth窗口登录并获得令牌,你将把它包含在api调用中。这在第一次做的时候非常复杂。我现在既没有现成的样品也没有时间回答,所以我会让其他人提供答案。。。下面是提示凭证窗口的方法(如果您从该示例开始工作,它应该在您的场景中工作)。嗯,尝试这个应用程序,但看起来我需要向应用程序添加一些额外的权限(我已经添加了ActivityReports。从Office 365管理API和报表中读取。从Graph中读取。全部,但它们没有帮助),我真的不知道是什么。看起来我的问题与权限有关。我将发布另一个问题并删除此问题。
Invoke-WebRequest -Uri $uri -Credential $cred -OutFile C:\users\Public\output.json