從 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 網站上尋找使用者的資源識別碼或宣告帳戶
程式概觀
以下是從Project Web App匯出特定使用者資訊的程式概觀:
下載匯出腳本:下載 .sql 和 Microsoft PowerShell 腳本以匯出使用者資料。
在您的環境中尋找 PWA 網站:尋找 Project Server 伺服器陣列中Project Web App實例的清單。
尋找使用者的資源識別碼:在每個Project Web App實例上,尋找使用者的唯一資源識別碼。 您也可以選擇指定使用者宣告。
執行使用者資料的導出:使用 Scipt 匯出您想要檢閱的資訊。
針對不同版本的 Project Server 使用腳本
本文適用于 Project Server 2016、Project Server 2013 和 Project Server 2010。 雖然一般程式適用于這三個版本,但有些特定專案可能適用于不同的版本,特別是在執行 SQL 腳本時。 下列各節會記下這些資訊。 請確定您已將最新的更新部署到伺服器陣列和Project 專業版用戶端。
注意事項
專案作者不會匯出為本文中程式的一部分。
步驟 1 - 下載匯出腳本檔案
從 Microsoft 下載中心下載匯出腳本。
下載包含一個 ZIP 檔案,其中包含每個 Project Server 版本的個別資料夾。 使用您版本或 Project Server 的腳本,如下列步驟 5 所述。
關於執行匯出腳本的重要注意事項:
腳本資料夾包含數個 .wsdl 檔案。 PowerShell 腳本需要這些專案。 當您執行它們時,請確定它們與 PowerShell 腳本位於相同的目錄中。
SetupReportingProcedures201x.sql 腳本會暫時在 sql 會話內可用的記憶體中建立一些全域預存程式。 下列腳本需要這些預存程式:
ExportReportingProject201x.sql
ExportReportingResource201x.sql
ExportTimesheetReporting201x.sql
注意事項
執行任何腳本之前,請先執行 SetupReportingProcedures201x.sql。
每個腳本都有一或多個必須定義的變數,例如 UserID 或資料庫名稱,才能執行它。 請檢查腳本本身中的描述區段,以取得任何必要的參數。
在資訊所在的資料庫內容中執行每個 .sql 腳本。 您必須擁有資料庫的db_datareader許可權。
您可能需要「解除封鎖」zip 檔案,因為根據預設,不允許執行從網際網路下載的腳本。 請執行下列動作來解除封鎖您的檔案:
在檔案總管中,移至您儲存 zip 檔案的位置。
以滑鼠右鍵按一下 zip 檔案,然後按一下 [ 屬性]。
在 [ 一般] 索引標籤上,選取 [ 解除封鎖]。
按一下 [確定]。
ZIP 檔案中包含的所有檔案現在都應該是 [解除封鎖]。 您可以檢查 [解除 封鎖 ] 核取方塊選項是否不再出現在檔案的 [屬性] 頁面的 [ 一般 ] 索引標籤中,以在個別檔案中確認這一 點 。
注意事項
如果您只能存取解壓縮的檔案,您也可以個別解除封鎖每個檔案。
步驟 2- 在 SharePoint Server 伺服器陣列中尋找Project Web App實例
使用 Get-SPProjectWebInstance Cmdlet 搭配下列篩選準則,取得存在於 SharePoint Server 伺服器陣列中 PWA 網站的 URL、網站識別碼和資料庫名稱:
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 服務應用程式 的服務應用程式識別碼。 使用下列參數執行 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 報表資料庫可以位於與其他三個資料庫不同的SQL Server實例上。
步驟 3 - 匯出使用者的工作區專案
執行 ExportWorkspaceItemsByDisplayName201x.sql 腳本,並使用使用者可能的顯示名稱來搜尋資料, (部分名稱搜尋) 。
針對 Project Server 2010 在報表資料庫上執行腳本,或在適用于更新版本之相關 PWA 月臺的資料庫上執行腳本。 在步驟 1 提供的範例結果中,所有三個Project Web App實例的資料庫都會WSS_Content 。
在腳本中提供下列參數的值:
參數 | 描述 |
---|---|
僅@siteID (Project Server 2016) |
您要在其中尋找使用者資源識別碼之網站的 PWA 網站識別碼。 您在步驟 1 中找到 PWA 網站的 PWA 網站識別碼值。 |
@resDisplayName |
Project Server 使用者的顯示名稱或部分顯示名稱。 |
步驟 4 - 在每個 PWA 網站上尋找使用者的資源識別碼或宣告帳戶
取得 Project Server 伺服器陣列上所有 PWA 網站的資訊之後,接下來您必須找到要刪除其個人資料之使用者的資源識別碼 (ResID) 或宣告帳戶。 在步驟 1 中探索到的每個 PWA 網站上執行此動作 (,因為每個 PWA 實例) 的 ResID 不同。
執行 FindUser201x.sql SQL 腳本來尋找使用者的資源識別碼或宣告帳戶。
注意事項
您必須在 SQL Server Management Studio 中執行 FindUser201x.sql SQL 腳本,而且必須具有伺服器陣列管理員許可權,才能存取適當的資料庫。
在 Project Server 2010 的已發行資料庫上,或在相關 PWA 月臺的資料庫上執行腳本,以供更新版本使用。 在步驟 1 提供的範例結果中,所有三個Project Web App實例的資料庫都會WSS_Content 。
在腳本中提供下列參數的值:
參數 | 描述 |
---|---|
僅@siteID (Project Server 2016) |
您要在其中尋找使用者資源識別碼之網站的 PWA 網站識別碼。 您在步驟 1 中找到 PWA 網站的 PWA 網站識別碼值。 |
@searchName |
Project Server 使用者的顯示名稱。 |
例如,如果您想要在步驟 1 的範例中找到 Contoso PWA1 網站上 Adam Barr 的 userID,您可以編輯腳本中參數的值,如下所示:
DECLARE @siteId uniqueidentifier = '63ed0197-3647-4279-ed5e80855fc7'
DECLARE @searchName nvarchar(255) = 'Adam Barr'
腳本會傳回使用者的 [資源名稱]、[資源識別碼]、[電子郵件地址] 和 [宣告帳戶] 值。
步驟 5 - 尋找包含您要尋找之使用者的專案
您可以使用您在步驟 4 中找到的資源識別碼,找出使用者所涉及的專案。 這是使用 SQL 腳本來查詢針對專案清單儲存的 Project 資料來完成。
Project Server 中的每個資料存放區都有個別的腳本。 腳本的結果可能很類似,但如果您有尚未發佈的草稿專案,可能會看到一些差異。
執行腳本之前,請使用您要尋找的資源識別碼加以更新。
針對 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
如需這些查詢輸出值的相關資訊,請參閱 報表資料中的專案特定使用者資料。
如果您需要其他使用者資訊,請參閱步驟 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 |
StatusReports |
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 |
StatusReports |
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 腳本,如下表所述。 如需輸出中每個欄位的詳細資訊,請參閱 輸出定義 資料行中的連結。
匯出選項 | 執行下列腳本: | 輸出定義 |
---|---|---|
Engagements |
ExportEngagementScripts2016.sql |
投入 |
作品集 |
ExportPortfolioModels2016.sql |
司機 優先順序 分析 |
資源計劃 |
ExportResourcePlans2016.sql |
ResourcePlan |
資源 |
ExportResource2016.sql ExportReportingResource.sql |
資源 ReportingResource |
安全性 |
ExportSecurity2016.sql |
安全性 |
服務設定 |
ExportServerSettings2016.sql |
QueueJobs CustomFields LookupTables 行事曆 UnsubscribedAlerts SubscribedReminders ReminderEmails 代表團 |
狀態報表 |
ExportStatusReports2016.sql |
StatusReports |
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 (封存版本識別碼) ProjectVersionDescription (備份) 的日期和時間 ProjectVersionDate (備份) 的日期 |
封存的專案 - 資源 | 資源 |
封存的專案 - 資源自訂欄位 | 資源 - 自訂欄位 |
封存的專案資料:匯出封存的專案:
封存的非專案資料:
- 使用 SharePoint 備份和複 原 (2010) 來建立目前伺服器陣列的複本。
- 從系統管理備份和還原封存專案 (請參閱先前的程式) 。
- 匯出使用者相關資料。
步驟 8 - 尋找並儲存附件、檢視和 VBA 檔案
若要尋找附件和檢視,建議您將指定的專案匯出至 XML。 若要這樣做,請在 Project 專業版 中開啟它,然後將它儲存為 XML 檔案。 一旦您有想要檢閱之專案的 XML 檔案,請參閱在 Project Online 中尋找自訂的使用者專案和 Project Server 使用者匯出資料。
執行 PowerShell 腳本
下表顯示指定腳本所需的參數。 以伺服器陣列管理員身分在 SharePoint 管理命令介面中執行每個腳本。
指令碼 | 參數 |
---|---|
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 |
渣 油 | 使用者的資源識別碼 |
OutputPath | 儲存匯出檔案的位置。 |
ProjectId | 要同步處理的專案工作區 |
也請在每次執行腳本時包含下列其中一個授權參數:
驗證參數 | 描述 |
---|---|
[沒有傳入任何專案] | 以目前的使用者身分使用 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 中開啟委派
- 針對要匯出的使用者啟用委派許可權
- 自行啟用委派許可權以委派為該使用者。 (身為系統管理員,您可能已經擁有 permissions.)
- 將自己設定為要匯出之使用者的委派
- 登入 Project Web App。
- 按一下齒輪圖示,然後按一下 [做為委派]。
- 啟動委派會話。
- 執行 Export-SavedTaskStatusUpdates201x.ps1 PowerShell 腳本。
- 停止委派會話。