51CTO 博客地址:https://blog.51cto.com/13969817web
博客园博客地址:https://www.cnblogs.com/bxapolloshell
今天给你们分享一下如何使用PowerShell CSOM脚本为特定的Library或者List获取item count,包括其下全部的文件夹中的item,这样有利于作数据分析和统计,好比组织结构变动,须要将数据作迁移,那么就能够经过该种方法对比迁移前的数据量和迁移后的目的端item count,以确保数据迁移先后的数量是一致的。函数
获取Item count方案有不少,好比PnP Powershell等等,本文将为你们介绍的是PowerShell CSOM脚本的解决方案。网站
具体执行分如下3个步骤:.net
加载SharePoint CSOM Assemblies的命令:3d
• 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",以下所示:blog
说明:加载这两个dll文件,须要在部署SharePoint Server端执行,不然默认状况下物理路径是没有该文件的。部署
处理变量,确保链接SharePoint Onlineget
$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的实际状况吻合,以下图所示:
以上是本次分享的数据统计方法,但愿对你们有所帮助,持续关注我,后续分享更多使用小技巧,谢谢阅读。