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

时间:2016-01-28 07:30:11

标签: powershell sharepoint sharepoint-2007

我正在编写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天内获得项目?

1 个答案:

答案 0 :(得分:0)

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

Import-Module 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\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"]
    }
}