如何使用 PowerShell 脚本获取一周内的项目列表?

How to get list for items within a week using PowerShell scripts?

我正在编写一个 PowerShell 脚本以从 SharePoint 2007 获取预订。预订是通过在日历列表中创建一个项目来完成的。该列表已经使用了 6 年多。我想编写一个脚本,在 3 天后向用户发送 SMTP 电子邮件提醒以进行预订。我使用以下代码获取列表项。

$service = New-WebServiceProxy -Uri $uri -UseDefaultCredential
...
$xmlDoc = new-object System.Xml.XmlDocument            
$query = $xmlDoc.CreateElement("Query")            
$viewFields = $xmlDoc.CreateElement("ViewFields","Week")            
$queryOptions = $xmlDoc.CreateElement("QueryOptions")            
$query.set_InnerXml("FieldRef Name='Full Name'")
$rowLimit = "50000"
...
if($service -ne $null){
try{
    $list = ($service.GetListItems($listName, $viewName, $query, $viewFields, $rowLimit, $queryOptions, "")).data.row
    $list | export-csv "$path\list.csv"
}catch {
    Write-host "Error !! Cannot update the list.csv."
}

我不想每次运行脚本都得到这6年的所有物品,我可以只在接下来的3天内得到物品吗?

您可以遍历结果并使用一些简单的数学来比较日期,使用 CSOM 将使逻辑在未来更容易适应。您也许也可以使用 CAML 查询来进行日期过滤,但这不是我的强项:

Import-Module 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll'
$siteUrl = "http://Your.Site/Subsite"
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)  
$lookupList = $ctx.Web.Lists.GetByTitle('Bookings')
$query = New-Object Microsoft.SharePoint.Client.CamlQuery
$query.ViewXml = "<View>
    <RowLimit></RowLimit>
</View>"
$listItems = $lookupList.getItems($query)
$ctx.Load($listItems)
$ctx.ExecuteQuery()
foreach($item in $listItems)
{
    if([DateTime]$item["DueDate"] -lt [DateTime]::Now.Add([TimeSpan]::FromDays(3)) -and [DateTime]$item["DueDate"] -gt [DateTime]::Now)
    {
        $item["Title"]
    }
}