从 Project Server 2019 公共预览版中删除用户数据

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

了解场管理员如何从 Project Server 环境中删除特定用户的数据。 

本文内容:

  • 删除哪些用户信息?

  • 删除方案

  • 进程概述

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

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

  • 步骤 3 - 关闭所有用户的项目

  • 步骤 4 - 将工作区项同步到 Project Server

  • 步骤 5 - 导出用户数据

  • 步骤 6 - 删除问题和风险的用户个人数据

  • 步骤 7 - 打开资源日历并清除用户的异常原因

  • 步骤 8 - 从资源和项目资源表中删除用户的个人信息

  • 步骤 9 - 清除连接到 Project Server 实例Project Professional用户的缓存。

删除哪些用户信息?

在 Project Server 中,管理员可以使用本文中详述的步骤删除用户的个人数据和个人标识数据, (可用于标识用户) 的数据,例如:

  • 显示名称、拼音名称、GUID - 可以选择删除或重命名用户“显示名称”, (如何运行脚本) 的详细信息。

  • 用户特定的视图设置 - 例如,如果用户在其视图设置 (视图、筛选器、组、表、地图、绘图、报表) 具有视图 ((例如资源汇、项目中心、计划 Web 部件等)) 等视图设置的自定义项,则会删除这些设置。

  • 日历例外详细信息 - 例如,如果用户在 1 月份因生病或休假而外出一周,则需要手动删除例外的名称。 日期将保持不变。

  • 用户权限 - 例如,如果用户与项目服务器类别相关联,组/ 已被授予单个全局权限,我们将继续删除所有关联。 用户也将设置为非活动状态。

Project 网站、问题和风险中包含的用户个人信息存储在 SharePoint 中,不会通过此过程删除。 需要直接从 SharePoint Server 中删除此数据。

重要: 建议先运行 SharePoint Server 用户信息删除过程,然后再从 Project Server 中删除同一用户的信息。 这将防止 Project Server 中的用户个人信息问题和风险被相应的 SharePoint Server 数据更新(如果它们仍然存在)。

删除方案

根据你的需求,此过程允许你删除上面列出的用户的个人信息,但也允许对删除共享项(如时间表、项目和分配)中的用户显示名称进行一些控制。 有三种删除方案可以执行:

方案 1:从Project Web App实例中删除用户信息,显示名称除外

在这种情况下,将删除用户的所有个人信息,但用户的显示名称将保持不变。

如果需要进一步查看共享项 (,例如时间表和用户处于活动状态) 项目,则可以选择此方案。

方案 2:从Project Web App实例中删除用户的信息,但更新所有位置的显示名称

在这种情况下,将删除用户的所有个人信息。 在显示用户显示名称的所有位置中,都会将其替换为你选择的字符串,例如“已删除的用户”。用户的资源 ID 将保留。

如果没有业务需要保留用户显示名称,则可以选择此方案,即使在共享记录(如时间表和项目)中也是如此。

方案 3:从Project Web App实例中删除用户信息,但更改时间表记录以外的所有位置的显示名称

在此方案中,除时间表记录外,将删除所有用户的个人信息。 可以选择将用户的显示名称替换为另一个字符串,例如“已删除的用户”。但是,这不会影响时间表记录,其中用户名仍保留。 更新后的显示名称与其时间表记录取消链接,并生成新的资源 ID,以便无法通过时间表记录中的数据来识别更新的用户名。

如果需要进一步查看用户显示为提交者或审批者的时间表记录,则可以选择此方案。

进程概述

下面概述了在 Project Web App 中删除特定用户信息的过程:

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

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

  3. 查找用户的资源 ID:在每个 Project Web App 实例上,通过指定用户声明帐户查找用户的唯一资源 ID。

  4. 关闭所有用户的项目:这可确保对用户具有信息的所有项目进行更改。

  5. 将工作区项同步到 Project Server:

  6. 执行用户数据的导出:在 Project Server 2019 公共预览版中导出用户数据中介绍了此过程。

  7. 从问题和风险中删除用户个人数据

  8. 从 PWA 站点中删除用户的数据: 运行脚本以从每个 PWA 站点中删除用户的信息。

  9. 修订存档对象中的资源信息:

  10. 清除连接到 PWA 站点的 Project 客户端用户的缓存

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

单击此处下载导出脚本。

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

  • 在信息所在的数据库的上下文中运行 .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 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 - 在每个 PWA 站点上查找用户的资源 ID 或声明帐户

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

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

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

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

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

参数 说明
@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”、“电子邮件地址”和“声明帐户”值。

步骤 4 - 关闭所有用户的项目

你需要确保在 Project Server 环境中关闭用户的所有用户项目。 这将确保不会覆盖删除脚本所做的更改。

如果需要,PWA 管理员可以通过 PWA 服务器设置强制检查项目。

  1. “服务器设置” 页上的“ 队列和数据库管理 ”部分中,单击“ 强制签入企业对象”。

  2. 在“ 强制签入企业对象” 页上,从项目列表中,选中需要检查的项目旁边的复选框,然后单击“ 签入”。

  3. 将显示一条消息,询问是否确定要强制签到。 单击“确定”

步骤 5 - 将工作区项同步到 Project Server

Sync-ProjectWorkspace2019.ps1脚本在 Project Server 中创建队列作业以执行项目工作区完全同步。为包含要查找的用户的每个项目运行此脚本。 (需要每个项目的项目 ID。 可以通过导出 WorkspaceItems [从 Project Server 2019 公共预览版导出用户数据] (export-user-data-from-project-server-2019 公共 Preview.md) 来查找与用户相关的项目。 在继续执行其他步骤之前,请确认队列作业已完成

步骤 6 - 导出用户数据

删除用户的个人数据之前,应知道该用户所属的所有项目。 这将允许你稍后验证是否删除了用户的数据,以及你是否拥有要删除的正确用户。 从 Project Server 2019 公共预览版导出用户数据中详细介绍了导出用户数据。

步骤 7 - 删除问题和风险的用户个人数据

问题和风险存储在项目网站中,这些项目网站是 SharePoint Server 的一部分。 建议先删除用户的 SharePoint Server 信息,然后再删除其 Project Server 信息。 这将防止 Project Server 中的用户个人信息问题和风险被相应的 SharePoint Server 数据更新(如果它们仍然存在)。

如果在已从 Project Server (中删除用户信息后从项目网站中删除用户信息,或者对于从未) Project Server 帐户的用户,则必须使用其声明帐户,因为从 Project Server 中删除资源 ID 后不可用。

可以使用 FindUserClaims2019.sql 脚本查找报告数据库中所有问题风险的声明帐户。

步骤 8 - 从 PWA 站点中删除用户数据

在 Project Server 上,作为 SharePoint 场管理员,执行 Invoke-SPProjectRedactUser cmdlet 以从 PWA 网站中删除用户数据,并选择性地更新用户的显示名称。

Invoke cmdlet 使用以下参数:

参数 说明 注意
-Url Project Online 实例的 URL。 必需
-ClaimsAccount 用户的 ClaimsAccount。 需要声明帐户或 ResourceID。
-ResourceId 用户的资源 GUID。 需要声明帐户或 ResourceID。
-UpdateDisplayName 用户的新显示名称 如果使用,还需要 RedactTimesheet。
-RedactTimesheet 将更改应用到时间表? ($true$false)

可以通过以下方式使用 Invoke cmdlet 和参数:

方案 1:从Project Online实例中删除用户信息,显示名称除外

使用此命令将从 PWA 站点中删除用户的数据,但显示名称除外。 如果你的组织位于共享项(例如项目中的任务所有者或时间表中的条目),则组织可能需要保留用户的显示名称以供以后审阅。

请注意,可以通过声明帐户或资源 ID 指定用户。

使用声明帐户

如果要通过声明帐户指定用户,则按以下方式使用 cmdlet

Invoke-SPProjectRedactUser -Url <PWASiteURL> -ClaimsAccount <ClaimsAccount>

例如,以下代码删除声明为 :0#.w 的用户的所有数据|整个站点的 https://contoso.sharepoint.com/sites/pwacontoso/bob,用户显示名称除外。

*Invoke-SPProjectRedactUser -Url https://contoso.sharepoint.com/sites/pwa -ClaimsAccount “i:0#.w|contoso\evac”
*

运行此命令时,将显示一条消息,要求你确认是否要继续。

确认并成功完成脚本后,将显示一条消息,指出已删除资源 <用户的显示名称> 的所有数据,但资源名称除外。

使用资源 ID

如果要通过资源 ID 指定用户,则按以下方式使用 cmdlet:

Invoke-SPProjectRedactUser -Url <PWASiteURL> -ResourceID <ResourceID>

例如,以下内容将删除资源 ID 为 0c7cd3fb-a0be-e111-9fte-00155d022d022681https://contoso.sharepoint.com/sites/pwa 所有用户数据,但用户的显示名称除外

Invoke-SPProjectRedactUser -Url https://contoso.sharepoint.com/sites/pwa -ResourceId 0c7cd3fb-a0be-e111-9fte-00155d022d022681

运行此命令时,将显示一条消息,要求你确认是否要继续。

确认并成功完成脚本后,将显示一条消息,指出:已删除资源 <用户资源 ID> 的所有数据,但资源名称除外。

方案 2:从 Project Server 实例中删除用户的信息,但更新所有位置的显示名称

使用此命令将从 Project Online 实例中删除用户的用户数据,并将用户的显示名称更改为他们选择的内容,这也会在时间表记录中发生。 你的组织可能希望将用户的显示名称更改为使用户标识匿名的内容,例如“已删除的用户”。

请注意,可以通过声明帐户或资源 ID 指定用户。

使用声明帐户

如果要通过登录名指定用户,则按以下方式使用 cmdlet:

Invoke-SPProjectRedactUser -Url <PWASiteURL> -ClaimsAccount <ClaimsAccount> -UpdateDisplayName “<newDisplayName>” -RedactTimesheet $true

例如,以下内容将删除 的 evac@contoso.onmicrosoft.com 所有用户数据,并将他的显示名称更改为“已删除的用户”在整个 *https://contoso.sharepoint.com/sites/pwa* 网站

Invoke-SPProjectRedactUser -Url https://contoso.sharepoint.com/sites/pwa -ClaimsAccount “i:0#.w|contoso\evac” -UpdateDisplayName “Deleted User” -RedactTimesheet $true

运行此命令时,将显示一条消息,要求你确认是否要继续。

确认并成功完成脚本后,将显示一条消息,指出:资源用户的登录名的所有数据<已删除,资源名称已更改为<更新的显示名称>,包括时间表>记录。

使用资源 ID

如果要通过资源 ID 指定用户,则按以下方式使用 cmdlet:

Invoke-SPProjectRedactUser -Url <PWASiteURL> -ResourceID ResourceID <> -UpdateDisplayName “<newDisplayName>” -RedactTimesheet $true

例如,以下内容将删除资源 ID 为 0c7cd3fb-a0be-e111-9fte-00155d022d022681 的用户的所有用户数据,并将整个 *https://contoso.sharepoint.com/sites/pwa* 站点的显示名称更改为“已删除的用户”。

Invoke-SPProjectRedactUser -Url https://contoso.sharepoint.com/sites/pwa -ResourceId 0c7cd3fb-a0be-e111-9fte-00155d022d022681 -UpdateDisplayName “Deleted User” -RedactTimesheet $true

运行此命令时,将显示一条消息,要求你确认是否要继续。

确认并成功完成脚本后,将显示一条消息,指出:资源用户的资源 ID 的所有数据<已删除,资源名称已更改为<更新的显示名称>,包括时间表>记录。

方案 3:从Project Web App网站中删除用户信息,但更改时间表记录以外的所有位置的显示名称

使用此命令将从Project Web App网站中删除用户的数据,并将用户的显示名称更改为指定的内容,但这不会在时间表记录中发生。 你的组织可能希望稍后分析他们是否有业务理由将用户显示名称保留在其时间表记录中。

请注意,可以通过声明帐户或资源 ID 指定用户。

使用声明帐户

如果要通过 Claims Account 指定用户,则按以下方式使用 cmdlet:

Invoke-SPProjectRedactUser -Url <PWASiteURL> -ClaimsAccount <ClaimsAccount> -UpdateDisplayName “<newDisplayName>” -RedactTimesheet $false

例如,以下内容将删除 的 evac@contoso.onmicrosoft.com 所有数据,并将他的显示名称更改为“已删除的用户”在整个 *https://contoso.sharepoint.com/sites/pwa* 网站,时间表记录除外。

Invoke-SPProjectRedactUser -Url https://contoso.sharepoint.com/sites/pwa -ClaimsAccount “i:0#.w|contoso\evac” -UpdateDisplayName “Deleted User” -RedactTimesheet $false

运行此命令时,将显示一条消息,要求你确认是否要继续。

确认并成功完成脚本后,将显示一条消息,指出:确认并成功完成脚本后,将显示一条消息,指出:资源 <用户的登录名> 的所有数据已删除,资源名称已更改为 <更新的显示名称> ,时间表记录除外。

使用资源 ID

如果要通过资源 ID 指定用户,则按以下方式使用 cmdlet:

Invoke-SPProjectRedactUser -Url <PWASiteURL> -ResourceID <ResourceID> -UpdateDisplayName “<newDisplayName>” -RedactTimesheet $false

例如,以下内容将删除资源 ID 为 0c7cd3fb-a0be-e111-9fte-00155d022d022681 的用户的所有个人数据,并将整个 https://contoso.sharepoint.com/sites/pwa 网站的显示名称更改为“已删除的用户”,时间表记录中除外。

Invoke-SPProjectRedactUser -Url https://contoso.sharepoint.com/sites/pwa -ResourceId 0c7cd3fb-a0be-e111-9fte-00155d022d022681 -UpdateDisplayName “Deleted User” -RedactTimesheet $false

运行此命令时,将显示一条消息,要求你确认是否要继续。

确认并成功完成脚本后,将显示一条消息,指出:资源用户的登录名的所有数据<已删除,资源名称已更改为<除时间表记录以外的所有位置更新的显示名称>。>

步骤 9 - 修订存档对象中的资源信息

已存档的项目数据

对于已编辑资源的项目:

  1. 在Project Web App设置中,选择“删除企业对象”。

  2. 选择 “删除已存档的项目”。

  3. 删除所需的存档项目。

已存档的非项目数据

Project Server 仅保留以下存档项的单个版本:

  • 企业资源库和日历

  • 企业自定义域

  • 企业全局设置

执行新的 管理备份。 这将使用资源个人数据已修订的版本覆盖以前的版本。

步骤 10 - 清除连接到 PWA 站点的 Project 客户端用户的缓存

在连接到 Project Online 实例Project Professional或Project Online桌面客户端的所有设备上,IT 管理员需要清除缓存。 清除缓存将阻止删除用户信息的项目从系统上保留的缓存数据进行更新。 在清除缓存之前,还需要确保在客户端上未打开任何用户项目。

若要清除 Project Professional 2016 和Project Online桌面客户端中的缓存,请执行以下操作:

  1. 选择“ 文件 ”菜单,然后单击“ 选项”。

  2. 在“ 项目选项” 页上,选择“ 保存”。

  3. “缓存 ”部分中,选择“ 清理缓存”。