我正在使用Microsoft Project Server 2010,我需要批量更新与活动项目关联的项目网站(PWS)中的某些SharePoint列表。
项目被认为是活跃的'如果“项目状态”自定义字段具有某些特定值。
类似下面的伪代码:
Get-AllProjectServerProjects |
Where-Object { ($_.CustomFields["Project Status"]) -eq 'active' } |
Foreach-Object {
$projectWebSite = $_.ProjectWebSiteURL
# Code here to update SharePoint list for this site
}
我已经有了更新SharePoint列表的代码,我正在寻找的方法是让Project Web Sites与“活跃”相关联。项目
据我所知,没有公开Project Server数据的PS cmdlet。相反,有必要通过PSI Web服务并使用ReadProjectList()方法。
我设法通过ReadProjectList()获取项目列表,但无法判断它们是否处于活动状态'项目,我没有设法找到项目网站的直接链接。
我可以使用SharePoint cmdlet遍历所有项目网站并匹配项目名称,但这似乎不是最佳的,我仍然需要知道哪些项目是“活跃的”。
答案 0 :(得分:0)
我发现了这一点,它使用上次修改日期来确定它是否处于活动状态。
#Set-ExecutionPolicy RemoteSigned
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$url="http://sharePoint.company.com"
$site = New-Object Microsoft.SharePoint.SPSite($url)
$spWebApp = $site.WebApplication
$OutputFN = "c:\ActiveSitesReport.csv"
"Site Name `t URL `t Last Modified" > $OutputFN
# Iterate through all sites:
foreach ( $spSite in $spWebApp.Sites )
{
foreach ($spWeb in $spSite.AllWebs)
{
if ($spWeb.IsRootWeb)
{
$siteName = $spWeb.Title +" - Root";
}
else
{
$siteName = $spSite.RootWeb.Title + " - " + $spWeb.Title;
}
$siteName + "`t" + $spWeb.Url + "`t" + $spWeb.LastItemModifiedDate >> $OutputFN
$spWeb.Dispose()
}
$spSite.Dispose()
}