【问题标题】:SharePoint Pnp PowerShell date querySharePoint Pnp PowerShell 日期查询
【发布时间】:2018-06-19 17:04:14
【问题描述】:

我正在使用 SharePoint Online,并希望使用 PnP PowerShell 构建一个查询,以检查日期字段 Aviseringsdatum 中的任何日期是否等于今天的日期。但是我的代码仍然返回所有项目(当前列表中有 2 个项目。一个是今天的日期,一个是昨天的日期)。有什么想法吗?

代码

 $Today = (Get-date).ToString( "yyyy-MM-ddTHH:mm:ss.fffffffZ" )
    $ListItems = Get-PnPListItem -List "Avtal" -Query "
        <Query>
           <Where>
              <eq>
                 <FieldRef Name='Aviseringsdatum' />
                 <Value IncludeTimeValue='TRUE' Type='DateTime'>$Today</Value>
              </eq>
           </Where>
        </Query>
        <ViewFields>
           <FieldRef Name='Title' />
           <FieldRef Name='Aviseringsdatum' />
           <FieldRef Name='Avtalsansvarig' />
        </ViewFields>
        <QueryOptions />
        ";

【问题讨论】:

    标签: powershell sharepoint-online


    【解决方案1】:

    您在 CAML 查询中缺少 &lt;View&gt; 属性。

    PnP PowerShell 在内部使用 CSOM。

    查询CSOM中的列表项,需要&lt;View&gt;属性。

    所以,修改你的代码如下:

    $Today = (Get-date).ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ")
    
    $camlQuery = $("<View>
            <Query>
               <Where>
                  <Eq>
                     <FieldRef Name='Aviseringsdatum' />
                     <Value IncludeTimeValue='TRUE' Type='DateTime'>$Today</Value>
                  </Eq>
               </Where>
            </Query>
            <ViewFields>
               <FieldRef Name='Title' />
               <FieldRef Name='Aviseringsdatum' />
               <FieldRef Name='Avtalsansvarig' />
            </ViewFields>
        </View>")
    
    $ListItems = Get-PnPListItem -List "Avtal" -Query $camlQuery
    

    您也可以替换该行以使用开箱即用的&lt;Today/&gt; 元素,如下所示:

    <Value IncludeTimeValue='TRUE' Type='DateTime'><Today /></Value>
    

    所以,您的完整代码如下:

    $camlQuery = $("<View>
                <Query>
                   <Where>
                      <Eq>
                         <FieldRef Name='Aviseringsdatum' />
                         <Value IncludeTimeValue='TRUE' Type='DateTime'><Today /></Value>
                      </Eq>
                   </Where>
                </Query>
                <ViewFields>
                   <FieldRef Name='Title' />
                   <FieldRef Name='Aviseringsdatum' />
                   <FieldRef Name='Avtalsansvarig' />
                </ViewFields>
            </View>")
    
    $ListItems = Get-PnPListItem -List "Avtal" -Query $camlQuery
    

    【讨论】:

    • 尝试了您的代码,收到此错误消息,无法确定导致错误的原因。 Get-PnPListItem : Exception from HRESULT: 0x80131904 + $ListItems = Get-PnPListItem -List "Avtal" -Query $camlQuery + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : WriteError: (:) [Get-PnPListItem], ServerException + FullyQualifiedErrorId : EXCEPTION,SharePointPnP.PowerShell.Commands.Lists.GetListItem
    • 看起来查询格式不正确。您是否使用正确的内部列名?这通常发生在内部名称错误时
    • 检查了正确的内部列名但没有运气的代码,但与我的同事交谈,我们将首先获取所有项目并在我们自己的代码中检查日期。无论如何,出于其他原因,我们需要所有物品。但是感谢您的帮助和努力!
    • 抱歉,只是为了我的缘故和好奇,你能检查一下编辑过的代码吗?将eq 运算符的大小写更新为Eq
    • 我现在正在旅途中,但一到我的电脑就会这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2022-11-18
    • 2022-01-02
    • 1970-01-01
    相关资源
    最近更新 更多