通过Microsoft Graphi API提取Office 365报告的Powershell脚本

时间:2018-04-25 09:06:15

标签: powershell azure-ad-graph-api

我正在尝试自动清理已分配的Microsoft E3许可证给我们的用户。

我一直在为初学者使用这篇文章:https://blogs.technet.microsoft.com/dawiese/2017/04/15/get-office365-usage-reports-from-the-microsoft-graph-using-windows-powershell/

所以我在Azure中注册了应用程序,并将重定向URI和应用程序ID一起复制。

我还下载了最新的msonline模块,我使用Azure全局管理员作为$ cred。

我将脚本复制到C:\ Testing \中的服务器,然后我在同一目录中创建了一个包含以下内容的脚本:

.\Get-Office365Report.ps1 `
-TenantName "OurCompany.onmicrosoft.com" `
-ClientID "x00000x0-00x0-000x-x000-0000xx000x0x" `
-RedirectURI "urn:ReportingAPIAccess" `
-WorkLoad Tenant `
-ReportType getOffice365ActivationsUserDetail `
-Cred $cred `
-Verbose

但是我得到了这个错误:

  

Invoke-RestMethod:远程服务器返回错误:(404)不是   发现。       在C:\ Temp \ Get-Office365Report.ps1:333 char:15       + ... $ result = Invoke-RestMethod -Uri $ uri -Headers $ authHeader -Method ...       + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~       + CategoryInfo:InvalidOperation:(System.Net.HttpWebRequest:HttpWebRequest)[Invoke-RestMethod],   引发WebException       + FullyQualifiedErrorId:WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodComm

这里的代码是:

$uri = "https://graph.microsoft.com/beta/reports/{0}({1})/content" -f $report, $parameterset
Write-Host $uri
Write-Host "Retrieving Report $report, please wait" -ForegroundColor Green
$result = Invoke-RestMethod -Uri $uri –Headers $authHeader –Method Get

$uri的内容为:

https://graph.microsoft.com/beta/reports/getOffice365ActivationsUserDetail()/content

所以$parameterset是空的。我不确定是不是原因?

非常感谢任何帮助,谢谢!

最诚挚的问候 卡斯帕

1 个答案:

答案 0 :(得分:0)

在脚本的Q和A中,解决方案已经发布。在脚本中用这个替换uri行(我认为它在第330行附近):

$ uri =“https://graph.microsoft.com/beta/reports/ {0}({1})?`$ format = {2}”-f $ report,$ parameterset,'text / csv'