[玩转系统] SharePoint Online:如何在 PowerShell 中使用 CAML 查询?
作者:精品下载站 日期:2024-12-14 14:46:47 浏览:16 分类:玩电脑
SharePoint Online:如何在 PowerShell 中使用 CAML 查询?
要求:在 SharePoint Online 中将 CAML 查询与 PowerShell 结合使用。
CAML 是一种基于 XML 的查询语言,代表协作应用程序标记语言,用于查询 SharePoint 列表和库中的项目。这篇文章将教您在 PowerShell 中使用 CAML 查询的基础知识。我们将向您展示如何使用 CAML 查询来筛选和排序 SharePoint 数据,并且我们还将提供一些示例来帮助您入门。
CAML 查询元素和运算符:
以下是 CAML 查询中常用的元素和运算符:
Eq等于
Neq不等于
Gt比...更棒
Geq大于或等于
Lt少于
Leq小于或等于
Contains包含
IsNull无效的
IsNotNull不为空
BeginsWith以文字开头
In任何给定值的值
NotIn值不在任何给定值中
Includes与 Eq 相同 - 在多选查找列中,检查给定值是否存在。
NotIncludes只是与“包含”相反 - 与多个值中的 Not Eq 相同
OrderBy指定排序顺序
Where对数据应用过滤器
ViewFields要检索的字段
RowLimit要检索的行数
CAML 查询使用字段的内部名称。因此,字段名称中的所有字符都将被解码(例如,“空格”将替换为“_x0020_”,因此“项目名称”字段名称将替换为“Project_x0020_Name”)。您可以阅读 SharePoint 列名称中的显示名称与内部名称来了解更多信息
SharePoint Online:使用 PowerShell 的 CAML 查询示例
以下是用于检索 SharePoint 列表项的 CAML 查询。让我们从“项目”列表中获取所有列表项,其中“项目名称”字段等于“创新指标”。
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Set parameter values
$SiteURL="https://crescent.sharepoint.com/"
$ListName="Projects"
#Get Credentials to connect
$Cred= Get-Credential
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Get the List
$List = $Ctx.Web.lists.GetByTitle($ListName)
#Define the CAML Query
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml = "@
<View>
<Query>
<Where>
<Eq>
<FieldRef Name='ProjectName' /><Value Type='Text'>Innovation Metrics</Value>
</Eq>
</Where>
</Query>
</View>"
#Get All List Items matching the query
$ListItems = $List.GetItems($Query)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
Write-host "Total Number of Items:"$ListItems.count
#Loop through each List Item
ForEach($Item in $ListItems)
{
Write-host $Item.id
}
SharePoint Online:PnP PowerShell 使用 CAML 获取列表项
使用“Query”参数在 PnP PowerShell cmdlet Get-PnPListItem 中应用 CAML 查询
#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$ListName = "Project Tasks"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
#CAML Query to Filter List Items
$Query = "<View><Query><Where><Eq><FieldRef Name='ProjectStatus' /><Value Type='Choice'>Completed</Value></Eq></Where></Query></View>"
#Get All List Items matching given query
$ListItems = Get-PnPListItem -List $ListName -Query $Query
#Loop through each Item
Write-host -f Green "Number of List Items Found:"$ListItems.Count
ForEach($ListItem in $ListItems)
{
Write-Host "Id :" $ListItem["ID"]
Write-Host "Title :" $ListItem["Title"]
}
SharePoint Online 中的 CAML 查询可按升序或降序排序
以下是用于对结果进行排序的 CAML 查询 PowerShell CSOM。
#Set parameter values
$SiteURL="https://crescent.sharepoint.com/"
$ListName="Projects"
#Get Credentials to connect
$Cred= Get-Credential
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Get the List
$List = $Ctx.Web.lists.GetByTitle($ListName)
#Define the CAML Query
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml = "@
<View>
<Query>
<OrderBy><FieldRef Name='Title' /></OrderBy>
</Query>
</View>"
#Get All List Items matching the query
$ListItems = $List.GetItems($Query)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
Write-host "Total Number of Items:"$ListItems.count
#Loop through each List Item
ForEach($Item in $ListItems)
{
#Do Something
Write-host $Item.id
Write-host $Item["Title"]
}
按降序排序:
<OrderBy><FieldRef Name='Title' Ascending='FALSE' /></OrderBy>
货币字段中的大于、大于或等于、小于、小于或等于运算符:
让我们获取“总投资”值大于或等于 5000 的所有项目
<View>
<Query>
<Where>
<Geq>
<FieldRef Name='TotalInvestment' /><Value Type='Currency'>5000</Value>
</Geq>
</Where>
</Query>
</View>
在PowerShell CAML查询中组合多个AND和OR运算符:
让我们组合多个AND和OR运算符来获取“总投资”值在5000到10000之间的所有项目,项目部门是“销售”或“营销”。
<View>
<Query>
<Where>
<And>
<And>
<Geq>
<FieldRef Name='TotalInvestment' /><Value Type='Currency'>5000</Value>
</Geq>
<Leq>
<FieldRef Name='TotalInvestment' /><Value Type='Currency'>10000</Value>
</Leq>
</And>
<Or>
<Eq>
<FieldRef Name='ProjectDepartment' /><Value Type='Choice'>Sales</Value>
</Eq>
<Eq>
<FieldRef Name='ProjectDepartment' /><Value Type='Choice'>Marketing</Value>
</Eq>
</Or>
</And>
</Where>
</Query>
</View>"
当 CAML 查询中有多个“And”运算符时,验证从上到下开始。
PowerShell 中的 SharePoint Online CAML 查询:“IN”运算符
“In”运算符可替代多个“OR”条件。它验证项目是否在任何给定值中(与 SQL Server“in”运算符相同)。以下是 CAML 查询中“IN”运算符的示例:这将获取“项目名称”列值位于 In 运算符下的任何列出选项中的所有列表项:
<View>
<Query>
<Where>
<In>
<FieldRef Name='ProjectName' />
<Values>
<Value Type='Text'>Address Book</Value>
<Value Type='Text'>Announcements</Value>
<Value Type='Text'>Birthday</Value>
<Value Type='Text'>Invitation</Value>
</Values>
</In>
</Where>
</Query>
</View>
获取文本字段包含特定值的列表项:
让我们获取项目名称中包含“Inv”文本的所有列表项,例如“发票”、“年度发票”、“每月库存”等。
<View>
<Query>
<Where>
<Contains>
<FieldRef Name='ProjectName' /><Value Type='Text'>Inv</Value>
</Contains>
</Where>
</Query>
</View>
获取特定字段不为空的所有列表项的 CAML 查询示例:
让我们获取项目描述具有某个值(不为空)的所有项目
<View>
<Query>
<Where>
<IsNotNull><FieldRef Name='ProjectDescription' /></IsNotNull>
</Where>
</Query>
</View>
PowerShell 中的 CAML 查询 ViewFields
CAML 中的“ViewFields”节点定义要从列表中检索哪些字段。例如,您只想从列表中获取“ProjectName”、“Department”和“City”字段。
<View>
<ViewFields>
<FieldRef Name='ProjectName'/>
<FieldRef Name='Department' />
<FieldRef Name='City' />
</ViewFields>
</View>"
SharePoint Online CAML 查询中的“查看范围”
默认情况下(如果您没有为范围参数指定任何内容),列表或库的根文件夹中的所有文件和文件夹都被视为范围。
深入获取所有级别的所有文件和文件夹
<View Scope='RecursiveAll'>
</View>
从根文件夹获取所有文件:
<View>
<Query>
<Where>
<Eq>
<FieldRef Name='FSObjType' /><Value Type='Integer'>0</Value>
</Eq>
</Where>
</Query>
</View>
从列表的根文件夹中获取所有文件夹:
<FieldRef Name='FSObjType' /><Value Type='Integer'>1</Value>
从列表的所有文件夹中获取所有文件:
<View Scope='RecursiveAll'>
<Query>
<Where>
<Eq>
<FieldRef Name='FSObjType' /><Value Type='Integer'>0</Value>
</Eq>
</Where>
</Query>
</View>
SharePoint Online CAML 查询从列表的所有文件夹中获取所有文件夹:
<View Scope='RecursiveAll'>
<Query>
<Where>
<Eq>
<FieldRef Name='FSObjType' /><Value Type='Integer'>1</Value>
</Eq>
</Where>
</Query>
</View>
从列表的特定子文件夹中获取所有项目:
请参阅:SharePoint Online:使用 PowerShell 从子文件夹中获取所有列表项
SharePoint CAML 查询生成器工具
有一些工具可用于生成 CAML 查询。我最喜欢的 SharePoint Online CAML 查询生成器是 U2U CAML 查询生成器和 CAML 设计器,它们可与 SharePoint 本地和 SharePoint Online 配合使用。
常见错误和解决方案:
错误:“一个或多个字段类型未正确安装。进入列表设置页面删除这些字段。”
解决方案:字段在 CAML 查询中通过其内部名称引用!确保引用的字段名称有效。
错误:无法完成此操作
解决方案: CAML 查询的格式不正确!例如,您可能有一个没有结束符“”的 标签。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[短剧合集] 2025年06月2日 精选+付费短剧推荐39部
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag