使用 Powershell + CAML 从 sharepoint (2010) 获取定期事件



*编辑: *

设法获取了复发事件。 如何克服年份限制?

<Value Type='DateTime'>
<Year/>
</Value>

我想得到所有项目,甚至提前 5 年。

--------源语言----------

我正在尝试运行PowerShell脚本以从SharePoint-2010日历导出所有事件,包括定期事件。 我从

https://github.com/CompartiMOSS/SharePoint-PowerShell/blob/master/SharePoint/Administration/PS_HowToDoCAMLQuery.ps1

是否通过 Web 服务从 SharePoint 日历展开"定期事件"?

脚本正在运行,但未显示定期事件。 我错过了什么?


If ((Get-PSSnapIn -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )  
{ Add-PSSnapIn -Name Microsoft.SharePoint.PowerShell } 
$host.Runspace.ThreadOptions = "ReuseThread" 
#Definition of the function that allows to do the CAML query 
function DoCAMLQuery 
{ 
param ($sSiteCollection,$sListName) 
try 
{ 
$spSite=Get-SPSite -Identity $sSiteCollection
$spwWeb=$spSite.OpenWeb()        
$splList = $spwWeb.Lists.TryGetList($sListName) 
if ($splList)  
{  
$spqQuery = New-Object Microsoft.SharePoint.SPQuery 
$spqQuery.Query =  
"<GetListItems
xmlns='http://schemas.microsoft.com/sharepoint/soap/'>
<listName>'Event Calendar'</listName>
<query>
<Query>
<Where>
<DateRangesOverlap>
<FieldRef Name='EventDate' />
<FieldRef Name='EndDate' />
<FieldRef Name='RecurrenceID' />
<FieldRef Name='fRecurrence' />
<FieldRef Name='RecurrenceData' />
<Value Type='DateTime'><Year/>
</Value>
</DateRangesOverlap>
</Where>
</Query>
</query>
<queryOptions>
<QueryOptions>
<ExpandRecurrence>TRUE</ExpandRecurrence>
</QueryOptions>
</queryOptions>
</GetListItems>" 
$spqQuery.ExpandRecurrence = $true
$splListItems = $splList.GetItems($spqQuery) 
$iNumber=1 
foreach ($splListItem in $splListItems) 
{ 
write-host "File # $iNumber - Name: " $splListItem.Name " ," "Title:" $splListItem["ows_LinkTitle"] -ForegroundColor Green 
$iNumber+=1 
} 
}      
$spSite.Dispose() 
} 
catch [System.Exception] 
{ 
write-host -f red $_.Exception.ToString() 
} 
} 
Start-SPAssignment –Global 
#Calling the function 
$sSiteCollection="http://sharepoint/" 
$sListName="Compliance Events"
DoCamlQuery -sSiteCollection $sSiteCollection -sListName $sListName 
Stop-SPAssignment –Global 
Remove-PSSnapin Microsoft.SharePoint.PowerShell
Thanks!
S

下面的示例脚本将返回从Now((到未来两年的事件。

if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) {
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}
$siteURL="http://sp"
$site = Get-SPSite $siteURL
$web = $site.OpenWeb()
$splList = $web.Lists.TryGetList("MyCalendar")
$spqQuery = New-Object Microsoft.SharePoint.SPQuery 
$spqQuery.Query = "<Where><DateRangesOverlap><FieldRef Name='EventDate' /><FieldRef Name='EndDate' /><FieldRef Name='RecurrenceID' /><Value Type='DateTime'><Now /></Value></DateRangesOverlap></Where>";
$spqQuery.ExpandRecurrence = $true

$splListItems = $splList.GetItems($spqQuery) 
Write-Host $splListItems.Count      

一个线程供您参考

相关内容

  • 没有找到相关文章

最新更新