【问题标题】:Get Project Web Sites programmatically for Project Server Projects with specific value in a custom field以编程方式为在自定义字段中具有特定值的 Project Server 项目获取项目网站
【发布时间】:2016-12-28 12:35:02
【问题描述】:

我使用的是 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 Server 数据的 PS cmdlet。相反,必须通过 PSI Web 服务并使用 ReadProjectList() 方法。

我已设法通过 ReadProjectList() 获得项目列表,但无法判断它们是否为“活动”项目,并且我无法找到项目网站的直接链接。

我可以使用 SharePoint cmdlet 遍历所有项目网站并匹配项目名称,但这似乎不是最佳选择,我仍然需要知道哪些项目是“活动的”。

【问题讨论】:

  • 有一种从项目 UID 获取工作区 URL 的方法。 WssInterop Web 服务的 ReadWssInfo 方法返回一个 ProjectWSSInfoDataSet 对象,其中包括项目网站 URL(如果项目存在)。一旦我破解了问题的“活动”状态部分,我将发布完整答案。

标签: powershell ms-project-server-2010


【解决方案1】:

我发现了这个,它使用最后修改日期来确定它是否处于活动状态。

#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() 
}

【讨论】:

  • 感谢您的建议。如果我选择正确的截止日期,这对于我的目的来说可能是一个足够好的近似值。我想我会让这个问题停留更长时间,但希望有办法通过 PSI 获得实际的项目状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多