重要
从 Project Server 订阅版 中删除用户数据的过程与以前的 Project Server 版本不同。 若要了解如何从以前的版本中删除用户数据,请参阅:
1. 从 Project Server 2019 中删除用户数据
2. 从 Project Server 2016/2013/2010 中删除用户数据。
了解场管理员如何从 Project Server 环境中删除特定用户的数据。
本文内容:
删除哪些用户信息?
在 Project Server 中,管理员可以使用本文中详述的步骤删除用户的个人数据和个人标识数据, (可用于标识用户) 的数据,例如:
显示名称、拼音名称、GUID - 可以选择删除或重命名用户“显示名称”, (如何运行脚本) 的详细信息。
特定于用户的视图设置 - 例如,自定义视图设置 (视图、筛选器、组、表、地图、绘图、报表) 在网格页的顶部 (视图资源汇、项目中心、计划 Web 部件等) 删除。
日历异常详细信息 - 例如,如果用户在一月份因生病或休假而外出一周,则需要手动删除例外的名称。 日期将保持不变。
用户权限 - 例如,如果用户与项目服务器类别、组或已被授予单个全局权限,则删除所有关联,并将该用户设置为“非活动”。
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 中删除特定用户信息的过程:
从 Microsoft 下载中心下载导出脚本。
查找环境中的 PWA 站点:查找 Project Server 场中Project Web App实例的列表。
查找用户的资源 ID:在每个 Project Web App 实例上,通过指定用户声明帐户查找用户的唯一资源 ID。
关闭所有用户的项目:这可确保对用户具有信息的所有项目进行更改。
将工作区项同步到 Project Server。
执行用户数据的导出:从Project Server 订阅版导出用户数据中介绍了此过程。
从问题和风险中删除用户个人数据。
从 PWA 站点中删除用户的数据: 运行脚本以从每个 PWA 站点中删除用户的信息。
从存档对象中修订资源信息。
清除连接到 PWA 站点的 Project 客户端用户的缓存。
步骤 1 - 下载导出脚本文件
单击此处下载导出脚本。
有关运行导出脚本的重要说明:
在
.sql信息所在的数据库的上下文中运行脚本。 您必须对数据库具有db_datareader权限。需要“取消阻止”zip 文件,因为默认情况下,不允许执行从 Internet 下载的脚本。 执行以下操作以取消阻止文件:
在 文件资源管理器中,转到保存 zip 文件的位置。
右键单击 zip 文件,然后单击“ 属性”。
在“ 常规 ”选项卡上,选择“ 取消阻止”。
单击“确定”。
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 - 在每个 PWA 站点上查找用户的资源 ID 或声明帐户
获取 Project Server 场上所有 PWA 站点的信息后,接下来需要查找要删除其个人数据的用户的资源 ID (ResID) 或 Claims 帐户。 在步骤 1 (中发现的每个 PWA 站点上执行此操作,因为每个 PWA 实例) 的 ResID 不同。
FindUser.sql运行 SQL 脚本以查找用户的资源 ID 或声明帐户。
注意
需要在 SQL Server Management Studio 中运行 FindUser.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 服务器设置强制检查项目。
在 “服务器设置” 页上的“ 队列和数据库管理 ”部分中,单击“ 强制签入企业对象”。
在“ 强制签入企业对象” 页上,从项目列表中,选中需要检查的项目旁边的复选框,然后单击“ 签入”。
将显示一条消息,询问是否确定要强制签到。 单击“确定”。
步骤 5 - 将工作区项同步到 Project Server
该 Sync-ProjectWorkspace.ps1 脚本在 Project Server 中创建队列作业以执行项目工作区完全同步。为包含要查找的用户的每个项目运行此脚本。 (需要每个项目的项目 ID。 可以通过执行 WorkspaceItems 从 Project Server 订阅版导出用户数据来查找与用户相关的项目。 在继续执行其他步骤之前,请确认队列作业已完成Project Web App“设置”页中的“管理队列作业”。
步骤 6 - 导出用户的数据
删除用户的个人数据之前,应知道该用户所属的所有项目。 这允许你稍后验证用户的数据是否已删除,以及是否有要删除的正确用户。 从Project Server 订阅版导出用户数据中详细介绍了导出用户数据。
步骤 7 - 删除用户个人数据,了解问题和风险
问题和风险存储在 SharePoint Server 的一部分的项目网站中。 建议先删除用户的 SharePoint Server 信息,然后再删除其 Project Server 信息。 这可以防止 Project Server 中的用户个人信息问题和风险被相应的 SharePoint Server 数据更新(如果存在)。
如果在已从 Project Server (中删除用户信息后从项目网站中删除用户信息,或者对于从未) Project Server 帐户的用户,则必须使用其声明帐户,因为从 Project Server 中删除资源 ID 后不可用。
可以使用脚本 FindUserClaims.sql 查找报告数据库中所有问题风险的声明帐户。
步骤 8 - 从 PWA 站点中删除用户数据
在 Project Server 上,作为 SharePoint 场管理员,运行 Invoke-SPProjectRedactUser cmdlet 以从 PWA 网站中删除用户数据,并选择性地更新用户的显示名称。
cmdlet Invoke 使用以下参数:
| 参数 | 说明 | 注意 |
|---|---|---|
-URL |
Project Web App 实例的 URL。 | 必需 |
-ClaimsAccount |
用户的 ClaimsAccount。 | 需要声明帐户或 ResourceID。 |
-ResourceId |
用户的资源 GUID。 | 需要声明帐户或 ResourceID。 |
-UpdateDisplayName |
用户的新显示名称 | 如果使用,还需要 RedactTimesheet。 |
-RedactTimesheet |
将更改应用到时间表? ($true或$false) |
可以通过以下方式使用 Invoke cmdlet 和参数:
方案 1:从Project Web App网站中删除用户信息(显示名称除外)
使用此命令从 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-00155d022d022681 的 https://contoso.sharepoint.com/sites/pwa 所有用户数据,但用户的显示名称除外
Invoke-SPProjectRedactUser -Url https://contoso.sharepoint.com/sites/pwa -ResourceId 0c7cd3fb-a0be-e111-9fte-00155d022d022681
运行此命令时,将显示一条消息,要求确认是否要继续。
确认并成功完成脚本后,将显示一条消息,指出:已删除资源 <用户资源 ID> 的所有数据,但资源名称除外。
方案 2:从Project Web App网站中删除用户信息,但更新所有位置的显示名称
使用此命令可从Project Web App网站中删除用户的用户数据,并将用户的显示名称更改为所选内容,这在时间表记录中发生。 你的组织可能希望将用户的显示名称更改为确保用户标识为匿名的内容,例如“已删除的用户”。
注意
可以通过声明帐户或资源 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 - 修订存档对象中的资源信息
已存档的项目数据
对于已编辑资源的项目:
在Project Web App设置中,选择“删除企业对象”。
选择 “删除已存档的项目”。
删除所需的存档项目。
已存档的非项目数据
Project Server 仅保留以下存档项的单个版本:
企业资源库和日历
企业自定义域
企业全局设置
执行新的 管理备份。 这会用已编辑资源的个人数据的版本覆盖以前的版本。
步骤 10 - 清除连接到 PWA 站点的 Project 客户端用户的缓存
在Project Professional或Project Online桌面客户端连接到Project Web App站点的所有设备上,IT 管理员需要清除缓存。 清除缓存可防止从系统上保留的缓存数据中更新删除用户信息的项目。 在清除缓存之前,还需要确保在客户端上未打开任何用户项目。
若要在 2019/2021 Project Professional和Project Online桌面客户端中清除缓存,请执行以下操作:
选择“ 文件 ”菜单,然后单击“ 选项”。
在“ 项目选项” 页上,选择“ 保存”。
在 “缓存 ”部分中,选择“ 清理缓存”。