2016-01-28 8 views
0

Я пишу сценарий PowerShell для получения заказов от SharePoint 2007. Бронирование осуществляется путем создания элемента в списке Календари. Список уже используется более 6 лет. Я хочу написать сценарий для отправки напоминаний по электронной почте SMTP пользователям для бронирования через 3 дня. Для получения элементов списка я использовал следующий код.Как получить список элементов в течение недели с помощью сценариев PowerShell?

$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

Вы можете просмотреть свои результаты и использовать простую математику для сравнения дат, используя 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"] 
    } 
} 
+0

я не нашел модуль в C: \ Program Files \ Common Files \ Microsoft Shared \ Расширения веб-сервера \ 15 \ ISAPI, я только что увидел папку BIN внутри C: \ Program Files \ Common Files \ Microsoft Shared \ Расширения веб-сервера \ 15 \, поэтому я могу использовать запрос CAML для фильтрации данных сейчас? –

+0

Установите это: https://www.microsoft.com/en-us/download/details.aspx?id=35585 –

+0

Большое вам спасибо, он также может применяться к SharePoint 2007? –

 Смежные вопросы

  • Нет связанных вопросов^_^