You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Powershell遍历站点下所有项目获取Project自定义字段值

解决方案

可用Snapin说明

你需要的对应Snapin为 Microsoft.Office.Project.Server.PowerShell,专门用于Project Server相关的Powershell操作,搭配SharePoint自带的Microsoft.SharePoint.PowerShell即可实现获取Project自定义字段值的需求。

原代码问题说明

你当前的代码存在两处问题:

  • 拼写错误:$web.Fileds 应为 $web.Fields
  • 逻辑错误:$web.Fields 存储的是SharePoint站点级的字段定义,并不存储Project Server项目实体的自定义字段值,也不能直接读取字段对应的业务数据,字段值需要从对应的业务实体(项目/列表项)上获取。

完整实现代码

场景1:获取Project Server项目实体的自定义字段值

需在Project Server应用服务器,或已安装Project Server客户端组件的环境下运行:

# 加载必要Snapin
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Add-PSSnapin Microsoft.Office.Project.Server.PowerShell -ErrorAction SilentlyContinue

# 配置参数
$pwaUrl = "<mysite>/sites/pwa"
$targetCustomFieldName = "替换为你要获取的自定义字段名称"

# 初始化PWA上下文
$pwaSite = Get-SPSite $pwaUrl
$pwaContext = New-Object Microsoft.ProjectServer.Client.ProjectContext($pwaUrl)
$pwaContext.Credentials = [System.Net.CredentialCache]::DefaultCredentials

# 加载项目集合和自定义字段集合
$allProjects = $pwaContext.Projects
$allCustomFields = $pwaContext.CustomFields
$pwaContext.Load($allProjects)
$pwaContext.Load($allCustomFields)
$pwaContext.ExecuteQuery()

# 匹配目标自定义字段
$targetCf = $allCustomFields | Where-Object { $_.Name -eq $targetCustomFieldName }

if($targetCf){
    # 遍历所有项目读取自定义字段值
    foreach($proj in $allProjects){
        $pwaContext.Load($proj)
        $pwaContext.ExecuteQuery()
        $cfValue = $proj[$targetCf.InternalName]
        Write-Host "项目名称:$($proj.Name),自定义字段值:$cfValue"
    }
}else{
    Write-Host "未找到名称为 $targetCustomFieldName 的Project自定义字段"
}

# 释放站点资源
$pwaSite.Dispose()

场景2:获取SharePoint站点下所有列表项的自定义字段值

如果你要获取的是SharePoint列表级的自定义字段,而非Project项目实体的字段,可以用以下修正后的代码:

$site = Get-SPSite "<mysite>/sites/pwa"    
foreach($web in $site.AllWebs)
{
    foreach($list in $web.Lists){
        foreach($item in $list.Items){
            Write-Host "站点:$($web.Title),列表:$($list.Title),字段值:$($item['customfieldname'])"
        }
    }
    $web.Dispose()
}
$site.Dispose()

注意事项

  • 运行账号需要有PWA项目访问权限、SharePoint站点管理权限
  • 若不在Project Server应用服务器运行,需提前安装Project Server客户端SDK组件

内容的提问来源于stack exchange,提问作者Konrad L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:57:01