从 Project Server 中导出用户数据

重要提示!:本文介绍如何从 Project Server 2016、Project Server 2013 或 Project Server 2010 导出用户数据。 从 Project Server 2019 导出用户数据的过程与以前的版本大不相同,本文中未包含。 若要了解如何从以前版本的 Project Server 2019 公共预览版导出用户数据,请参阅 在 Project Server 2019 公共预览版中导出用户数据

组织可以从 Project Server 环境中导出特定用户的内容。 若要导出此内容,Project Server 场管理员可以执行以下步骤:

步骤 1 - 下载导出脚本文件

步骤 2 - 在 SharePoint Server 场中查找Project Web App实例

步骤 3 - 导出用户的工作区项

步骤 4 - 在每个 PWA 网站上查找用户的资源 ID 或声明帐户

步骤 5 - 查找包含要查找的用户的项目

步骤 6 - 导出数据的其他查询

步骤 7 - 已存档项

步骤 8 - 查找并保存附件、视图和 VBA 文件

进程概述

以下是从Project Web App导出特定用户信息的过程概述:

  1. 下载导出脚本:下载用于导出用户数据的 .sql 和 Microsoft PowerShell 脚本。

  2. 查找环境中的 PWA 站点:查找 Project Server 场中Project Web App实例的列表。

  3. 查找用户的资源 ID:在每个Project Web App实例上,查找用户的唯一资源 ID。 还可以选择指定用户声明。

  4. 执行用户数据的导出:使用 scipts 导出要查看的信息。

    将脚本用于不同版本的 Project Server

本文适用于 Project Server 2016、Project Server 2013 和 Project Server 2010。 虽然常规过程适用于所有三个版本,但有一些细节可能适用于不同的版本,尤其是在运行 SQL 脚本时。 以下各节将对这些内容进行说明。 请确保已将最新更新部署到场和Project Professional客户端。

注意

项目作者不会作为本文中的过程的一部分导出。

步骤 1 - 下载导出脚本文件

Microsoft 下载中心下载导出脚本。

下载内容包含一个 ZIP 文件,其中包含每个版本的 Project Server 的单独文件夹。 按照下面的步骤 5 中所述,为版本或 Project Server 使用脚本。

有关运行导出脚本的重要说明:

  • 脚本文件夹包含多个 .wsdl 文件。 PowerShell 脚本需要这些脚本。 运行它们时,请确保它们与 PowerShell 脚本位于同一目录中。

  • SetupReportingProcedures201x.sql 脚本临时在内存中创建一些在 sql 会话中可用的全局存储过程。 以下脚本需要这些存储过程:

    • ExportReportingProject201x.sql

    • ExportReportingResource201x.sql

    • ExportTimesheetReporting201x.sql

注意

在运行上述任何脚本之前,请运行 SetupReportingProcedures201x.sql。

  • 在运行脚本之前,每个脚本都有一个或多个必须定义的变量(例如 UserID 或数据库名称)。 检查脚本本身中的说明部分,了解任何所需的参数。

  • 在信息所在的数据库的上下文中运行每个 .sql 脚本。 您必须对数据库具有db_datareader权限。

  • 可能需要“取消阻止”zip 文件,因为默认情况下,不允许执行从 Internet 下载的脚本。 执行以下操作以取消阻止文件:

  1. 在 文件资源管理器中,转到保存 zip 文件的位置。

  2. 右键单击 zip 文件,然后单击“ 属性”。

  3. 在“ 常规 ”选项卡上,选择“ 取消阻止”。 取消阻止文件。

  4. 单击“确定”

    zip 文件中包含的所有文件现在应为“取消阻止”。 可以通过检查文件“属性”页的“常规”选项卡中是否不再显示“取消阻止”复选框选项,在各个文件中对此进行验证。

    注意

    如果仅有权访问解压缩的文件,还可以单独取消阻止每个文件。

步骤 2 - 在 SharePoint Server 场中查找Project Web App实例

使用以下筛选器的 Get-SPProjectWebInstance cmdlet 获取 SharePoint 服务器场中存在的 PWA 网站的 URL、站点 ID 和数据库名称:

 Get-SPProjectWebInstance | ft -a Url,SiteId,DatabaseName,DatabaseServer

在后面的步骤中删除用户的个人数据时,需要每个网站的信息。

例如,在示例 Contoso Project Server 场上运行 cmdlet 可能会返回以下三个 PWA 站点:

URL SiteID 数据库 DatabaseServer
https://contoso/pwa1
63ed0197-3647-4279-ed5e80855fc7
WSS_Content
SQL01
https://contoso/pwa2
67fd0727-5279-3321-ef4e90956fc8
WSS_Content
SQL01
https://contoso/pwa3
63ed0197-3647-4279-eg7e20233fg9
WSS_Content
SQL02

在 SharePoint Server 2010 场中查找Project Web App实例

对于 Project Server 2010,还需要查找 Project Server PSI 服务应用程序的服务应用程序 ID。 使用以下参数运行 Get-ServiceApplication PowerShell cmdlet 以执行此操作:

Get-SPServiceApplication | ? { $_.TypeName -eq "Project Server PSI Service Application" } | ft -a

这还将返回 Project Server 服务应用程序的名称。 然后,可以使用 Get-SPProjectWebInstance cmdlet 返回四个 Project Server 数据库的名称,方法是使用 -ServiceApplication 参数指定服务应用程序名称:

Get-SPProjectWebInstance -ServiceApplication "Project Server"  | ft -a Url,PrimaryServer,PublishedDatabase,DraftDatabase,ArchiveDatabase,ReportingServer,ReportingDatabase

需要能够引用每个数据库的数据库名称。

注意

Project Server 2010 Reporting 数据库可以位于与其他三个数据库不同的SQL Server实例上。

步骤 3 - 导出用户的工作区项

运行 ExportWorkspaceItemsByDisplayName201x.sql 脚本,并使用用户的可能显示名称搜索数据, (部分名称搜索) 。

在 Project Server 2010 的 Reporting 数据库上运行脚本,或针对更高版本的相关 PWA 站点运行该数据库。 在步骤 1 中提供的示例结果中,所有三个Project Web App实例的数据库WSS_Content

在脚本中为以下参数提供值:

参数 说明
仅@siteID (Project Server 2016)
要在其中查找用户资源 ID 的站点的 PWA 站点 ID。 在步骤 1 中找到了 PWA 网站的 PWA 站点 ID 值。
@resDisplayName
Project Server 用户的显示名称或部分显示名称。

步骤 4 - 在每个 PWA 网站上查找用户的资源 ID 或声明帐户

获取 Project Server 场上所有 PWA 站点的信息后,接下来需要查找要删除其个人数据的用户的资源 ID (ResID) 或 Claims 帐户。 在步骤 1 (中发现的每个 PWA 站点上执行此操作,因为每个 PWA 实例) 的 ResID 不同。

运行 FindUser201x.sql SQL 脚本以查找用户的资源 ID 或声明帐户。

注意

需要在 SQL Server Management Studio 中运行 FindUser201x.sql SQL 脚本,并且必须具有服务器场管理员权限才能访问相应的数据库。

在 Project Server 2010 的已发布数据库上运行脚本,或针对更高版本的相关 PWA 站点运行该数据库。 在步骤 1 中提供的示例结果中,所有三个Project Web App实例的数据库WSS_Content

在脚本中为以下参数提供值:

参数 说明
仅@siteID (Project Server 2016)
要在其中查找用户资源 ID 的站点的 PWA 站点 ID。 在步骤 1 中找到了 PWA 网站的 PWA 站点 ID 值。
@searchName
Project Server 用户的显示名称。

例如,如果要在步骤 1 中的示例中找到的 Contoso PWA1 站点上的 Adam Barr 的 userID,可以编辑脚本中参数的值,如下所示:

DECLARE @siteId uniqueidentifier = '63ed0197-3647-4279-ed5e80855fc7'
DECLARE @searchName nvarchar(255) = 'Adam Barr'

该脚本返回用户的“资源名称”、“资源 ID”、“电子邮件地址”和“声明帐户”值。

步骤 5 - 查找包含要查找的用户的项目

可以使用在步骤 4 中找到的资源 ID 来查找用户参与的项目。 这是通过使用 SQL 脚本查询存储的项目数据以获取项目列表来完成的。

Project Server 中的每个数据存储都有单独的脚本。 脚本的结果可能类似,但如果你有尚未发布的草稿项目,你可能会看到一些差异。

在运行脚本之前,请使用要查找的资源 ID 更新它们。

对于 Project Server 2010,请运行以下脚本:

(请务必阅读每个脚本顶部的说明。某些脚本要求添加数据库名称或更新其他 parameters。)

  • ExportDraftProjectList2010.sql

  • ExportPublishedProjectList2010.sql

  • ExportReportingProjectList2010.sql

对于 Project Server 2013,请运行以下脚本:

  • ExportDraftProjectList2013.sql

  • ExportPublishedProjectList2013.sql

  • ExportReportingProjectList2013.sql

对于Project Server 2016,请运行以下脚本:

  • ExportDraftProjectList2016.sql

  • ExportPublishedProjectList2016.sql

  • ExportReportingProjectList2016.sql

检查查询的输出,并确定要在其中查找特定用户数据的项目。 为了方便起见,可能需要将列表从 SQL Server 导出到 CSV 文件。

确定要搜索用户信息的项目后,请使用上述脚本返回的 ProjectUID 为每个项目运行以下脚本:

对于 Project Server 2010,请运行以下脚本:

(请务必阅读每个脚本顶部的说明。某些脚本要求添加数据库名称或更新其他 parameters。)

  • ExportDraftProject2010.sql

  • ExportPublishedProject2010.sql

  • ExportReportingProjects2010.sql

  • ExportReportingProjectTimephasedData2010.sql

对于 Project Server 2013,请运行以下脚本:

  • ExportDraftProject2013.sql

  • ExportPublishedProject2013.sql

  • ExportReportingProjects2013.sql

  • ExportReportingProjectTimephasedData2013.sql

对于Project Server 2016,请运行以下脚本:

  • ExportDraftProject2016.sql

  • ExportPublishedProject2016.sql

  • ExportReportingProjects2016.sql

  • ExportReportingProjectsTimephased2016.sql

有关这些查询的输出值的信息,请参阅 报告数据中的特定于项目的用户数据

如果需要其他用户信息,请参阅脚本的步骤 6,以检索有关资源、时间表、状态等的信息。

步骤 6 - 导出数据的其他查询

运行这些附加查询以查找有关资源、时间表、状态等的其他信息。

有关如何 运行 PowerShell 脚本 的信息,请参阅下面的运行 PowerShell 脚本。

从 Project Server 2010 导出数据

若要从 Project Server 2010 导出数据,请使用下表中所述的 .sql 脚本和 Microsoft PowerShell 脚本。 有关输出中每个字段的详细信息,请参阅 “输出定义 ”列中的链接。

(请务必阅读每个脚本顶部的说明。某些脚本要求添加数据库名称或更新其他 parameters。)

导出选项 运行以下脚本: 输出定义
项目组合管理
ExportPortfolioModels2010.sql
司机
优先级
分析
资源计划
Export-ResourcePlanTimephasedData2010.ps1
ExportResourcePlans2010.sql
ExportReportingResourcePlans2010.sql
ResourcePlan
资源
ExportResource2010.sql
ExportReportingResource2010.sql
资源
ReportingResource
安全性
ExportSecurity2010.sql
安全性
服务设置
ExportServerSettings2010.sql
QueueJobs
CustomFields
LookupTables
日历
UnsubscribedAlerts
SubscribedReminders
ReminderEmails
代表团
状态报告
ExportStatusReports2010.sql
状态报告
TaskStatus
ExportAssignmentsSavedData2010.sql
ExportSubmittedTaskStatusUpdates2010.sql
ExportAssignmentTransactionHistory2010.sql
ExportAssignmentHistoryData2010.ps1
ExportSavedTaskStatusUpdates2010.sql
Export-SavedTaskStatusUpdates2010.ps1 (注释)
StatusAssignSaved
StatusAssignHistory
时间表
ExportTimesheets2010.sql
ExportReportingTimesheets2010.sql
时间表
Timesheets_Reporting
用户视图设置
Export-UserViewSettings2010.ps1
UserViewSettings
工作流
ExportWorkflow2010.sql
工作流
工作区项
ExportWorkspaceItemsByDisplayName2010.sql
WorkspaceItems

从 Project Server 2013 导出数据

若要从 Project Server 2013 导出数据,请使用下表中所述的 .sql 脚本和 Microsoft PowerShell 脚本。 有关输出中每个字段的详细信息,请参阅 “输出定义 ”列中的链接。

导出选项 运行以下脚本: 输出定义
项目组合管理
ExportPortfolioModels2013.sql
司机
优先级
分析
资源计划
ExportResourcePlanTimephasedData2013.ps1
ExportResourcePlans2013.sql
ResourcePlan
资源
ExportResource2013.sql
ExportReportingResource2013.sql
Resource
ReportingResource
安全性
ExportSecurity2013.sql
安全性
服务设置
ExportServerSettings2013.sql
QueueJobs
CustomFields
LookupTables
日历
UnsubscribedAlerts
SubscribedReminders
ReminderEmails
代表团
状态报告
ExportStatusReports2013.sql
状态报告
TaskStatus
ExportAssignmentsSavedData2013.sql
ExportSubmittedTaskStatusUpdates2013.sql
ExportAssignmentTransactionHistory2013.sql
ExportAssignmentHistoryData2013.ps1
ExportSavedTaskStatusUpdates2013.sql
Export-SavedTaskStatusUpdates2013.ps1 (注释)
StatusAssignSaved
StatusAssignHistory
时间表
ExportTimesheets2013.sql
ExportReportingTimesheets2013.sql
时间表
Timesheets_Reporting
用户视图设置
Export-UserViewSettings2013.ps1
UserViewSettings
工作流
ExportWorkflow2013.sql
工作流
工作区项
ExportWorkspaceItemsByDisplayName2013.sql
WorkspaceItems

从Project Server 2016导出数据

若要从Project Server 2016导出数据,请使用 .sql 脚本和 Microsoft PowerShell 脚本,如下表所述。 有关输出中每个字段的详细信息,请参阅 “输出定义 ”列中的链接。

导出选项 运行以下脚本: 输出定义
服务
ExportEngagementScripts2016.sql
服务
项目组合管理
ExportPortfolioModels2016.sql
司机
优先级
分析
资源计划
ExportResourcePlans2016.sql
ResourcePlan
资源
ExportResource2016.sql
ExportReportingResource.sql
Resource
ReportingResource
安全性
ExportSecurity2016.sql
安全性
服务设置
ExportServerSettings2016.sql
QueueJobs
CustomFields
LookupTables
日历
UnsubscribedAlerts
SubscribedReminders
ReminderEmails
代表团
状态报告
ExportStatusReports2016.sql
状态报告
TaskStatus
ExportAssignmentsSavedData2016.sql
ExportSubmittedTaskStatusUpdates2016.sql
ExportAssignmentTransactionHistory2016.sql
ExportAssignmentHistoryData.ps1
ExportSavedTaskStatusUpdates2016.sql
Export-SavedTaskStatusUpdates2016.ps1
StatusAssignSaved
StatusAssignHistory
时间表
ExportTimesheets2016.sql
ExportReportingTimesheets2016.sql
时间表
Timesheets_Reporting
用户视图设置
Export-UserViewSettings2016.ps1
UserViewSettings
工作流
ExportWorkflow2016.sql
工作流
工作区项
ExportWorkspaceItemsByDisplayName2016.sql
WorkspaceItems

步骤 7 - 已存档项

ExportArchievdData201x.sql 将返回存储在与资源相关的存档数据库中的以下数据。

导出选项 输出定义
已存档的项目 - 日历 日历
存档的项目 - 自定义字段 CustomFields
存档的项 - 查阅表 查阅表格
存档的项 - 项目 项目列表
ProjectVersionId (存档版本 ID)
ProjectVersionDescription (备份) 的日期和时间
ProjectVersionDate (备份) 的日期
已存档的项 - 资源 Resource
存档的项 - 资源自定义域 资源 - 自定义域

存档的项目数据:若要导出存档的项目,请执行以下操作:

  1. 存档当前项目 (2010)
  2. 还原存档的版本 (2010)
  3. 导出用户相关数据。
  4. 从存档还原项目。

已存档的非项目数据:

  1. 使用 SharePoint 备份和恢复 (2010) 创建当前场的克隆。
  2. 从管理备份和还原中还原存档的项 (请参阅前面的过程) 。
  3. 导出用户相关数据。

步骤 8 - 查找并保存附件、视图和 VBA 文件

若要查找附件和视图,建议将给定项目导出到 XML。 为此,请在 Project Professional 中将其打开,然后将其另存为 XML 文件。 获得要查看的项目的 XML 文件后,请参阅在Project Online中查找自定义用户项和 Project Server 用户导出数据

运行 PowerShell 脚本

下表显示了给定脚本所需的参数。 以场管理员身份在 SharePoint 命令行管理程序中运行每个脚本。

Script 参数
ResourcePlanTimephasedData201x.ps1
Export-SavedTaskStatusUpdates201x.ps1
ExportTaskStatusUpdateHistory201x.ps1
ProjectServerURL
渣 油
OutputPath
PromptForCredential
UseWebLogin
Sync-ProjectWorkspace201x.ps1 ProjectServerURL
ProjectId
PromptForCredential
UseWebLogin
Export-UserViewSettings201x.ps1 ProjectServerURL
渣 油
OutputPath

下表介绍了这些参数。

参数 说明
ProjectServerURL PWA 网站的 URL
渣 油 用户的资源 ID
OutputPath 用于存储导出文件的位置。
ProjectId 要同步的项目工作区

每次运行脚本时,还包含以下授权参数之一:

身份验证参数 说明
[未传入任何内容] 使用 NTLM 和 Kerberos 协议作为当前用户进行身份验证。
PromptForCredential 使用基本协议或摘要协议或使用 NTLM 和/或 Kerberos 与其他用户进行身份验证。
UseWebLogin 使用 Forms 和 ADFS/SAML 协议进行身份验证。

例如:

.\Export-UserViewSettings2016.ps1 -ProjectServerURL "https://pwa" -resId "55efd6ff-853c-4fec-8abd-6df2c90b94e5" -OutputPath "C:\"

有关参数的更多示例和信息,请参阅每个 PowerShell 脚本文件。

仅运行 Export-SavedTaskStatusUpdates201x.ps1 (2010 和 2013)

若要运行Export-SavedTaskStatusUpdates201x.ps1脚本,必须作为要导出的用户的代理人运行才能查看保存的分配。 请使用以下过程:

  1. 在 Project Server 中打开委派
  2. 对要导出的用户启用委派权限
  3. 为自己启用委派权限以委派为该用户。 (作为管理员,你可能已经拥有权限。)
  4. 将自己配置为要导出的用户的代理人
  5. 登录到 Project Web App。
  6. 单击齿轮图标,然后单击“ 充当代理人”。
  7. 启动委托会话。
  8. 运行 Export-SavedTaskStatusUpdates201x.ps1 PowerShell 脚本。
  9. 停止委托会话。

另请参阅

从 Project Server 中删除用户数据