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"
br/>$UserName="XXXXXX@MVPTrainingCN.onmicrosoft.com"
自定义函数从特定的网站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的实际情况吻合,如下图所示:
希望本次分享的数据统计方法对大家有帮助,持续关注我,后续会分享更多使用小技巧,谢谢阅读。
更多相关文章
- 使用Rails 3.2和AJAX(非flash上传解决方案)将多个文件直接上载到
- jQuery的$.getJSON方法在IE浏览器下失效的解决方案
- [置顶] JQuery datatables 使用Fixedcolumns固定列控件
- jQuery Ui Draggable在移动端浏览器不起作用解决方案
- html2canvas 识别 svg 解决方案
- HTML5用户身份认证源代码:注册、登录、会话保持的解决方案
- 用于在表中强制换行的PHP或HTML/CSS解决方案
- 如何实现分布式文件上传解决方案?
- 如何在数组中存储产品数量