从 Project Server 中导出用户数据
重要说明!:本文介绍如何从 Project Server 2016、Project Server 2013 或 Project Server 2010 导出用户数据。 从 Project Server 2019 中导出用户数据的过程与早期版本大为不同,本文中未包含此过程。 若要了解如何从早期版本的 Project Server 2019 公共预览版导出用户数据,请参阅在 Project Server 2019 公共预览版中导出用户数据。
您的组织可以从您的 Project 服务器环境中导出特定用户的内容。 若要导出此内容,Project服务器场管理员可以执行以下步骤:
步骤 2- 在 Project Web App 服务器场中查找SharePoint实例
步骤 4 - 查找每个网站中的用户的资源 ID 或PWA帐户
流程概述
以下是从特定用户导出特定用户信息的过程的Project Web App:
下载导出脚本:下载用于导出用户数据的 .sql 和 Microsoft PowerShell 脚本。
查找PWA中的网站:查找 Project Web App Server 场中的Project实例列表。
查找用户的资源 ID:在每个资源Project Web App,查找用户的唯一资源 ID。 您还可以选择指定用户声明。
执行用户数据的 导出:使用密码导出要查看的信息。
将脚本用于不同版本的 Project Server
本文适用于 Project Server 2016 Server 2013 Project server 2010 Project Server 2010。 虽然常规过程适用于所有三个版本,但有些具体内容可能适用于不同的版本,尤其是在运行 SQL 脚本时。 以下各节对此进行说明。 请确保已对服务器场和客户端部署Project Professional更新。
备注
Project作者不会导出为本文中的过程的一部分。
步骤 1 - 下载导出脚本文件
从 Microsoft 下载中心下载 导出脚本。
下载包含一个 ZIP 文件,其中包含每个版本的 Project Server 的单独文件夹。 使用适用于版本或 Project 服务器的脚本,如下面的步骤 5 中所述。
有关运行导出脚本的重要说明:
脚本文件夹包含多个 .wsdl 文件。 PowerShell 脚本需要这些脚本。 在运行 PowerShell 脚本时,请确保它们与它们在同一目录中。
SetupReportingProcedures201x.sql 脚本临时在内存中创建 sql 会话中可用的一些全局存储过程。 以下脚本需要这些存储过程:
ExportReportingProject201x.sql
ExportReportingResource201x.sql
ExportTimesheetReporting201x.sql
备注
运行 SetupReportingProcedures201x.sql,然后再运行这些脚本之一。
每个脚本都有一个或多个必须定义的变量(如 UserID 或数据库名称)才能运行它。 检查脚本本身的说明部分,了解所需的任何参数。
在信息所在的数据库上下文中运行每个 .sql 脚本。 您必须具有db_datareader权限。
您可能需要"取消阻止"zip 文件,因为默认情况下,不允许执行从 Internet 下载的脚本。 执行以下操作以取消阻止文件:
在文件资源管理器中,转到 zip 文件的保存位置。
右键单击 zip 文件,然后单击"属性 "。
在" 常规"选项卡 上,选择 "取消阻止"。

单击“确定”。
zip 文件中包含的所有文件现在都应为"取消阻止"。 您可以通过检查文件"属性"页的"常规"选项卡中是否不再显示"取消阻止"复选框选项,在个别文件中验证 这一 点。
备注
如果仅有权访问解压缩文件,还可以单独取消阻止每个文件。
步骤 2- 在 Project Web App 服务器场中查找SharePoint实例
将 Get-SPProjectWebInstance cmdlet 与以下筛选器一起用于获取 SharePoint Server 服务器场中已存在的 PWA 网站的 URL、网站 ID 和SharePoint名称:
Get-SPProjectWebInstance | ft -a Url,SiteId,DatabaseName,DatabaseServer
在稍后的步骤中删除用户个人数据时,您需要每个网站的信息。
例如,在示例 Contoso Project 服务器场上运行 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 |
在 Project Web App Server 2010 场SharePoint实例
对于 Project Server 2010,还需要查找 Project Server PSI 服务应用程序的服务应用程序 ID。 运行 具有以下参数的 Get-ServiceApplication PowerShell cmdlet 可完成此操作:
Get-SPServiceApplication | ? { $_.TypeName -eq "Project Server PSI Service Application" } | ft -a
这还将返回 Project 服务器服务应用程序的名称。 然后,可以使用 Get-SPProjectWebInstance cmdlet 返回四个 Project Server 数据库的名称,具体方法为使用 -ServiceApplication 参数指定服务应用程序名称:
Get-SPProjectWebInstance -ServiceApplication "Project Server" | ft -a Url,PrimaryServer,PublishedDatabase,DraftDatabase,ArchiveDatabase,ReportingServer,ReportingDatabase
您需要能够引用每个数据库的数据库名称。
备注
Project Server 2010 报告数据库可以位于其他三个数据库SQL Server数据库的其他实例上。
步骤 3 - 导出用户的工作区项目
运行 ExportWorkspaceItemsByDisplayName201x.sql 脚本,然后使用可能的用户显示名称搜索数据 (部分名称搜索) 。
在 Project Server 2010 的报告数据库或更高版本的相关 PWA 数据库运行脚本。 在步骤 1 中提供的示例结果中,所有三个实例Project Web App数据库为 WSS_Content 。
在脚本中为以下参数提供值:
| 参数 | 说明 |
|---|---|
| @siteID (Project Server 2016仅) |
the PWA site ID for the site in which you want to find the user's Resource ID. 在步骤 1 PWA找到PWA网站的网站 ID 值。 |
| @resDisplayName |
显示名称服务器显示名称的用户Project部分权限。 |
步骤 4 - 查找每个网站中的用户的资源 ID 或PWA帐户
获取 Project Server 场上所有 PWA 网站的信息后,接下来需要查找要删除其个人数据的用户的资源 ID (ResID) 或声明帐户。 在步骤 1 PWA发现的每个网站中 (,因为 ResID 因每个实例实例PWA不同) 。
运行 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仅) |
the PWA site ID for the site in which you want to find the user's Resource ID. 在步骤 1 PWA找到PWA网站的网站 ID 值。 |
| @searchName |
显示名称服务器Project的组。 |
例如,如果要在步骤 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存储的数据。
Project Server 中每个数据存储都有Project脚本。 脚本的结果可能相似,但如果您具有尚未发布的草稿项目,您可能会看到一些差异。
在运行脚本之前,使用要查找的资源 ID 更新它们。
对于 Project Server 2010,请运行以下脚本:
(请务必阅读每个脚本顶部的说明。 某些脚本要求您添加数据库名称或更新其他参数。)
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,请运行以下脚本:
(请务必阅读每个脚本顶部的说明。 某些脚本要求您添加数据库名称或更新其他参数。)
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
有关这些查询的输出值的信息,请参阅Project数据中的特定用户数据。
如果需要其他用户信息,请参阅脚本步骤 6 以检索有关资源、时间表、状态等的信息。
步骤 6 - 导出数据的其他查询
运行这些额外的查询以查找有关资源、时间表、状态等的其他信息。
请参阅 运行下面的 PowerShell 脚本,了解如何运行 PowerShell 脚本。
从 Project Server 2010 导出数据
若要从 Project Server 2010 导出数据,请使用 .sql 脚本和 Microsoft PowerShell 脚本,如下表所示。 有关输出中每个字段的详细信息,请参阅输出 定义列中 的链接。
(请务必阅读每个脚本顶部的说明。 某些脚本要求您添加数据库名称或更新其他参数。)
| 导出选项 | 运行以下脚本: | 输出定义 |
|---|---|---|
| 项目组合 |
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 |
资源 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 |
资源 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 |
| 存档项目 - 查找表 | 查阅表格 |
| 存档项目 - 项目 | Project列表 ProjectVersionId (存档版本 ID) ProjectVersionDescription (备份日志的日期和时间) ProjectVersionDate (备份日期) |
| 已存档项目 - 资源 | 资源 |
| 已存档项目 - 资源自定义域 | 资源 - 自定义域 |
Archived Project Data: To export archived projects:
存档的非Project数据:
- 使用 SharePoint 2010 (备份和恢复) 创建当前服务器场的克隆。
- 从管理备份和还原过程中还原存档 (请参阅上一过程) 。
- 导出与用户相关的数据。
步骤 8 - 查找和保存附件、视图和 VBA 文件
若要查找附件和视图,建议您将给定项目导出为 XML。 为此,请将其打开Project Professional,然后另存为 XML 文件。 在您具有要查看的项目的 XML 文件后,请参阅在 Project Online 中查找自定义用户Project Server 用户导出数据。
运行 PowerShell 脚本
下表显示了给定脚本所需的参数。 以服务器场管理员SharePoint命令行管理程序中运行每个脚本。
| Script | 参数 |
|---|---|
| ResourcePlanTimephasedData201x.ps1 Export-SavedTaskStatusUpdates201x.ps1 ExportTaskStatusUpdateHistory201x.ps1 |
ProjectServerURL ResId OutputPath PromptForCredential UseWebLogin |
| Sync-ProjectWorkspace201x.ps1 | ProjectServerURL ProjectId PromptForCredential UseWebLogin |
| Export-UserViewSettings201x.ps1 | ProjectServerURL ResId OutputPath |
下表介绍了这些参数。
| 参数 | 说明 |
|---|---|
| ProjectServerURL | 网站PWA URL |
| ResId | 用户的资源 ID |
| OutputPath | 存储导出文件的位置。 |
| ProjectId | Project工作区进行同步 |
此外,每次运行脚本时,请包含以下授权参数之一:
| Auth 参数 | 说明 |
|---|---|
| [不传入任何项] | 以当前用户身份使用 NTLM 和 Kerberos 协议进行身份验证。 |
| PromptForCredential | 使用基本或摘要协议或与其他用户一起使用 NTLM 和/或 Kerberos 进行身份验证。 |
| UseWebLogin | 使用表单和 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脚本,您必须作为要导出的用户的代理运行才能查看保存的工作分配。 请使用以下过程:
- 在 Project Server 中启用委派
- 对要导出的用户启用委派权限
- 为自己启用委派权限以该用户角色委派。 (作为管理员,你可能已拥有权限。)
- 将自己配置为要导出的用户的代理
- 登录到 Project Web App。
- 单击齿轮图标,然后单击" 充当代理人"。
- 启动代理会话。
- 运行 Export-SavedTaskStatusUpdates201x.ps1 PowerShell 脚本。
- 停止代理会话。