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