从 Project Server 2019 中导出用户数据

重要提示!:从 Project Server 2019 导出用户数据的过程与用于 Project Server 2016、Project Server 2013 和 Project Server 2010 的过程大不相同。 若要了解如何从以前版本的 Project Server 导出用户数据,请参阅 从 Project Server 导出用户数据

进程概述

下面概述了从 Project Server 2019 中的 Project Web App 网站导出特定用户信息的过程:

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

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

  3. 导出用户的工作区项:在项目网站中查找用户数据。

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

  5. 执行用户数据的导出:使用脚本导出要查看的信息。

  6. 查看导出的内容:查看导出的数据以获取有关用户的信息。

  7. 存档的项: 在存档数据库中查找有关用户的数据。

  8. 查找并保存自定义视图、自定义筛选器、附件和宏: 找到自定义项。

  9. 需要手动导出的数据:查找导出中未包含的用户数据。

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

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

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

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

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

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

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

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

    4. 单击“确定”

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

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

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

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

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

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

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

URL SiteID Database 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

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

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

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

在相关 PWA 站点的数据库上运行脚本。 在步骤 1 中提供的示例结果中,将 WSS_Content所有三个 Project Web App 实例的数据库。

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

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

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

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

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

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

参数 说明
@siteID 要在其中查找用户资源 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 - 从 PWA 站点导出用户数据

接下来,需要运行** ExportProjectUserContent** PowerShell 脚本,以从 Project Server 环境中的每个 PWA 站点导出用户的数据。 若要运行脚本,需要确保你和环境满足先决条件。

先决条件

  • Project Online 桌面客户端或 Project Professional 2019 公共预览版:需要 Project Online 桌面客户端或 Project Professional 2019 并连接到 Project PWA 实例。

若要将 Project 客户端连接到 Project PWA 实例,请执行以下操作:

  1. 单击“文件”选项卡以打开 Backstage 视图。 单击“ 信息”,然后单击“ 管理 帐户”。

  2. 在“ 项目 Web 应用帐户 ”对话框中,单击“ 添加”。

  3. 在“ 帐户属性 ”对话框中,在“帐户名称”框中键入此 帐户的名称

  4. “Project Server URL”框中输入要连接到的 PWA 网站的 URL。

  5. 单击“确定”

  6. 在“ 项目 Web 应用帐户 ”对话框中,选择“ 设置为默认值”, 然后单击“ 确定”。

  7. 重启 Project,并登录到 PWA 站点。

  • 权限: 若要拥有运行脚本所需的权限,至少需要执行以下操作之一:

    1. 将自己作为网站集管理员添加到要为其运行脚本的 PWA 网站。

    2. 如果处于“项目”权限模式,则分配有 “管理用户和组 ”以及“ 访问 Project Server Reporting Service ”权限(对 Project Server 实例)。 如果处于 SharePoint 权限模式,请具有 SharePoint 管理员角色。

运行 ExportProjectUserContent 脚本

使用 ExportProjectUserContent.ps1 PowerShell 脚本导出用户的数据。

运行脚本时,需要配置四个参数。

-Url PWA 网站的 URL
-ResourceID 用户的资源 ID。
-ClaimsAccount 用户的声明帐户
-OutputDirectory 用于存储导出文件的位置。

还需要选择身份验证方法。

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

可以通过指定用户的资源 ID 或登录名来选择运行脚本。

使用用户资源 ID 运行 ExportProjectUser 脚本

可以在 Powershell 中对上面列出的参数使用以下命令:

.\ExportProjectUserContent.ps1 -Url <PwaSiteURL> -ResourceUid <UsersResourceID> -OutputDirectory <LocationToStoreOutput>

例如,如果要为资源 ID 为 cb5c91cf-fd6b-e711-80d0-00155da4a406 的用户从 Costoso PWA1 站点 (站点 URL https://contoso/sites/pwa1) 导出用户数据,并将导出文件保存到 c:\pwa1siteOutput,请输入:

.\ExportProjectUserContent.ps1 -Url https://contoso/sites/pwa1 -ResourceUid cb5c91cf-fd6b-e711-80d0-00155da4a406 -OutputDirectory c:\pwa1siteOutput

使用用户声明帐户运行 ExportProjectUser 脚本

可以在 Powershell 中对上面列出的参数使用以下命令:

.\ExportProjectUserContent.ps1 -Url <PwaSiteURL> -ClaimAccount <UsersClaimAccount> -OutputDirectory <LocationToStoreOutput>

例如,如果要为登录名AdamB@contoso.onmicrosoft.com为 的用户的 Costoso PWA1 站点 (站点 URL https://contoso/sites/pwa1) 导出用户数据,并将导出文件保存到 c:\pwa1siteOutput,请输入:

.\ExportProjectUserContent.ps1 -Url https://contoso/sites/pwa1 -LoginName AdamB@contoso.onmicrosoft.com -OutputDirectory c:\pwa1siteOutput

脚本成功运行后,所有导出的数据都将存储在指定的 -OutputDirectory 中。

你收到的某些导出的用户内容将包含许多 json 格式的文件,其中包含特定于功能的用户信息。 例如,Security.json文件包含有关用户的安全组、类别和权限设置的数据。 下一部分将更详细地介绍这些功能 相关的 json 文件 。 默认情况下,运行 ExportProjectUserContent 脚本时,将收到所有 27 个与功能相关的 json 文件。 但是,可以使用 -Options 参数选择要下载的特定 json 文件。 其中包括以下项:

-Options 值 收到的 Json 文件
全部 所有与功能相关的 json 文件、所有特定于项目的 json 文件和所有项目列表文件。
服务 Engagements_page#.json
资源 Resource.json、ReportingResource.json
项目组合管理 BusinessDrivers.json、DriverPrioritizations.json、PortfolioAnalyses.json
项目

DraftProjectList.xml 、PublishedProjectList.xml。 ReportingProjectList

对于用户所属的每个项目,你还会收到以下各项之一:

Project_projName_draft.json、Project_projName_draft.mpp、Project_projName_draft.xml

Project_projName_published.json、Project_projName_ published.mpp、Project_projName_ published.xml

Project_projName_reporting.json、Project_projName_reporting_Tasks、Project_projName_reporting_Assignments、Project_projName_reporting_Resources、Project_projName_reporting_Baselines、Project_projName_reporting_TaskTimephased、Project_projName_reporting_AssignmentTimephased、Project_projName_reporting_TaskBaselineTimephased、Project_projName_reporting_ AssignmentBaselineTimephased

ResourcePlans ResourcePlans_page#.json、ReportingResourcePlans.json
安全性 Security.json
ServerSettings CustomFields.json、LookupTables.json、Calendars.json、Delegations.json、QueueJobs.json、SubscribedReminders.json、UnsubscribedAlerts.json、ReminderEmails.json、AdminAudit.json
时间表

Timesheets_Reporting.json、Timesheets_page#.json

对于Timesheets_page#.json,将按页获取文件。

TaskStatus Rules.json、TaskStatus_AssignmentsHistory_page#.json、TaskStatus_AssignmentsSaved.json、TaskStatus_AssignmentsSubmitted.json
状态报告 StatusReports.json
工作流 Workflow.json
WorkspaceItems WorkspaceItems.json
UserViewSettings UserViewSettings.json

如果要从 PWA 站点导出用户数据以获取特定功能,则使用 -Options 参数会很有帮助。 例如,如果只关注项目组合分析功能中的用户数据,则可以使用值 Portfolio 运行 -Options 参数:

.\ExportProjectUserContent.ps1 -Url https://contoso/sites/pwa1 -ResourceUid cb5c91cf-fd6b-e711-80d0-00155da4a406 -OutputDirectory c:\pwa1siteOutput -Options Portfolio

这样,就可以导出三个 json 文件,其中包含与项目组合分析功能相关的用户数据 (BusinessDrivers.json、DriverPrioritizations.json PortfolioAnalyses.json) 。

步骤 6 - 查看导出的内容

成功运行 ExportProjectUserContent PowerShell 脚本后,在运行 命令时指定的输出目录中将具有以下输出:

  • 项目列表文件 - 将收到三个 .xml 文件,这些文件提供项目草稿和已发布架构中包含的项目列表,其中用户是其中的一部分。 这意味着用户作为以下至少一项参与项目:

    • 是项目所有者。

    • 在项目中将任务分配给他或她。

    • 是项目中任务的分配所有者。

    • 项目中任务的状态管理器。

这三个 .xml 文件是:

名称 说明
DraftProjectList.xml 与上述条件相对应的草稿架构中的项目列表。
PublishedProjectList.xml 已发布架构中与上述条件对应的项目列表。
ReportingProjectList.xml 报告架构中与上述条件相对应的项目列表。

三个 .xml 文件中的每个项目列表可能略有不同。 例如,用户可以保存项目,但不能发布,这意味着它将出现在 DraftProjectList.xml 文件中,但不能显示在 PublishedProjectList.xml 或 ReportingProjectList.xml 文件中。

项目管理员可以使用项目列表 .xml 文件,向他们提供有关他们有兴趣分析哪些特定于项目的导出文件的信息,以决定应与用户共享多少导出的内容。

对于列出的每个项目,这三个 ProjectList.xml 文件都具有以下属性:

属性 说明
SiteId 项目所在的 PWA 网站的唯一标识符。
Proj_UID 项目的唯一标识符。
Proj_Name 项目的名称。
  • 功能相关文件 - 对于用户所属的每个 PWA 网站,以下特定于功能的.json文件将导出到指定的输出目录。 特定于功能的文件将包含用户数据,因为它与整个 PWA 站点的功能使用有关。 例如,Drivers.json文件将包括有关用户创建或拥有的项目组合分析业务驱动因素的数据。 如果用户在特定 PWA 网站上没有与该功能相关的数据,则该文件将不包含任何数据。

特定于功能的.json文件包括:

名称 说明
AdminAudit Project Web App 服务器设置更改数据。
BusinessDrivers 项目组合分析业务驱动因素数据。
日历 企业日历数据。
CustomFields 自定义字段数据。
代表团 委派数据。
DriverPrioritizations 业务驱动因素对数据进行优先级划分。
服务 资源参与数据。
LookupTables 查阅表数据。
PortfolioAnalysis 项目组合分析数据。
QueueJobs 有关用户作业的数据通过队列服务进行处理。
ReminderEmails 提醒电子邮件数据。
ReportingResourcePlans 资源报告数据。
资源 资源数据。
ResourcePlans 资源计划数据。
Rules 规则数据。
安全性 有关安全组、类别和权限的数据。
状态报告 状态报告数据。
SubscribedReminders 订阅的提醒数据。
TaskStatus_AssignmentsHistory 状态分配历史记录数据。
TaskStatus_AssignmentsSaved 状态分配保存数据。
TaskStatus_AssignmentsSubmitted 状态分配提交数据。
时间表 有关时间表的数据。
Timesheets_Reporting 报告有关时间表的数据。
UnsubscribedAlerts 取消订阅的警报数据。
UserViewSettings 用户查看设置数据。
工作流 项目工作流数据。
WorkspaceItems 有关项目网站中的 SharePoint 项的数据。

某些特定于功能的 json 文件可能会很大,因此为了提高性能,以下 json 文件将跨多个文件生成:

  • Engagements.json

  • ResourcePlans.json

  • Timesheets.json

  • TaskStatus_AssignmentHistory.json

注意:若要详细了解每个特定于功能的.json文件中包含的对象,请参阅 Project Online 和 Project Server 导出数据定义的特定于功能的数据部分。

  • 特定于项目的文件 - 如果用户是任何项目的一部分,则对于每个项目,多个单独的文件将导出到输出目录。 如果用户是特定项目的一部分,则会出现以下情况:

    • 项目所有者

    • 在项目中将任务分配给他或她

    • 是项目中任务的分配所有者

    • 项目中任务的状态管理器

特定于项目的数据与功能相关数据的不同之处在于,数据特定于单个项目。 与功能相关的数据可以包括用户曾参与的 PWA 网站中许多项目的用户数据,但与单个功能相关。

注意:对于收到的所有特定于项目的文件,它们将以特定项目的 “项目名称”作为前缀。 例如,如果项目的项目名称为 Project1,则本节中介绍的所有特定于项目的文件都将以 Project1 作为前缀。

对于用户所属的每个项目,你将收到以下三组文件:

  • 草稿和已发布数据库中项目的 .xml 文件:
名称 说明
<projectName>_draft.xml 草稿架构中的项目文件保存为 .xml 格式。
<projectName>_published.xml 已发布架构中的项目文件保存为 .xml 格式。

注意: 请参阅 Project XML 数据交换方案参考 ,了解这些文件中包含的 Project XML 数据。

  • 草稿和已发布数据库中项目的.mpp文件:
名称 说明
<projectName>_draft.mpp 草稿架构中的项目文件保存为 Project .mpp 文件。
<projectName>_published.mpp 已发布架构中保存为 Project .mpp 文件的项目文件。

注意

可以使用 Project Professional 2016、Project Professional 2019 或 Project Online 桌面客户端打开.mpp文件。 不支持将导出.mpp文件保存回 Project Online 或 Project Server。

  • 报告架构中项目的八个.json文件:
名称 说明
<Project_projectName>_reporting_AssignmentBaselineTimephased.json 报告架构中项目的分配基线时间相数据。
<Project_projectName>_reporting_AssignmentTimephased.json 报告架构中项目的分配时间相数据。
<Project_projectName>_reporting_ProjectBaseline.json 报告架构中项目的项目基线数据。
<Project_projectName>_reporting_Tasks.json 报告架构中项目的项目任务数据。
<Project_projectName>_reporting_Assignments.json 报告架构中项目的分配资源数据。
<Project_projectName>_reporting_Resources.json 报告架构中项目的资源数据。
<Project_projectName>_reporting_TaskBaselineTimephased.json 报告架构中项目的任务基线时间分段数据。
<Project_projectName>_reporting_TaskTimephased.json 报告架构中项目的任务时间分段数据。

注意:若要详细了解每个.json文件中包含的对象,请参阅 Project Online 导出 json 对象定义的特定于项目的数据文件部分。

  • 三个.json文件,其中包含来自草稿、已发布和报告架构的项目元数据:
名称 说明
<projectName>_draft.json 草稿架构中的项目元数据文件
<projectName>_published.json 已发布架构中的项目元数据文件
<projectName>_reporting.json 报告架构中的项目元数据文件

注意:若要详细了解每个.json文件中包含的对象,请参阅 Project Online 和 Project Server 导出数据定义的特定于项目的元数据文件部分。

步骤 7 - 已存档项

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

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

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

  1. 存档当前项目

  2. 还原存档的版本

  3. 导出用户相关数据。

  4. 从存档还原项目。

已存档的非项目数据:

  1. 使用 SharePoint 备份和恢复 创建当前场的克隆。

  2. 从管理备份和还原中还原存档的项 (请参阅前面的过程) 。

  3. 导出用户相关数据。

步骤 8 - 查找并保存自定义视图、自定义筛选器、附件和宏

收到导出的用户内容后,可以使用数据查找用户的自定义视图、自定义筛选器、自定义表、附件和宏。 若要查找它们,需要为每个要在其中搜索的项目提供 MPP 和 XML 文件。 有关如何执行此操作的详细信息,请参阅 在 Project Online 中查找自定义用户项和 Project Server 用户导出数据

主控项目和插入项目的注意事项

如前所述,导出脚本将仅导出用户作为所有者的一部分、具有已分配任务、是任务的分配所有者或任务的状态管理员的项目。 如果用户是插入的项目的一部分,但不是主项目的一部分,则只会导出插入的项目。 同样,如果用户只是主项目的一部分,而不是任何插入的项目,则只会导出主项目。

保存用户所属的主项目时,如果出现提示,则无需保存任何关联的插入项目。

步骤 9 - 需要手动导出的数据

项目作者

不会使用上述步骤导出项目的作者。 可以运行ExportProjectAuthor2019.sql来获取其作者与用户显示名称或用户声明匹配的项目列表。

参数 说明
@siteID 要在其中查找用户是否是项目的作者的站点的 PWA 网站 ID。 
@searchName Project Server 用户的显示名称或声明。