CAML在Powershell中与条款



我正在使用SP 2013本机构,我想通过将许多ID传递到列表中,然后仅返回标题字段来查询项目列表。这是在PowerShell中执行的。我有以下内容用作viewxml:

        <View>
         <ViewFields>
         <FieldRef Name='Title'/>
        </ViewFields>
 <Query>
  <Where>
   <In>
    <FieldRef Name='ID' />
       <Values>
        <Value Type='Counter'>1131</Value>
        <Value Type='Counter'>478</Value>
        <Value Type='Counter'>360</Value>
       <Values>
   </In>
  </Where>
 </Query>
</View>

我在运行$ ctx.executequery();
时会得到以下内容异常调用" executeQuery",用" 0"参数:"无法完成此操作。

请重试。"

这是代码的其余部分减去变量定义和添加客户端DLL的位

$pwd = Read-Host -Prompt "Enter password" -AsSecureString  
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteURL)  
$ctx.Credentials = New-Object System.Net.NetworkCredential($userId, $pwd)
$vFields = "<Value Type='Counter'>1131</Value><Value Type='Counter'>478</Value><Value Type='Counter'>360</Value>";
try{  
    $lists = $ctx.web.Lists ;
    $list = $lists.GetByTitle($ListName);  
    $query = New-Object Microsoft.SharePoint.Client.CamlQuery;
    $xmlCAML = "<View><ViewFields><FieldRef Name='Title'/></ViewFields><Query><Where><In><FieldRef Name='ID'/><Values>$vFields<Values></In></Where></Query></View>";
    write-host $xmlCAML -ForegroundColor Yellow
    $query.ViewXml = $xmlCAML
    $listItems = $list.GetItems($query);  
    $ctx.load($listItems);       
    $ctx.executeQuery();  
    foreach($listItem in $listItems)  
    {  
        Write-Host "Title - " $listItem["Title"]  
    }  
}  
catch{  
    write-host "$($_.Exception.Message)" -foregroundcolor red  
}

如果您尚未对此进行整理,那只是一个单重点修复,您只是无法正确关闭CAML中的<Values>...</Values>元素。需要:

<View>
     <ViewFields>
         <FieldRef Name='Title'/>
     </ViewFields>
 <Query>
  <Where>
   <In>
    <FieldRef Name='ID' />
       <Values>
        <Value Type='Counter'>1131</Value>
        <Value Type='Counter'>478</Value>
        <Value Type='Counter'>360</Value>
       </Values> <!-- <== Here :) -->
   </In>
  </Where>
 </Query>
</View>

相关内容

  • 没有找到相关文章

最新更新