從 Project Server 匯出使用者資料
重要!:本文說明如何從 Project Server 2016、Project Server 2013 或 Project Server 2010 中匯出使用者資料。 從 Project Server 2019 匯出使用者資料的程式與舊版不同,且不包含在本文中。 若要瞭解如何從舊版的 Project Server 2019 公開預覽中匯出使用者資料,請參閱在 Project Server 2019 公開預覽中匯出使用者資料。
您的組織可以從您的 Project 伺服器環境中匯出特定使用者的內容。 若要匯出此內容,Project 伺服器陣列管理員可以遵循下列步驟:
步驟 2-尋找 SharePoint 伺服器陣列中的 Project Web App 實例
步驟 4-在每個 PWA 網站上尋找使用者的資源識別碼或宣告帳戶
處理常式概述
以下概述從 Project Web App 匯出特定使用者資訊的程式:
下載匯出腳本:下載 .Sql 和 Microsoft PowerShell 腳本,以匯出使用者資料。
在您的環境中尋找 PWA 的網站:尋找 Project 伺服器陣列中 Project Web App 實例的清單。
尋找使用者的資源識別碼:在每個 Project Web App 實例上,尋找使用者的唯一資源識別碼。 您也可以選擇指定使用者宣告。
匯出使用者的資料:匯出您要使用 scipts 來審閱的資訊。
針對不同版本的 Project Server 使用腳本
本文適用于 Project Server 2016,Project Server 2013 和 Project server 2010。 雖然一般程式適用于所有三個版本,但有一些細節可能適用于不同的版本,尤其是在執行 SQL 腳本時。 以下各節將說明這些內容。 請確定您已將最新的更新部署至伺服器陣列,並 Project 專業版用戶端。
注意
Project Author 不會匯出為本文中的程式部分。
步驟 1-下載匯出腳本檔案
從 Microsoft 下載中心下載匯出腳本。
下載包含 ZIP 檔案,其中每個 Project Server 版本都有不同的資料夾。 請依照下列步驟5所述,使用您的版本或 Project 伺服器的腳本。
有關執行匯出腳本的重要注意事項:
Script 資料夾包含數個 .wsdl 檔案。 這些是 PowerShell 腳本所要求。 當您執行這些腳本時,請確定這些檔案與 PowerShell 腳本位於相同的目錄中。
SetupReportingProcedures201x 腳本會暫時在可用於 sql 會話的記憶體中建立某些通用的預存程式。 下列腳本是必要的預存程式:
ExportReportingProject201x
ExportReportingResource201x
ExportTimesheetReporting201x
注意
執行這些腳本之前,請先執行 SetupReportingProcedures201x。
每個腳本都有一個或多個必須定義的變數,例如 UserID 或資料庫名稱-在您執行之前。 檢查腳本本身的描述區段中是否有任何必要的參數。
在資訊所在的資料庫內容中執行每個 .sql 腳本。 您必須具有資料庫的 db_datareader 許可權。
您可能需要 "解除封鎖" zip 檔案,因為預設會不允許執行從網際網路下載的腳本。 請執行下列動作以解除封鎖您的檔案:
在檔案瀏覽器中,移至您儲存 zip 檔案的位置。
以滑鼠右鍵按一下 zip 檔案,然後按一下 [ 屬性]。
在 [ 一般 ] 索引標籤上,選取 [ 解除封鎖]。

按一下 [確定]。
必須立即解除封鎖 zip 檔案中所包含的所有檔案。 您可以在檔案的 [內容 ] 頁面的[一般] 索引標籤中,檢查 [解除封鎖 的核取方塊] 選項是否不再出現在個別檔案中驗證。
注意
如果您只能存取解壓縮的檔案,您也可以個別解除封鎖每個檔案。
步驟 2-尋找 SharePoint 伺服器陣列中的 Project Web App 實例
使用包含下列篩選的 Get-SPProjectWebInstance Cmdlet,以取得 SharePoint 伺服器陣列中存在之 PWA 網站的 URL、網站識別碼及資料庫名稱:
Get-SPProjectWebInstance | ft -a Url,SiteId,DatabaseName,DatabaseServer
當您在後續步驟中刪除使用者的個人資料時,將需要每個網站的資訊。
例如,在範例 Contoso Project 伺服器陣列上執行 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 服務應用程式 的服務應用程式識別碼。 使用下列參數執行 ServiceApplication PowerShell Cmdlet,以執行這 項 作業:
Get-SPServiceApplication | ? { $_.TypeName -eq "Project Server PSI Service Application" } | ft -a
這也會傳回 Project Server 服務應用程式的名稱。 然後,您可以使用 Get-SPProjectWebInstance Cmdlet,透過使用-ServiceApplication 參數指定服務應用程式名稱,傳回四個 Project 伺服器資料庫的名稱:
Get-SPProjectWebInstance -ServiceApplication "Project Server" | ft -a Url,PrimaryServer,PublishedDatabase,DraftDatabase,ArchiveDatabase,ReportingServer,ReportingDatabase
您必須能夠參照每個資料庫的資料庫名稱。
注意
Project Server 2010 報表資料庫可以位於其他三個資料庫以外的其他 SQL Server 實例。
步驟 3-匯出使用者的工作區專案
使用使用者的可能顯示名稱來執行 ExportWorkspaceItemsByDisplayName201x 腳本,並搜尋資料 (部分名稱搜尋) 。
在報表資料庫上為 Project Server 2010 執行腳本,或在相關 PWA 網站的資料庫上執行更新版本。 在步驟1中提供的範例結果中,所有三個 Project Web App 實例的資料庫都是 WSS_Content 。
在腳本中提供下列參數的值:
| 參數 | 描述 |
|---|---|
| @siteID (僅 Project Server 2016) |
您要在其中尋找使用者之資源識別碼之網站的 PWA 網站識別碼。 您在步驟1中找到 PWA 網站的 PWA 網站識別碼值。 |
| @resDisplayName |
Project 伺服器使用者的顯示名稱或部分顯示名稱。 |
步驟 4-在每個 PWA 網站上尋找使用者的資源識別碼或宣告帳戶
取得 Project 伺服器陣列上所有 PWA 網站的資訊之後,接下來,您必須尋找您要刪除其個人資料之使用者的資源識別碼 (ResID) 或宣告帳戶。 請在步驟 1 (所探索的每個 PWA 網站上執行這項動作,因為每個 PWA 實例) 中的 ResIDs 有所不同。
執行 FindUser201x SQL 腳本,以尋找使用者的資源識別碼或宣告帳戶。
注意
您需要在 SQL Server Management Studio 中執行 FindUser201x SQL 腳本,而且必須具有伺服器陣列管理員許可權,才能存取適當的資料庫。
在發佈的資料庫上執行 Project Server 2010 的腳本,或在相關 PWA 網站的資料庫上執行該腳本,以供更新的版本。 在步驟1中提供的範例結果中,所有三個 Project Web App 實例的資料庫都是 WSS_Content 。
在腳本中提供下列參數的值:
| 參數 | 描述 |
|---|---|
| @siteID (僅 Project Server 2016) |
您要在其中尋找使用者之資源識別碼之網站的 PWA 網站識別碼。 您在步驟1中找到 PWA 網站的 PWA 網站識別碼值。 |
| @searchName |
Project 伺服器使用者的顯示名稱。 |
例如,如果您想要在步驟1的範例所找到的 Contoso PWA1 網站上尋找 Adam Barr 的使用者識別碼,您可以在腳本中編輯參數的值,如下所示:
DECLARE @siteId uniqueidentifier = '63ed0197-3647-4279-ed5e80855fc7'
DECLARE @searchName nvarchar(255) = 'Adam Barr'
腳本會傳回使用者的資源名稱、資源識別碼、電子郵件地址和宣告帳戶值。
步驟 5-尋找包含您要尋找之使用者的專案
您可以使用您在步驟4中找到的資源識別碼來尋找使用者所參與的專案。 若要執行此操作,請使用 SQL 腳本來查詢為專案清單所儲存的 Project 資料。
Project Server 中的每個資料儲存區都有個別的腳本。 腳本的結果可能會類似,但如果您具有尚未發佈的草稿專案,您可能會看到一些差異。
在執行腳本之前,請使用您要尋找的資源識別碼加以更新。
針對 Project Server 2010,請執行下列腳本:
(請務必閱讀每個腳本頂端的描述。 有些腳本需要您新增資料庫名稱或更新其他參數。 )
ExportDraftProjectList2010
ExportPublishedProjectList2010
ExportReportingProjectList2010
針對 Project Server 2013,請執行下列腳本:
ExportDraftProjectList2013
ExportPublishedProjectList2013
ExportReportingProjectList2013
如 Project Server 2016,請執行下列腳本:
ExportDraftProjectList2016
ExportPublishedProjectList2016
ExportReportingProjectList2016
檢查查詢的輸出,並決定要尋找特定使用者資料的專案。 您可能想要將清單從 SQL Server 匯出至 CSV 檔案,以方便使用。
當您決定要搜尋使用者資訊的專案時,請使用上述腳本所傳回的 ProjectUID,針對每個專案執行下列腳本:
針對 Project Server 2010,請執行下列腳本:
(請務必閱讀每個腳本頂端的描述。 有些腳本需要您新增資料庫名稱或更新其他參數。 )
ExportDraftProject2010
ExportPublishedProject2010
ExportReportingProjects2010
ExportReportingProjectTimephasedData2010
針對 Project Server 2013,請執行下列腳本:
ExportDraftProject2013
ExportPublishedProject2013
ExportReportingProjects2013
ExportReportingProjectTimephasedData2013
如 Project Server 2016,請執行下列腳本:
ExportDraftProject2016
ExportPublishedProject2016
ExportReportingProjects2016
ExportReportingProjectsTimephased2016
如需這些查詢的輸出值的詳細資訊,請參閱報表資料中 Project 特有的使用者資料。
如果您需要其他使用者資訊,請參閱腳本的步驟6以取得資源、時程表、狀態等的相關資訊。
步驟 6-其他查詢匯出資料
執行這些額外的查詢以尋找資源、時程表、狀態等的其他資訊。
如需如何執行 PowerShell 腳本的相關資訊,請參閱執行下列 PowerShell 腳本 。
從 Project Server 2010 匯出資料
若要從 Project Server 2010 匯出資料,請使用 .sql 腳本和 Microsoft PowerShell 腳本,如下表所述。 如需輸出中每個欄位的詳細資訊,請參閱 輸出定義 欄中的連結。
(請務必閱讀每個腳本頂端的描述。 有些腳本需要您新增資料庫名稱或更新其他參數。 )
| 匯出選項 | 執行下列腳本: | 輸出定義 |
|---|---|---|
| 投資 組合 |
ExportPortfolioModels2010 |
司機 優先 分析 |
| 資源計劃 |
Export-ResourcePlanTimephasedData2010.ps1 ExportResourcePlans2010 ExportReportingResourcePlans2010 |
ResourcePlan |
| 資源 |
ExportResource2010 ExportReportingResource2010 |
資源 ReportingResource |
| 安全性 |
ExportSecurity2010 |
安全性 |
| 服務設定 |
ExportServerSettings2010 |
QueueJobs CustomFields LookupTables 行事曆 UnsubscribedAlerts SubscribedReminders ReminderEmails 代表團 |
| 狀態報表 |
ExportStatusReports2010 |
StatusReports |
| TaskStatus |
ExportAssignmentsSavedData2010 ExportSubmittedTaskStatusUpdates2010 ExportAssignmentTransactionHistory2010 ExportAssignmentHistoryData2010.ps1 ExportSavedTaskStatusUpdates2010 Export-SavedTaskStatusUpdates2010.ps1 (記事) |
StatusAssignSaved StatusAssignHistory |
| 時程表 |
ExportTimesheets2010 ExportReportingTimesheets2010 |
時程表 Timesheets_Reporting |
| 使用者 view 設定 |
Export-UserViewSettings2010.ps1 |
UserViewSettings |
| 工作流程 |
ExportWorkflow2010 |
工作流程 |
| 工作區專案 |
ExportWorkspaceItemsByDisplayName2010 |
WorkspaceItems |
從 Project Server 2013 匯出資料
若要從 Project Server 2013 匯出資料,請使用 .sql 腳本和 Microsoft PowerShell 腳本,如下表所述。 如需輸出中每個欄位的詳細資訊,請參閱 輸出定義 欄中的連結。
| 匯出選項 | 執行下列腳本: | 輸出定義 |
|---|---|---|
| 投資 組合 |
ExportPortfolioModels2013 |
司機 優先 分析 |
| 資源計劃 |
ExportResourcePlanTimephasedData2013.ps1 ExportResourcePlans2013 |
ResourcePlan |
| 資源 |
ExportResource2013 ExportReportingResource2013 |
資源 ReportingResource |
| 安全性 |
ExportSecurity2013 |
安全性 |
| 服務設定 |
ExportServerSettings2013 |
QueueJobs CustomFields LookupTables 行事曆 UnsubscribedAlerts SubscribedReminders ReminderEmails 代表團 |
| 狀態報表 |
ExportStatusReports2013 |
StatusReports |
| TaskStatus |
ExportAssignmentsSavedData2013 ExportSubmittedTaskStatusUpdates2013 ExportAssignmentTransactionHistory2013 ExportAssignmentHistoryData2013.ps1 ExportSavedTaskStatusUpdates2013 Export-SavedTaskStatusUpdates2013.ps1 (記事) |
StatusAssignSaved StatusAssignHistory |
| 時程表 |
ExportTimesheets2013 ExportReportingTimesheets2013 |
時程表 Timesheets_Reporting |
| 使用者 view 設定 |
Export-UserViewSettings2013.ps1 |
UserViewSettings |
| 工作流程 |
ExportWorkflow2013 |
工作流程 |
| 工作區專案 |
ExportWorkspaceItemsByDisplayName2013 |
WorkspaceItems |
從 Project Server 2016 匯出資料
若要從 Project Server 2016 匯出資料,請依照下表所述,使用 .sql 腳本和 Microsoft PowerShell 腳本。 如需輸出中每個欄位的詳細資訊,請參閱 輸出定義 欄中的連結。
| 匯出選項 | 執行下列腳本: | 輸出定義 |
|---|---|---|
| Engagements |
ExportEngagementScripts2016 |
投入 |
| 投資 組合 |
ExportPortfolioModels2016 |
司機 優先 分析 |
| 資源計劃 |
ExportResourcePlans2016 |
ResourcePlan |
| 資源 |
ExportResource2016 ExportReportingResource |
資源 ReportingResource |
| 安全性 |
ExportSecurity2016 |
安全性 |
| 服務設定 |
ExportServerSettings2016 |
QueueJobs CustomFields LookupTables 行事曆 UnsubscribedAlerts SubscribedReminders ReminderEmails 代表團 |
| 狀態報表 |
ExportStatusReports2016 |
StatusReports |
| TaskStatus |
ExportAssignmentsSavedData2016 ExportSubmittedTaskStatusUpdates2016 ExportAssignmentTransactionHistory2016 ExportAssignmentHistoryData.ps1 ExportSavedTaskStatusUpdates2016 Export-SavedTaskStatusUpdates2016.ps1 |
StatusAssignSaved StatusAssignHistory |
| 時程表 |
ExportTimesheets2016 ExportReportingTimesheets2016 |
時程表 Timesheets_Reporting |
| 使用者 view 設定 |
Export-UserViewSettings2016.ps1 |
UserViewSettings |
| 工作流程 |
ExportWorkflow2016 |
工作流程 |
| 工作區專案 |
ExportWorkspaceItemsByDisplayName2016 |
WorkspaceItems |
步驟 7-封存的專案
ExportArchievdData201x 會傳回儲存在與資源相關之封存資料庫中的下列資料。
| 匯出選項 | 輸出定義 |
|---|---|
| 封存的專案-行事曆 | 行事曆 |
| 封存的專案-自訂欄位 | CustomFields |
| 封存的專案-查閱表格 | 查閱表格 |
| 封存的專案-專案 | Project 清單 ProjectVersionId (封存版本識別碼) ProjectVersionDescription (日期和時間的備份) ProjectVersionDate (備份日期) |
| 封存的專案-資源 | 資源 |
| 封存的專案-資源自訂欄位 | 資源自訂欄位 |
封存的 Project 資料:匯出封存的專案:
封存的非 Project 資料:
- 使用SharePoint 備份和復原 (2010) 建立目前的伺服器陣列複本。
- 從系統管理備份及還原還原封存的專案 (請參閱先前的程式) 。
- 匯出使用者相關資料。
步驟 8-尋找並儲存附件、視圖和 VBA 檔案
若要尋找附件和視圖,建議您將指定的專案匯出為 XML。 若要這麼做,請在 Project 專業版中開啟它,然後將它儲存成 XML 檔案。 當您有想要複查之專案的 XML 檔案之後,請參閱在 Project Online 和 Project 伺服器使用者匯出資料中尋找自訂使用者專案。
執行 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 | 要同步處理的 Project 工作區 |
每次執行腳本時,也包含下列其中一種授權參數:
| Auth 參數 | 描述 |
|---|---|
| [未傳遞任何] | 使用 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 中開啟委派
- 在要匯出的使用者上啟用委派許可權
- 自行啟用委派許可權,以委派此使用者。 以系統管理員身分 (您可能已經具備許可權。 )
- 將自己設定為要匯出之使用者的代理人
- 登入 Project Web App。
- 按一下齒輪圖示,然後按一下 [ 成為代理人]。
- 啟動委派會話。
- 執行 Export-SavedTaskStatusUpdates201x.ps1 PowerShell script。
- 停止代理人會話。