本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

使用 Windows PowerShell 的系統管理員核准資料存取

SharePoint 2013
 

適用版本:SharePoint Server 2013

上次修改主題的時間:2016-12-16

摘要:使用 Windows PowerShell、SharePoint 清單、工作流程和工作排程器,授與使用者對資料庫的存取權。

此案例說明如何使用工作流程和以排定的工作形式執行的 Windows PowerShell 指令碼,處理使用者想要存取資料來源的要求。

重要事項 重要事項:
此案例僅適用於 SharePoint Server 2013。

本文內容:

本文使用 AdventureWorks 範例資料集,示範使用工作流程和 Windows PowerShell 來自動處理資料庫存取權要求。您可以利用工作流程和 PowerShell,將商務流程封裝在預先定義的事件序列中,以確保套用時的一致性。Windows PowerShell 也可節省系統管理時間,不需要網域管理員直接介入,就能執行特定的 Active Directory 功能。

本文提供一個範例,說明如何利用工作流程和 Windows PowerShell 來自動控管組織中的程序。您可以修改這些工作流程和 Windows PowerShell 指令碼,以符合自己的特殊需求。

您可以安裝 AdventureWorks 並遵循本文中的步驟來建立可行的原型,也可以使用您自己的資料來源而非 AdventureWorks。

本文說明如何:

  1. 建立可讓使用者要求存取資料來源的 SharePoint 清單。

  2. 建立可讓管理員核准或拒絕這些要求的 SharePoint 清單。

  3. 建立相關工作流程,以在這兩個清單之間複製項目,以及將狀態和要求透過電子郵件寄給使用者和管理員。

  4. 建立 Windows PowerShell 指令碼,以執行 (以排定的工作形式) 來掃描適當的 SharePoint 清單,並將已核准的使用者新增至適當的 Active Directory 群組,以授與他們所要求的資料存取權。

在此案例中所述的程序是由可以從 Microsoft 下載中心下載商務程序模型和註解 (BPMN) 圖所示。我們建議您下載參考 (英文) 此圖表時遵循本文中的步驟。下載 BPMN 圖表

開始之前,請注意下列事項:

  • 您需要有個 SharePoint 網站來在其中建立 SharePoint 清單。雖然也可使用「小組」網站,但本文中的程序假設您使用以 BI 中心範本設定的網站。若要以 BI 範本來設定網站,請參閱<在 SharePoint Server 2013 中設定商務智慧中心>。

  • 本文中的範例使用 AdventureWorks 範本資料集。您可以使用 AdventureWorks 或您自己的資料來源。若要安裝 AdventureWorks,請參閱<設定商務智慧解決方案的 AdventureWorks>。

  • 在執行本文中的程序期間,您需要建立 Active Directory 帳戶和群組。其中一個帳戶需要新增至 Domain Admins 群組。建議使用可讓您直接存取網域控制站的測試環境。或者,您也可以請網域管理員設定所需的帳戶和群組。

  • 您需要一台執行 SharePoint Designer 2013 的電腦以建立工作流程。

  • 此範例中的工作流程會傳送電子郵件給要求資料存取權的使用者以及負責核准或拒絕這些要求的管理員。您必須已在管理中心中設定外寄電子郵件,電子郵件功能才能運作。

注意事項 附註:
如果您已遵循這一系列相關文件中的步驟,文中要求您建立的一些使用者和群組可能已存在於環境中。若是如此,您可以使用現有的使用者和群組。不需要重新建立現有的使用者和群組。

在本節,我們將會:

  1. 設定所需的 Active Directory 帳戶和群組。

  2. 在 SQL Server 和 Analysis Services 中設定 Active Directory 群組的資料存取權。

  3. 建立一個 SharePoint 清單來收集資料存取權要求,再建立另一個清單供管理員用來核准或拒絕這些要求。

完成這些步驟就能為下一節所說明的工作流程、Windows PowerShell 自動化及工作排程,提供所需的基礎結構。

這段影片顯示本文所述在設定帳戶和群組及建立 SharePoint 清單時所需的步驟 (時間:17:30)。

影片:初始設定

視訊 (播放按鈕) 圖示

針對您想要授與存取權的每個資料來源,各建立一個 Active Directory 群組。以 AdventureWorks 而言,我們將為下列資料來源建立 Active Directory 群組:

  • AdventureWorks 資料庫 – 我們將建立名為 AdventureWorksDBUsers 的群組

  • AdventureWorks 資料倉儲 – 我們將建立名為 AdventureWorksDWUsers 的群組

  • AdventureWorks OLAP Cube– 我們將建立名為 AdventureWorksOLAPUsers 的群組

請使用下列程序建立 Active Directory 群組。針對上述每個 AdventureWorks 群組,或您自己的每個資料來源,遵循相關程序。

建立 Active Directory 群組
  1. 以網域管理員身分登入網域控制站。

  2. 依序按一下 [開始]、[系統管理工具] 及 [Active Directory 使用者和電腦]。

  3. 展開網域節點。

  4. 在 [使用者] 上按一下滑鼠右鍵,然後依序按一下 [新增] 及 [群組]。

  5. 在 [新增物件 - 群組] 對話方塊中,在 [群組名稱] 文字方塊輸入群組的名稱,然後按一下 [確定]。

針對此案例,我們也需要兩個網域帳戶:

  • 網域管理員帳戶 - 此帳戶將用來執行排定的工作,以將使用者新增至我們在上面建立的 Active Directory 群組。您可以使用現有的網域管理員帳戶,但建議您建立一個專門用於此用途的新帳戶。我們將稱此帳戶為「網域 Proxy 帳戶」。

  • 工作流程 Proxy 帳戶 – 此帳戶將用來建立工作流程,並在使用者和管理員更新 SharePoint 清單時執行這些工作流程。此帳戶不需要任何特定的網域權限,但需要有清單所在 SharePoint 網站的 [編輯] 權限。

請使用下列程序建立上述每個 Active Directory 帳戶。

建立 Active Directory 帳戶
  1. 在 [Active Directory 使用者及電腦] 中,以滑鼠右鍵按一下 [使用者],按一下 [新增],然後按一下 [使用者]。

  2. 在 [全名] 文字方塊中,輸入使用者帳戶的名稱 (例如,ADProxyAccountWFProxyAccount)。

  3. 在 [使用者登入名稱] 文字方塊中,輸入登入名稱。

  4. 按 [下一步]。

  5. 輸入帳戶的密碼並加以確認。

  6. 選擇適用於貴組織的密碼選項,然後按 [下一步]。

  7. 按一下 [完成]。

您必須將網域 Proxy 帳戶新增至 Active Directory 中的 Domain Admins 群組。請使用下列程序將帳戶新增至 Domain Admins 群組。

將帳戶新增至 Domain Admins 群組
  1. 在 [Active Directory 使用者及電腦] 中,在 [使用者] 下方按兩下 [Domain Admins] 群組。

  2. 在 [成員] 索引標籤中,按一下 [新增]。

  3. 輸入您剛建立的帳戶的名稱,然後按一下 [確定]。

  4. 按一下 [確定]。

完成 Active Directory 設定步驟之後,下一步是將適當的資料庫存取權授與新的 Active Directory 群組。

針對您想要授與使用者存取權的每個資料來源,其對應的 Active Directory 群組皆需要在 SQL Server 中有一個登入,或在 Analysis Services 中有一個角色。以 AdventureWorks 而言,這類資料庫需要有下列登入:

  • AdventureWorks 資料庫 – AdventureWorksDBUsers Active Directory 群組的登入

  • AdventureWorks 資料倉儲 – AdventureWorksDWUsers Active Directory 群組的登入

請使用下列程序建立 SQL Server 登入。針對每個 AdventureWorks 資料庫,或您自己的每個資料庫,遵循相關程序。

建立 SQL Server 登入
  1. 以 SQL Server 管理員身分,登入執行 SQL Server 的電腦。

  2. 依序按一下 [開始]、[所有程式]、[Microsoft SQL Server 2012] 及 [SQL Server Management Studio]。

  3. 在 [連接至伺服器] 對話方塊上,從 [伺服器類型] 下拉式清單選擇 [資料庫引擎],然後按一下 [連接]。

  4. 展開 [安全性] 節點。

  5. 以滑鼠右鍵按一下 [登入],然後按一下 [新增登入]。

  6. 按一下 [搜尋]。

  7. 在 [選取使用者或群組] 對話方塊中,按一下 [物件類型]。

  8. 在 [物件類型] 對話方塊中,選取 [群組] 核取方塊,然後按一下 [確定]。

  9. 在 [選取使用者或群組] 對話方塊上,輸入您要建立登入之 Active Directory 群組的名稱 (例如,Contoso\AdvenureWorksDBUsers),然後按一下 [確定]。

  10. 在 [選取頁面] 窗格中,按一下 [使用者對應]。

  11. 選取適當資料庫 (例如,AdventureWorks2012) 的核取方塊,然後在 [資料庫角色成員資格] 下方,選取 [db_datareader] 核取方塊。

  12. 按一下 [確定]。

您也必須建立 Analysis Services 角色,以存取任何 Analysis Services Cube。以 AdventureWorks 而言,Cube 需要 AdventureWorksOLAPUsers Active Directory 群組的角色。

請使用下列程序建立 Analysis Services 角色。針對 AdventureWorks OLAP Cube 或您自己的 Analysis Services Cube,建立一個角色。

建立 Analysis Services 角色
  1. 以 SQL Server 管理員身分,登入執行 SQL Server 的電腦。

  2. 依序按一下 [開始]、[所有程式]、[Microsoft SQL Server 2012] 及 [SQL Server Management Studio]。

  3. 在 [連接到伺服器] 對話方塊上,從 [伺服器類型] 下拉式清單中選擇 [Analysis Services],然後按一下 [連接]。

  4. 展開 [資料庫]。

  5. 展開 [AdventureWorksDW2012Multidimensional-EE] 資料庫。

  6. 以滑鼠右鍵按一下 [角色],然後按一下 [新增角色]。

  7. 在 [一般] 頁面上,在 [角色名稱] 文字方塊輸入名稱 (例如,「一般存取」)。

  8. 選取 [成員資格] 頁面,然後:

    1. 按一下 [新增]。

    2. 在 [選取使用者或群組] 對話方塊中,按一下 [物件類型]。

    3. 在 [物件類型] 對話方塊中,選取 [群組] 核取方塊,然後按一下 [確定]。

    4. 在 [選取使用者或群組] 對話方塊上,輸入您要建立登入的 Active Directory 群組的名稱 (例如,Contoso\AdvenureWorksOLAPUsers),然後按一下 [確定]。

  9. 選取 [Cube] 頁面,然後針對兩個 Cube,都從 [存取] 下拉式清單中選取 [讀取]。

  10. 按一下 [確定]。

當 SQL Server 和 Analysis Services 都設有所需的登入和角色之後,下一步就是建立所需的 SharePoint 清單來處理資料存取權要求。

在此案例中,我們需要兩個 SharePoint 清單:

  • 要求清單 – 此清單供需要資料存取權的使用者輸入要求。此清單中將有欄位可用來定義資料庫存取權要求。這些欄位包括要求存取權的使用者的別名、他們想要存取的資料來源,以及一個區域供他們說明提出此要求的業務上理由。

  • 核准清單 – 此清單供管理員用來核准或拒絕資料存取權要求。其中包含「要求」清單中已有的所有欄位,再加上一個可供 Windows PowerShell 指令碼用來追蹤要求狀態的欄位,以及一個可儲存登入資訊的欄位。

請使用下列程序建立「要求」清單。您可以依需要新增更多欄位,但記得不能省略任何欄位,否則 Windows PowerShell 指令碼將無法運作。

建立存取權要求專用的 SharePoint 清單
  1. 移至您要建立清單的網站。

  2. 在左側導覽中,按一下 [網站內容]。

  3. 按一下 [新增應用程式]。

  4. 按一下 [自訂清單]。

  5. 在 [新增自訂清單] 對話方塊中,在 [名稱] 文字方塊輸入「存取權要求」,然後按一下 [建立]。

    注意事項 附註:
    您可以選擇不同的名稱,但如此將需要更新本文稍後所提供 Windows PowerShell 指令碼中的清單名稱。
  6. 在 [網站內容] 頁面上,按一下 [存取權要求] 清單。

  7. 在清單頁面上,在功能區的 [清單] 索引標籤按一下 [清單設定]。

  8. 在清單設定頁面的 [欄] 下方,使用 [建立欄] 連結來建立下表所述的欄。

     

    欄位名稱 說明 選項

    Status

    要求的狀態。

    選擇 [選擇 (供選擇的功能表)] 選項,然後在 [一行鍵入一個選擇] 方塊中,輸入「新增」、「進行中」、「已核准」及「已拒絕」,作為可用的選擇。指定 [預設值] 為「新增」。

    資料來源

    可用的資料來源清單。

    選擇 [選擇 (供選擇的功能表)] 選項,然後在 [一行鍵入一個選擇] 方塊中,輸入 AdventureWorks DBAdventureWorks DWAdventureWorks OLAP,作為可用的選擇 (如果使用您自己的資料來源,請在此處輸入那些資料來源,而非這些 AdventureWorks 選項)。

    使用者別名

    要求資料存取權的使用者的別名。

    使用 [單行文字] 選項,並在 [此欄需要包含資訊] 下方選取 [是],以確保這是必要欄位。

    業務上理由

    這是選擇性欄位,可讓您記錄使用者要求資料存取權的原因。

    請讓此欄位使用 [多行文字] 選項。

    註解

    供要求者輸入註解給管理員的地方。

    請讓此欄位使用 [多行文字] 選項。

    要求識別碼

    工作流程產生的值,用來維護兩個清單之間的連結。

    請讓此欄位使用 [單行文字] 選項。

為了讓 Windows PowerShell 指令碼可以運作,網域 Proxy 帳戶需要有此清單的讀取/寫入存取權。最簡單的作法是將清單所在網站的「編輯」存取權授與此帳戶。

同樣地,工作流程 Proxy 帳戶必須有此網站的「設計」權限,才能發佈工作流程。

針對每個帳戶來遵循此程序 (選擇「編輯」存取權給網域 Proxy 帳戶,選擇「設計」存取權給工作流程 Proxy 帳戶)。

授與網站的存取權
  1. 在清單所在的網站上,按一下 [共用]。

  2. 輸入網域 Proxy 帳戶的使用者帳戶 (例如,contoso\ADProxyAccount)。

  3. 按一下 [顯示選項]。

  4. 從 [選取群組或權限等級] 下拉式清單中,選擇 [編輯] 或 [設計]。

  5. 按一下 [共用]

在建立 SharePoint 清單並將「編輯」權限授與網域 Proxy 帳戶之後,下一步是建立「核准」清單,供管理員用來核准或拒絕資料庫存取權。

請使用下列程序建立「核准」清單。您可以依需要新增其他欄位,但記得不能省略任何欄位,否則 Windows PowerShell 指令碼將無法運作。

建立管理員專用的 SharePoint 清單
  1. 移至您要建立清單的網站。

  2. 在左側導覽中,按一下 [網站內容]。

  3. 按一下 [新增應用程式]。

  4. 按一下 [自訂清單]。

  5. 在 [新增自訂清單] 對話方塊中,在 [名稱] 文字方塊輸入「存取權核准」,然後按一下 [建立]。

    注意事項 附註:
    您可以選擇不同的名稱,但需要更新本文稍後所提供 Windows PowerShell 指令碼中的清單名稱。
  6. 在 [網站內容] 頁面上,按一下 [存取權核准] 清單。

  7. 在清單頁面上,在功能區的 [清單] 索引標籤按一下 [清單設定]。

  8. 在清單設定頁面的 [欄] 下方,使用 [建立欄] 連結來建立下表所述的欄。

     

    欄位名稱 說明 選項

    Status

    要求的狀態。

    選擇 [選擇 (供選擇的功能表)] 選項,然後在 [一行鍵入一個選擇] 方塊中,輸入「新增」、「已核准」、「已拒絕」、「已核准 - 擱置」及「錯誤」,作為可用的選擇。[預設值] 欄位保持空白。

    資料來源

    可用的資料來源清單。

    選擇 [選擇 (供選擇的功能表)] 選項,然後在 [一行鍵入一個選擇] 方塊中,輸入 AdventureWorks DBAdventureWorks DWAdventureWorks OLAP,作為可用的選擇 (如果使用您自己的資料來源,請在此處輸入那些資料來源,而非這些 AdventureWorks 選項)。

    使用者別名

    要求資料存取權的使用者的別名。

    使用 [單行文字] 選項,並在 [此欄需要包含資訊] 下方選取 [是],以確保這是必要欄位。

    業務上理由

    這是選擇性欄位,可讓您記錄使用者要求資料存取權的原因。

    請讓此欄位使用 [多行文字] 選項。

    註解

    供管理員輸入註解給要求者的地方。

    請讓此欄位使用 [多行文字] 選項。

    要求識別碼

    工作流程產生的值,用來維護兩個清單之間的連結。

    請讓此欄位使用 [單行文字] 選項。

    記錄

    Windows PowerShell 指令碼所產生的記錄,用以說明指令碼已採取的動作。

    請讓此欄位使用 [多行文字] 選項。

因為此清單是專門給管理員使用,所以我們必須修改清單權限以防清單繼承父網站的權限,然後再將清單的直接存取權授與管理員。我們也必須將清單的讀取/寫入存取權授與工作流程 Proxy 帳戶和網域 Proxy 帳戶,讓工作流程和 Windows PowerShell 指令碼能夠正常運作。

請使用下列程序修改清單權限。

修改清單權限
  1. 移至「核准」清單

  2. 在功能區的 [清單] 索引標籤上,按一下 [清單設定]。

  3. 按一下 [此清單的權限]。

  4. 在功能區的 [權限] 索引標籤上,按一下 [停止繼承權限]。

  5. 按一下確認對話方塊中的 [確定] 。

  6. 在功能區的 [權限] 索引標籤上,按一下 [授與權限]。

  7. 輸入網站擁有人或管理員的名稱 (例如,您用來修改清單的帳戶)。

  8. 按一下 [顯示選項]。

  9. 從 [選取群組或權限等級] 下拉式清單中,選擇 [完全控制]。

  10. 按一下 [共用]

  11. 選取所有現有的權限群組 (但您剛新增的使用者或群組除外),然後按一下功能區的 [移除使用者權限]。

    重要事項 重要事項:
    如果您保留任何預設群組,清單可能會繼續透過這些群組來繼承父網站的權限。
  12. 在功能區的 [權限] 索引標籤上,按一下 [授與權限]。

  13. 輸入網域 Proxy 帳戶及任何將使用此清單的管理員的名稱。

  14. 按一下 [顯示選項]。

  15. 從 [選取群組或權限等級] 下拉式清單中,選擇 [參與]。

  16. 按一下 [共用]

  17. 在功能區的 [權限] 索引標籤上,按一下 [授與權限]。

  18. 輸入工作流程 Proxy 帳戶的名稱。

  19. 按一下 [顯示選項]。

  20. 從 [選取群組或權限等級] 下拉式清單中,選擇 [設計]。

    注意事項 附註:
    因為工作流程 Proxy 帳戶將用來從 SharePoint Designer 發佈工作流程,所以此帳戶至少必須具有清單的「設計」權限。
  21. 按一下 [共用]

在建立 SharePoint 清單並將必要的權限授與網域帳戶和工作流程 Proxy 帳戶之後,下一步是將清單與工作流程繫結在一起,並使用 Windows PowerShell 指令碼,將授權存取資料來源的過程自動化。下節說明建立工作流程和指令碼,並以排定的工作形式讓指令碼自動執行的程序。

在本節,我們將會:

  1. 建立一段 Windows PowerShell 指令碼,以讀取「存取權核准」清單並在 Active Directory 中套用所要求的權限。

  2. 建立兩個工作流程,以在兩個 SharePoint 清單之間複製清單項目。

  3. 在 Windows Server 中建立排定的工作,以依照指定的間隔時間執行指令碼。

備妥指令碼和工作流程並開始執行排定的工作之後,使用者就可以將資料庫要求新增至「存取權要求」清單,而這些要求會自動複製到「存取權核准」清單,由管理員來核准或拒絕。然後,指令碼會對已核准的使用者套用使用者權限。

注意事項 附註:
指令碼會在 Active Directory 中執行功能。為了載入 Active Directory Windows PowerShell 模組,在要執行指令碼的伺服器上,必須已設定「遠端伺服器管理工具」。「遠端伺服器管理工具」是項可透過「伺服器管理員」來新增的功能。

這段影片顯示設定工作流程、Windows PowerShell 指令碼及設定排定的工作來執行 Windows PowerShell 指令碼時的相關步驟 (時間:28:02)。

影片:自動化和指令碼

視訊 (播放按鈕) 圖示

針對此案例,我們需要建立兩個工作流程:

  • 複製要求 – 此工作流程負責將原始資料存取權要求,從「存取權要求」清單複製到「存取權核准」清單。它也負責建立唯一識別碼,將這兩個項目繫結在一起,並傳送電子郵件給管理員,通知他們需要注意「存取權核准」清單中有尚未處理的要求。

  • 更新要求 – 此工作流程負責更新這兩個清單的要求狀態,並傳送電子郵件給要求資料存取權的使用者,通知他們自己的要求已受到核准或拒絕。

若要建立各工作流程,您必須使用工作流程 Proxy 帳戶,登入有 SharePoint Designer 2013 的電腦。請務必使用此帳戶來建立工作流程,如此才能設定工作流程用此帳戶執行。

完成後,「複製要求」工作流程應看來如下列螢幕擷取畫面的樣子。

SharePoint Designer 2013 工作流程的螢幕擷取畫面

請使用下列程序建立「複製要求」工作流程。

建立「複製要求」工作流程
  1. 使用工作流程 Proxy 帳戶,登入已安裝 SharePoint Designer 2013 的電腦。

  2. 依序按一下 [開始]、[所有程式]、[Microsoft Office 2013] 及 [SharePoint Designer 2013]。

  3. 按一下 [開啟網站],輸入 SharePoint 清單所在網站的 URL,然後按一下 [開啟]。

  4. 在左窗格中,選取 [工作流程]。

  5. 在功能區中,按一下 [清單工作流程],然後選擇 [存取權要求] 清單。

  6. 在 [建立清單工作流程] 對話方塊中,輸入「複製要求」作為名稱,選擇 [SharePoint 2010 工作流程] 作為 [平台類型],然後按一下 [確定]。

  7. 按一下 [步驟 1] 方塊上方的空白區。

  8. 在功能區中,按一下 [模擬步驟]。

  9. 選取 [步驟 1] 方塊,然後在功能區按一下 [刪除]。

  10. 在 [模擬步驟] 方塊中,按一下文字行下方。

  11. 新增工作流程條件和動作,如下所示:

     

    條件或動作 附註

    條件 = 若目前項目欄位等於值

    欄位 = 狀態

    = 新增

    當已儲存的清單項目為「新增」狀態時,執行工作流程。

    動作 = 執行計算

    第一個值:資料來源 = 目前項目來源的欄位 = 識別碼

    第二個值:資料來源 = 目前項目欄位 = 已建立

    輸出至名為 ReqID 的新字串變數

    此動作會建立唯一識別碼,其可同時用在兩個清單中來連結兩筆相關的記錄。

    動作 = 在目前項目中設定欄位

    欄位 = 要求識別碼

    值:資料來源 = 工作流程變數與參數來源的欄位 = 變數: ReqID

    此動作會將目前項目中的「要求識別碼」欄位,設為我們在上個步驟建立的唯一識別碼。

    動作 = 複製清單項目

    第一個值:目前項目,第二個值:存取權核准

    此動作會將清單項目從「存取權要求」清單複製到「存取權核准」清單。

    動作 = 更新清單項目

    清單:目前項目

    新增 指派值:將 [狀態] 設為 [進行中]

    此動作會將目前清單項目的狀態設為「進行中」。

    動作 = 傳送電子郵件

    可存取「存取權核准」清單的管理員

    此動作會傳送電子郵件給可存取「存取權核准」清單的管理員。請加上文字來告訴管理員有存取權要求等待他們的決定,並加上「存取權核准」清單的連結。

  12. 在 [複製要求] 索引標籤的連結階層中,按一下 [複製要求]。

  13. 在工作流程設定頁面的 [啟動選項] 下方,選取 [當項目建立時自動啟動工作流程] 和 [當項目變更時自動啟動工作流程] 核取方塊。

  14. 在功能區中,按一下 [儲存],然後按一下 [發佈]。

  15. 按一下模擬警告對話方塊中的 [確定]。

儲存並發佈「複製要求」工作流程之後,下一步是建立「更新要求」工作流程。完成後,「更新要求」工作流程應看來如下列螢幕擷取畫面的樣子。

SharePoint Designer 2013 中工作流程的螢幕擷取畫面

請使用下列程序建立「更新要求」工作流程。

建立「更新要求」工作流程
  1. 在 SharePoint Designer 2013 的左窗格中,選取 [工作流程]。

  2. 在功能區中,按一下 [清單工作流程],然後選擇 [存取權核准] 清單。

  3. 在 [建立清單工作流程] 對話方塊中,輸入「更新要求」作為名稱,選擇 [SharePoint 2010 工作流程] 作為 [平台類型],然後按一下 [確定]。

  4. 按一下 [步驟 1] 方塊上方的空白區。

  5. 在功能區中,按一下 [模擬步驟]。

  6. 選取 [步驟 1] 方塊,然後在功能區按一下 [刪除]。

  7. 在 [模擬步驟] 方塊中,按一下文字行下方

  8. 新增工作流程條件和動作,如下所示:

     

    條件或動作 附註

    條件 = 若目前項目欄位等於值

    欄位 = 狀態

    = 已核准

    當已儲存的清單項目為「已核准」狀態時,執行這一段工作流程。

    動作 = 更新清單項目

    新增清單 = 存取權要求欄位 = 狀態 = 已核准

    尋找清單項目欄位 = 要求識別碼 = 查閱資料來源 = 目前項目來源的欄位 = 要求識別碼

    此動作會將「存取權要求」清單中的「狀態」欄位更新為「已核准」。

    我們將「存取權核准」清單中的「要求識別碼」對應至「存取權要求」清單中的相同欄位,以找出正確項目。

    請注意,此步驟結束時會出現警示,警告您查閱可能不會傳回單一值。在此案例中,我們使用的是唯一識別碼,所以傳回的將是單一值。

    動作 = 在目前項目中設定欄位

    設定狀態 = 已核准 - 擱置

    此動作會將「存取權核准」項目中的清單項目設為「已核准 - 擱置」,也就是 Windows PowerShell 指令碼所尋找的值。

    動作 = 傳送電子郵件

    收件者使用者的工作流程查閱

    資料來源 = 目前項目、來源的欄位 = 使用者別名

    此動作會傳送電子郵件給要求資料存取權的使用者。

    在指定要作為電子郵件收件者的使用者時,請選擇 [使用者的工作流程查閱] 選項,並使用 SharePoint 清單中的 [使用者別名] 欄位。請注意,在電子郵件的本文中,使用者的存取權已受到核准。

    條件 = 若目前項目欄位等於值

    欄位 = 狀態

    = 已拒絕

    當已儲存的清單項目為「已核准」狀態時,執行這一段工作流程。

    務必將此條件放在與「項目 = 已核准」分支相同的層級,此分支才會顯示為 Else if 陳述式。

    動作 = 更新清單項目

    新增清單 = 存取權要求欄位 = 狀態 = 已拒絕

    尋找清單項目欄位 = 要求識別碼 = 查閱資料來源 = 目前項目來源的欄位 = 要求識別碼

    此動作會將「存取權要求」清單中的「狀態」欄位更新為「已拒絕」。

    我們將「存取權核准」清單中的「要求識別碼」對應至「存取權要求」清單中的相同欄位,以找出正確項目。

    請注意,此步驟結束時會出現警示,警告您查閱可能不會傳回單一值。在此案例中,我們使用的是唯一識別碼,所以傳回的將是單一值。

    動作 = 傳送電子郵件

    收件者使用者的工作流程查閱

    資料來源 = 目前項目來源的欄位 = 使用者別名

    此動作會傳送電子郵件給要求資料存取權的使用者。

    在指定要作為電子郵件收件者的使用者時,請選擇 [使用者的工作流程查閱] 選項,並使用 SharePoint 清單中的 [使用者別名] 欄位。請注意,在電子郵件的本文中,使用者的存取權已受到核准。

  9. 在 [更新要求] 索引標籤的連結階層中,按一下 [更新要求] 索引標籤。

  10. 在工作流程設定頁面的 [啟動選項] 下方,選取 [當項目建立時自動啟動工作流程] 和 [當項目變更時自動啟動工作流程] 核取方塊。

  11. 在功能區中,按一下 [儲存],然後按一下 [發佈]。

  12. 按一下模擬警告對話方塊中的 [確定] 。

為了將授權存取所要求資料來源的過程自動化,我們使用 Windows PowerShell 指令碼。以下的範例指令碼會執行下列基本功能:

  1. 載入「存取權核准」SharePoint 清單。

  2. 逐一檢查每個清單項目,以找出「已核准 - 擱置」狀態 (「更新要求」工作流程在管理員核准要求時所設定的狀態)。

  3. 對於狀態為「已核准 - 擱置」的每個項目,指令碼會將「使用者別名」欄位所指定的使用者,新增至「資料來源」欄位所指定資料來源的相關聯 Active Directory 群組中。

  4. 清單項目的狀態會從「已核准 - 擱置」變成「已核准」或「錯誤」 (視結果而定)。

  5. 清單項目的「記錄」欄位中會寫入簡短的事件記錄。

請使用下列程序建立 Windows PowerShell 指令碼。請在 SharePoint Server 2013 應用程式伺服器上建立指令碼。

建立 Windows PowerShell 指令碼
  1. 在 SharePoint Server 應用程式伺服器上,按一下 [開始],按一下 [執行],輸入 PowerShell_ISE.exe,然後按一下 [確定]。

  2. 將下列指令碼複製並貼到 Windows PowerShell 編輯器中:

    # Add SharePoint and Active Directory cmdlets
    if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) {
         Add-PSSnapin "Microsoft.SharePoint.PowerShell"
     } 
     if ((Get-Module ActiveDirectory -ErrorAction SilentlyContinue) -eq $null) {
         Import-module ActiveDirectory
     }
    
    # Get-SPWeb for the site where the list is located
    $ListWeb = Get-SPWeb http://contoso-appsrv1/sites/BICenter
    
    # Get the list by name
    $ListName = $ListWeb.Lists["Access Approval"]
    
    # Get the list items
    $ListItems = $ListName.items
    
    # Loop through each list item
    $ListItems | foreach {
    
    $ListItem = $_
    
    # Look for list items with a status of "Approved - Pending"
    if($ListItem["Status"] -eq "Approved - Pending") {
    
        # Clear out the variables for each loop
        $LogText = ""
        $DataSourceADGroup = ""
        $ActionStatus = ""
        $ActionTime = ""
        
        # Add-ADGroupMember requires alias with no domain, so remove the domain\ if it exists
        $SharePointUser = $ListItem["User alias"]
        $SharePointUser = $SharePointUser.ToLower()
        $SharePointUser = $SharePointUser.Replace("contoso\","")
        
        # Determine data source being requested and assign the associated AD group to the $DataSourceADGroup variable
        if($ListItem["Data Source"] -eq "AdventureWorks DB") {$DataSourceADGroup = "AdventureWorksDBUsers"}
        if($ListItem["Data Source"] -eq "AdventureWorks DW") {$DataSourceADGroup = "AdventureWorksDWUsers"}
        if($ListItem["Data Source"] -eq "AdventureWorks OLAP") {$DataSourceADGroup = "AdventureWorksOLAPUsers"}
    
        # Add user request and data source information to the log variable
        $LogText += "User " + $ListItem["User alias"] + " requesting access to " + $DataSourceADGroup + "`n`r"
    
        # Try to add the requested user to the AD group
        try{
            Add-ADGroupMember -Identity $DataSourceADGroup -Members $SharePointUser
    
            # Note success in the log variable
            $LogText += "Adding " + $ListItem["User alias"] + " to " + $DataSourceADGroup + "`n`r"
            
            # Note success in the $ActionStatus variable for later update to the SharePoint list
            $ActionStatus = "Succeeded"
            }
        catch{
            # If Add-ADGroupMember fails, so note in the log variable
            $LogText += "Error: could not add " + $ListItem["User alias"] + " to " + $DataSourceADGroup + ": " + $_ + "`n`r"
            
            # Note failure in the $ActionStatus variable for later update to the SharePoint list
            $ActionStatus = "Failed"
            }
        
        # Get the current date and time
        $ActionTime = Get-Date
    
        # Append the date, time, and final status to the log variable
        $LogText += $ActionStatus + " " + $ActionTime
        
        # Update the list item with the final status and the log text
        if($ActionStatus -eq "Succeeded") {$ListItem["Status"] = "Approved"}
        if($ActionStatus -eq "Failed") {$ListItem["Status"] = "Error"}
        $ListItem["Log"] = $LogText
        $ListItem.Update()
        }
    }
    
    
  3. 按一下 [檔案],按一下 [儲存],將檔案儲存到本機磁碟上的某個位置。

重要事項 重要事項:
在測試環境中,您可以將 Windows PowerShell 指令碼儲存到方便的位置。在實際執行環境中,請網域管理員建立一個需要有網域管理員權限才能存取的資料夾,然後將指令碼儲存到該處。如此可提高安全性,有助於防止指令碼遭到未經授權的變更。

根據您的環境,您可能需要更新下列指令碼項目:

  • SharePoint 清單所在網站的 URL 是設為 http://contoso-appsrv1/sites/BICenter。請將此值更新為您環境適用的 URL。這是儲存在 $ListName 變數中。

  • $SharePointUser = $SharePointUser.Replace("contoso\","") 這行,必須將 contoso 換成您的網域。

  • Data Source$DataSourceADGroup 值是針對本文所討論的 AdventureWorks 選項而設定。如果您使用自己的資料來源,必須更新這些值來符合您的資料來源。

  • 如果您為任何 SharePoint 清單欄位所取的名稱不同於清單建立程序中所指定的名稱,則必須更新指令碼來使用您所選擇的值。請利用清單建立程序中列出的值,在指令碼中找出對應的值。

將指令碼儲存到本機磁碟之後,下一步是設定網域 Proxy 帳戶作為指令碼管理員。

為了順利執行 Windows PowerShell 指令碼,網域 Proxy 帳戶需要有以 Windows PowerShell 更新 SharePoint 清單的權限。若要達成此目標,請使用 Add-SPShellAdmin Windows PowerShell Cmdlet 將命令介面管理員權限授與此帳戶。

請使用下列程序,設定網域 Proxy 帳戶作為命令介面管理員。

注意事項 附註:
如果您先前已在這一系列的其他案例中,設定網域 Proxy 帳戶作為命令介面管理員,則不需要重做此程序。
設定指令碼管理員
  1. 以伺服器陣列管理員身分登入 SharePoint Server 應用程式伺服器。

  2. 依序按一下 [開始]、[所有程式]、[Microsoft SharePoint 2013 產品],以滑鼠右鍵按一下 [SharePoint 2013 管理命令介面],然後按一下 [以系統管理員身分執行]。

  3. 在 Windows PowerShell 命令視窗中,輸入下列語法:

    Get-SPContentDatabase | Add-SPShellAdmin -UserName domain\username
    

    例如:

    Get-SPContentDatabase | Add-SPShellAdmin -UserName Contoso\ADProxyAccount
    
  4. 按 Enter 鍵。

網域 Proxy 帳戶被新增為命令介面管理員之後,就可用在排定的工作中來執行 Windows PowerShell 指令碼。

我們可以利用排定的工作來定期執行 Windows PowerShell 指令碼,以自動將要求資料存取權的使用者新增至適當的 Active Directory 群組。

請使用下列程序建立排定的工作。

建立排定的工作
  1. 以本機系統管理員身分登入 SharePoint Server 應用程式伺服器。

  2. 按一下 [開始],按一下 [系統管理工具],然後按一下 [工作排程器]。

  3. 在 [動作] 窗格中,按一下 [建立工作]。

  4. 在 [一般] 索引標籤上:

    1. 在 [名稱] 文字方塊中,輸入工作的名稱。

    2. 選擇 [不論使用者登入與否均執行] 選項。

    3. 選取 [以最高權限執行] 核取方塊。

  5. 在 [觸發程序] 索引標籤上:

    1. 按一下 [新增]。

    2. 選取 [重複工作每隔] 核取方塊,然後從下拉式清單中選擇 [10 分鐘]。

    3. 從 [持續時間為] 下拉式清單中,選擇 [不限制]。

    4. 按一下 [確定]。

  6. 在 [動作] 索引標籤上:

    1. 按一下 [新增]。

    2. 在 [程式/指令碼] 文字方塊中,輸入 PowerShell.exe

    3. 在 [新增引數 (可省略)] 文字方塊中,輸入 Windows PowerShell 指令碼的路徑和檔案名稱 (例如,C:\Scripts\AdminApprovedDataAccess.PS1))

    4. 按一下 [確定]。

  7. 按一下 [確定]。

  8. 輸入要用來執行指令碼的帳戶的使用者名稱和密碼。這是您已設定作為 Windows PowerShell 指令碼管理員的 Active Directory 網域管理員帳戶。

建立排定的工作之後,此案例的設定步驟就算完成。下一步是新增項目至 SharePoint 清單來測試功能。

在本節,我們將新增一些項目至 SharePoint 清單,以測試指令碼和排定的工作之運作。

這段影片顯示一些測試此案例的例子 (時間: 9:19)。

影片:測試並確認運作

視訊 (播放按鈕) 圖示

請試試下列動作,確認指令碼和排定的工作正常運作:

  • 新增一個項目至「存取權要求」清單,該項目的「狀態」為「新增」。等待「複製要求」工作流程完成。檢查「存取權核准」清單,確定工作流程已正確複製項目。另外也檢查管理員是否收到工作流程所寄出的電子郵件。

  • 請管理員核准「存取權核准」清單中的項目。等待「更新要求」工作流程完成。檢查「工作排程器」中的工作,看看下次排定工作執行的時間。等待工作執行完成,然後檢查 SharePoint 清單,確定「狀態」和「記錄」欄位都已更新。檢查「存取權要求」清單中對等的項目,確定註解和狀態已複製過去。檢查適當的 Active Directory 群組,確定已新增指定的使用者。

  • 針對您有的每個資料來源 (在我們的範例中是 AdventureWorks 資料庫、資料倉儲及 OLAP),在清單中各新增一個項目。當「複製要求」工作流程處理完每個項目之後,請管理員核准或拒絕「存取權核准」清單中的每個要求。當「更新要求」工作流程處理完每個項目之後,請在工作排程器中,以滑鼠右鍵按一下工作,然後按一下 [執行] (以免要等到下一次排定的時間才能執行)。檢查 SharePoint 和 Active Directory 群組,確定結果符合預期。

  • 請已獲得資料存取權的使用者嘗試從 Excel 中存取資料來源。

https://technet.microsoft.com/zh-tw/library/jj573016.aspx
顯示: