查找 SharePoint Online 上两个日期之间的所有文件

问题描述 投票:0回答:1

我正在尝试在 PowerShell 中编写一个脚本,将我的所有文件从一个站点复制到另一个站点。我试图通过同时处理这么多文件来降低成本。我想我会在创建日期的日期范围内执行此操作。但我无法让它使用日期来过滤列表,也无法让它按“创建”对列表进行排序。这是我尝试过的:

Get-PnPListItem -List $ListName  -PageSize 500  | Where-object {$_.FieldValue.Created -GT [DateTime]'02/16/2015'} 
    
Get-PnPListItem -List $ListName -PageSize 500 | where-object {($_.FileSystemObjectType -eq "File" -and $_.Created -gt [DateTime]'02/16/2015')} 
    
Get-PnPListItem -List $ListName -PageSize 500 | where-object { $_.FileSystemObjectType -eq "File" -and $_['Created_x0020_Date'] -gt $Created } 
    
$ListItems = $ListItems | Sort $_.Created # also tried $_['Created_x0020_Date']

如果我使用 CAML 查询,即使在查询中定义,我总是会收到超出列表视图阈值错误。

谁能帮我解决这个问题?

    $Query = 
    "<View>
    <RowLimit Paged = 'TRUE'>100
    <Query>
    <Where>
    <And>
    <Geq>
    <FieldRef Name='Created' />
    <Value Type='DateTime'>2015-01-01T12:00:00Z</Value>
    </Geq>
    <Leq>
    <FieldRef Name='Created' />
    <Value Type='DateTime'>2015-01-30T12:00:00Z</Value>
    </Leq>
    </And>
    </Where>
    </Query>    
    </RowLimit>
    </View>";

     Get-PnPListItem -List $ListName  -PageSize 500  -Query $Query

powershell sharepoint caml
1个回答
0
投票

Fieldvalues 是一个字典。您可以像这样使用

Where-Object

Get-PnPListItem -List $ListName -PageSize 500 | Where-Object {
    $_.fieldvalues['Created'] -gt [DateTime]'01/01/2015' -and
    $_.fieldvalues['Created'] -lt [DateTime]'01/31/2015'
}

您甚至可以省略对日期时间的转换,因为 LHS 是日期时间

Get-PnPListItem -List $ListName -PageSize 500 | Where-Object {
    $_.fieldvalues['Created'] -ge '01/01/2015' -and
    $_.fieldvalues['Created'] -le '01/31/2015'
}
© www.soinside.com 2019 - 2024. All rights reserved.