从 Project Server 中导出用户数据
重要提示!:本文介绍如何从 Project Server 2016、Project Server 2013 或 Project Server 2010 导出用户数据。 从 Project Server 2019 导出用户数据的过程与以前的版本大不相同,本文中未包含。 若要了解如何从以前版本的 Project Server 2019 公共预览版导出用户数据,请参阅 在 Project Server 2019 公共预览版中导出用户数据。
组织可以从 Project Server 环境中导出特定用户的内容。 若要导出此内容,Project Server 场管理员可以执行以下步骤:
步骤 2 - 在 SharePoint Server 场中查找Project Web App实例
步骤 4 - 在每个 PWA 网站上查找用户的资源 ID 或声明帐户
进程概述
以下是从Project Web App导出特定用户信息的过程概述:
下载导出脚本:下载用于导出用户数据的 .sql 和 Microsoft PowerShell 脚本。
查找环境中的 PWA 站点:查找 Project Server 场中Project Web App实例的列表。
查找用户的资源 ID:在每个Project Web App实例上,查找用户的唯一资源 ID。 还可以选择指定用户声明。
执行用户数据的导出:使用 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 下载的脚本。 执行以下操作以取消阻止文件:
在 文件资源管理器中,转到保存 zip 文件的位置。
右键单击 zip 文件,然后单击“ 属性”。
在“ 常规 ”选项卡上,选择“ 取消阻止”。
单击“确定”。
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 |
存档的项 - 资源自定义域 | 资源 - 自定义域 |
存档的项目数据:若要导出存档的项目,请执行以下操作:
已存档的非项目数据:
- 使用 SharePoint 备份和恢复 (2010) 创建当前场的克隆。
- 从管理备份和还原中还原存档的项 (请参阅前面的过程) 。
- 导出用户相关数据。
步骤 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脚本,必须作为要导出的用户的代理人运行才能查看保存的分配。 请使用以下过程:
- 在 Project Server 中打开委派
- 对要导出的用户启用委派权限
- 为自己启用委派权限以委派为该用户。 (作为管理员,你可能已经拥有权限。)
- 将自己配置为要导出的用户的代理人
- 登录到 Project Web App。
- 单击齿轮图标,然后单击“ 充当代理人”。
- 启动委托会话。
- 运行 Export-SavedTaskStatusUpdates201x.ps1 PowerShell 脚本。
- 停止委托会话。