我正在使用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 />
";
CAML 查询中缺少 <View>
属性。
PnP PowerShell 内部使用 CSOM。
若要在 CSOM 中查询列表项,需要<View>
属性。
因此,请按如下方式修改代码:
$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
您还可以替换该行以使用开箱即用的<Today/>
元素,如下所示:
<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