1.简单介绍
SharePoint online站点中发布的内容,可能会想看有多少人看过,或者做SharePoint migration时候,可能会评估一下特定站点或者页面是否近期还有活跃用户,以此来决定是否将特定站点或者item进行decommission。除了使用第三方的工具对站点和页面的usage report进行生成外。还可以自己使用PowerShell来进行简单查看。
2.具体说明
2.1 直接在页面中查看
点击SharePoint online或者OneDrive for business中某个文档或者List item右边的...,然后点击Details菜单项,页面右侧就会出来一个panel,其中有基本的Viewer数据


点击上图中的10 Views会出来下面的图表,
2.2 使用PowerShell来查看
这边假定要查看一个SharePoint online网站过去90天的用户访问情况,同时想导出数据为CSV格式
微软提供了一个API - Get item activity stats by interval
这个API也是基于Microsoft Graph 1.0进行统一调用的
2.2.1 SPO站点访问数据的API
由于这边要获取的是整个SharePoint online站点的用户活动数据,如下是API接口的信息,
GET /sites/{site-id}/getActivitiesByInterval(startDateTime={startDateTime},endDateTime={endDateTime},interval={interval})
API - Get item activity stats by interval 只能查到过去90天的时间,这边假定要查的是从2026-03-20到2026-04-02的数据, 则API接口在设定了SiteId和时间间隔后是,
2.2.2 注册应用程序
使用上面的API接口,需要在Microsoft Extra ID中注册应用程序,
请登录 Microsoft Extra ID ,点击New registration进行应用程序注册

注册好应用程序后,需要记录下Client ID和 Tenant ID,如下图

同时,记录下Secret Value

2.2.3 获取access token
PowerShell脚本如下
$Body = @{ grant_type = "client_credentials"; resource = $ResourceUrl; client_id = $ClientID; client_secret = $ClientSecret }
$OAuth = Invoke-RestMethod -Method Post -Uri $LoginUrl/$TenantName/oauth2/token?api-version=1.0 -Body $Body
上面脚本通过访问如下接口来获取access token,
https://login.microsoft.com/{TenantName}/oauth2/token?api-version=1.0
其中{TenantName}需要用自己的TenantName替换,一般是 xxxxxx.onmicrosoft.com 格式
同时使用之前注册应用程序时候记录的信息对脚本的ClientID和ClientSecret进行设定
ResourceUrl 设定为 https://graph.microsoft.com
运行脚本,就可以得到access token,如下图

2.2.4 访问Graph API
获取access token,就可以对之前设定好的Graph API进行访问了
下面是对应的Graph API的接口
https://graph.microsoft.com/v1.0/sites/{SiteId}/getActivitiesByInterval(startDateTime='2026-03-20',endDateTime='2026-04-02',interval='day')
下面是访问接口的PowerShell脚本
$HeaderParams = @{ 'Authorization' = "$($OAuth.token_type) $($OAuth.access_token)" }
$Result = (Invoke-WebRequest -UseBasicParsing -Headers $HeaderParams -Uri $GraphUrl)
访问接口后,可能会返回比较多的数据,需要对数据进行处理,并通过export-csv命令导出为csv

note, 通过API - Get item activity stats by interval 获取站点访问数据,没有记录具体用户的信息
2.3 其他
SharePoint on premise的时候,可以通过Site Web Analytics Reports feature来获取用户访问的数据(可以获取超过90天的数据),这个feature在SharePoint online已经不支持了。
同时微软也提供了更为便捷的PowerShell命令来获取SharePoint online站点的用户访问数据
下面的命令可以获取List item的访问数据
Get-MgSiteListItemActivityByInterval
note, 这些命令封装了获取access token,访问MS Graph API以及对访问graph API得到的数据进行后处理的过程。
3.总结
本文简单介绍了一下使用PowerShell获取SharePoint online站点的用户访问数据的方法。当然也可以通过第三方工具来辅助生成usage report。
本文如果哪里有错误的地方,麻烦告之,谢谢谢谢!
694

被折叠的 条评论
为什么被折叠?



