SharePoint 解决方案:如何获取Library或者List下的Item数量
51CTO 博客地址:https://blog.51cto.com/13969817
博客园博客地址:https://www.cnblogs.com/bxapollo
今天给大家分享一下如何使用PowerShell CSOM脚本为特定的Library或者List获取item count,包括其下所有的文件夹中的item,这样有利于做数据分析和统计,比如组织结构变更,需要将数据做迁移,那么就可以通过该种方法对比迁移前的数据量和迁移后的目的端item count,以确保数据迁移前后的数量是一致的。
获取Item count方案有很多,比如PnP Powershell等等,本文将为大家介绍的是PowerShell CSOM脚本的解决方案。
具体执行分以下3个步骤:
- 加载SharePoint CSOM Assemblies
- 处理变量,确保连接SharePoint Online
- 自定义函数从特定的网站URL的list中获取Item数量
加载SharePoint CSOM Assemblies的命令:
• Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" • Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
但由于我环境的.net是4.0的,默认的情况下,禁用从远程位置加载的程序集中执行代码的功能,所以需要使用[System.Reflection.Assembly]::LoadFrom()来加载Microsoft.SharePoint.Client.dll",如下所示:
说明:加载这两个dll文件,需要在部署SharePoint Server端执行,否则默认情况下物理路径是没有该文件的。
处理变量,确保连接SharePoint Online
$SiteUrl = "https://mvptrainingcn.sharepoint.com/sites/Demo2" $ListName="TrainingDocument"
说明:需要输入Microsoft 365 Global Admin的账户和密码,如下所示:
$UserName="XXXXXX@MVPTrainingCN.onmicrosoft.com" $Password ="XXXXXX"
自定义函数从特定的网站URL的list中获取Item数量
#Setup Credentials to connect $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,(ConvertTo-SecureString $Password -AsPlainText -Force)) #Set up the context $Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl) $Context.Credentials = $credentials #Get the List $List = $Context.web.Lists.GetByTitle($ListName) #sharepoint online get list items powershell $ListItems = $List.GetItems([Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery()) $Context.Load($ListItems) $Context.ExecuteQuery() write-host "Total Number of List Items found:"$ListItems.Count
可以看到获取到的Item数量是2,与SharePoint Online的实际情况吻合,如下图所示:
以上是本次分享的数据统计方法,希望对大家有所帮助,持续关注我,后续分享更多使用小技巧,谢谢阅读。