撰寫服務管理自動化 Runbook

重要

此版本的服務管理自動化 (SMA) 已終止支援。 我們建議您 升級至 SMA 2022

Service Management Automation 和 Microsoft Azure 自動化 中的 Runbook 是工作流程或 PowerShell 腳本 Windows PowerShell。 這可提供自動化的管理程序,以管理及部署雲端伺服器或 Windows PowerShell 指令碼可執行的任何其他功能。

這兩個系統之間的 Runbook 沒有任何差異,而且相同的 Runbook 可以使用相同的功能來執行。 當本文中使用自動化一詞時,它會參考服務管理自動化和 Microsoft Azure 自動化。

自動化另外提供的下列這些功能,也可與 Windows PowerShell 工作流程一起搭配使用:

  • 集中儲存及管理 Runbook。

  • 可調適的排程及執行 Runbook 架構。

  • 集中進行管理並適用於所有 Runbook 的全域資源。

  • 用於撰寫及測試 Runbook 的使用者介面。

  • 一組可用於管理及啟動 Runbook 的指令程式。

建立或匯入 Runbook

您可以在管理入口網站中建立 Runbook,或從檔案匯入 Runbook,將 Runbook 新增至服務管理自動化。

在管理入口網站中建立 Runbook

  1. 在管理入口網站中,選取 [新增]、 [應用程式服務]、 [自動化]、 [Runbook]、 [快速建立]。

  2. 輸入必要資訊,然後選取 [ 建立]。 Runbook 名稱必須以字母開頭,可以具有字母、數字、底線和連字號。

  3. 如果您想要立即編輯 Runbook,請選取 [編輯 Runbook]。 否則,請選取 [ 確定]。

  4. 您的新 Runbook 會出現在 [Runbook] 索引標籤中。

從檔案匯入 Runbook

  1. 在管理入口網站中,選取 [自動化] ,然後選取 [自動化帳戶]。

  2. 選取 [匯入]。

  3. 選取 [瀏覽檔案 ],然後找出要匯入的腳本檔案。

  4. 如果您想要立即編輯 Runbook,請選取 [編輯 Runbook]。 否則,請選取 [ 確定]。

  5. 您的新 Runbook 會出現在自動化帳戶的 [Runbook] 索引標籤中。

從具有 Windows PowerShell的腳本檔案匯入 Runbook

您可以使用 Import-SmaRunbook Cmdlet,從包含工作流程的指令碼檔案中建立新的 Runbook。

下列命令範例示範如何將指令碼檔案匯入現有的 Runbook,然後發佈它。

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$scriptPath = "c:\runbooks\Test-Runbook.ps1"

Import-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Path $scriptPath
Publish-SMARunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName

編輯 Runbook

服務管理自動化中的每個 Runbook 都有兩個版本:Draft 和 Published。 您可以編輯工作流程的草稿版本,然後將其發佈,以便執行。 無法編輯已發佈的版本。

使用管理入口網站編輯 Runbook

管理入口網站包含可用來檢視和編輯 Runbook 的編輯器。 除了提供基本文字編輯功能之外,編輯器還可讓您自動插入 Runbook、全域資產和活動的程式代碼。

  1. 在管理入口網站中,選取 [自動化]

  2. 選取 [Runbook] 索引標籤。

  3. 選取您要編輯的 Runbook 名稱。

  4. 選取 [作者] 索引標籤。

  5. 選取畫面頂端的 [草稿 ] 或畫面底部的 [ 編輯 ] 按鈕。

  6. 執行必要的編輯。

  7. 當您的編輯完成時,請選取 [ 儲存 ]。

  8. 如果您想要發佈最新草稿版本的 Runbook,請選取 [ 發佈 ]。

選取必要索引標籤,以取得插入 Runbook、全域資產和活動之程式代碼的步驟:

請遵循下列步驟,將程式代碼插入 Runbook:

  1. 在管理入口網站編輯器中開啟 Runbook。

  2. 在畫面底部,選取 [ 插入 ],然後選取 [Runbook]。

  3. 選取要從中央數據行插入的 Runbook,然後選取向右箭號。

  4. 如果 Runbook 有參數,它們會列出供您參考。

  5. 選取核取按鈕。

  6. 執行所選 Runbook 的程式代碼將會插入目前的 Runbook。

  7. 如果 Runbook 需要參數,請提供適當的值來取代以大括弧 <>括住的數據類型。

使用 PowerShell 編輯自動化 Runbook

若要使用 Windows PowerShell 編輯 Runbook,請使用選擇的編輯器編輯工作流程,並將它儲存到 .ps1 檔案。 您可以使用 Get-SMARunbookDefinition Cmdlet 來擷取 Runbook 內容,再使用 Edit-SMARunbook Cmdlet,以修改過的草稿工作流程取代現有的草稿工作流程。

使用 Windows PowerShell 擷取 Runbook 的內容

以下範例命令顯示如何擷取 Runbook 的指令碼,然後將其儲存至指令碼檔案。 在此範例中,會擷取「草稿」版本。 也可以擷取「已發佈」版本的 Runbook,雖然這個版本不能變更。

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$scriptPath = "c:\runbooks\Test-Runbook.ps1"

$runbookDefinition = Get-SMARunbookDefinition -WebServiceEndpoint $webServer -Port $port -Name $runbookName -Type Draft
$runbookContent = $runbookDefinition.Content

Out-File -InputObject $runbookContent -FilePath $scriptPath

若要使用 Windows PowerShell 變更 Runbook 的內容

下列命令範例顯示如何以包含工作流程的指令碼檔案內容,取代現有的 Runbook 內容。

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$scriptPath = "c:\runbooks\Test-Runbook.ps1"

Edit-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName -Path $scriptPath -Overwrite
Publish-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName -Path $scriptPath

使用 PowerShell ISE 編輯自動化 Runbook

Windows PowerShell 整合式腳本環境 (ISE) 是一個應用程式,可讓您執行命令和撰寫、測試和偵錯腳本。 SMA PowerShell ISE 附加元件可讓您使用此工具來撰寫及測試自動化 Runbook。

  1. 開啟 Windows PowerShell ISE。

  2. 如果 SMA ISE 附加元件未顯示在 ISE 右側,請開啟附加 元件功能表, 然後啟用 SMA ISE 附加元件

  3. 在 [ 組態 ] 索引標籤上登入 SMA。

  4. 選取 [ Runbook] 索引標籤 。您應該會看到 SMA Runbook 的清單。

  5. 選取您要編輯的 Runbook,然後選取 [ 下載]。 這會從 SMA 下載 Runbook 的本機複本。

  6. 選取 [開啟]。 這會使用 Runbook 建立新的索引標籤。

  7. 對 Runbook 進行必要的變更。

  8. 選取 [上傳草稿 ] 將 Runbook 傳送至 SMA。 這會覆寫現有的 Runbook 草稿版本。

  9. 如果您想要發佈 Runbook 的最新草稿版本,請選取 [ 發佈草稿 ]。

發佈 Runbook

建立 Runbook 之後,您必須發布它,讓 Runbook 背景工作角色可以執行它。 服務管理自動化中的每個 Runbook 都有草稿和已發佈的版本。 只可執行已發行版本,而且只可編輯草稿版本。 已發行版本不會受到草稿版本的任何變更影響。 當您準備好讓草稿版本可供使用時,您可以發佈該版本,以草稿版本覆寫已發佈的版本。

使用管理入口網站發佈 Runbook

  1. 選取 [自動化] 工作區。

  2. 在畫面頂端,選取 [Runbook]

  3. 找出要編輯的 Runbook,然後按一下其名稱。

  4. 在畫面頂端,選取 [ 作者]。

  5. 選取 [草稿]。

  6. 在畫面底部,選取 [ 發佈]。

  7. 選取 [ ] 驗證訊息。

使用 PowerShell 發佈 Runbook

您可以搭配使用 Publish-SmaRunbook 與 Windows PowerShell 來發佈 Runbook。 下列命令範例示範如何發佈 Runbook。

$webServer = 'https://MyServer'
$port = 9090
$runbookPath = 'c:\runbooks\Sample-TestRunbook.ps1'
$runbookName = 'Test-Runbook'

Publish-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName

使用 PowerShell ISE 發佈 Runbook

Windows PowerShell 整合式腳本環境 (ISE) 是一種應用程式,可讓您執行命令和撰寫、測試和偵錯腳本。 SMA PowerShell ISE 附加元件可讓您使用此工具來撰寫及測試自動化 Runbook。

  1. 開啟 Windows PowerShell ISE。

  2. 如果 SMA ISE 附加元件未顯示在 ISE 右側,請開啟附加 元件功能表, 然後啟用 SMA ISE 附加元件

  3. 在 [ 組態 ] 索引標籤上登入 SMA。

  4. 選取 [ Runbook] 索引標籤 。您應該會看到 SMA Runbook 的清單。

  5. 選取 Runbook,然後選取 [ 發佈草稿 ] 以發佈 Runbook 的最新草稿版本。

測試 Runbook

您可以在服務管理自動化中測試 Runbook 的草稿版本,同時讓 Runbook 的已發佈版本保持不變。 這可讓您驗證取代已發行的版本之前,Runbook 正常運作。

當您測試 Runbook 時,草稿 Runbook 會執行,而且它執行的任何動作都會完成。 不會建立作業歷程記錄,但 [測試輸出] 窗格中會顯示 [輸出] 和 [警告] 和 [錯誤數據流]。 只有在$VerbosePreference變數設為 [繼續] 時,[輸出] 窗格中才會顯示詳細資訊 Stream 的訊息。

當您測試 Runbook 時,它仍會正常執行工作流程,並針對環境中的資源執行任何動作。 基於這個理由,您應該只針對非生產資源測試 Runbook。

在服務管理自動化中測試 Runbook

若要測試 Runbook, 在管理入口網站中開啟 Runbook 的草稿版本。 選取畫面底部的 [ 測試 ] 按鈕以啟動測試。

您可以使用 [輸出窗格] 下方的按鈕進行測試時,停止或暫停 Runbook。 暫停 Runbook 時,它會先完成目前的活動後才暫停。 Runbook 一旦暫停,您可以選擇停止或重新啟動。

使用 PowerShell ISE 測試 Runbook

PowerShell ISE 附加元件提供 Cmdlet 來模擬標準活動,例如 Get-SMACredential 和 Set-SMAVariable,因此您可以如同任何其他腳本一樣,在本機計算機上測試 Runbook。

全域資產及其值會從自動化群組下載,以用於本機測試。 您可以在 [ 資產 ] 索引標籤上檢查或變更這些值。加密的值會顯示在橙色中,而且不會下載其值。 如果您想要在本機測試中使用這些資產,則必須在本機設定其值。

若要在 SMA 中測試 Runbook,請選取 [SMA 中的測試草稿]。 將會開啟新的視窗。 選取 [啟動新作業 ] 以啟動測試。 輸出會顯示在視窗中。

自動化 Runbook 範例

下列 Runbook 隨附於服務管理自動化作為範例 Runbook,以說明技術和最佳做法。 它們可用於適用於 Windows Server 的 Microsoft Azure Pack 中的自動化延伸模組。

Runbook 名稱 Description
Sample-Deleting-VMCloud-Subscription 示範當使用者刪除 VM Clouds 訂閱時,用於觸發 Runbook 的實用案例。
Sample-Managing-Azure 示範如何使用 Microsoft Azure PowerShell 模組連線到 Microsoft Azure 訂用帳戶並執行基本作業。
Sample-Managing-ConfigurationManager 示範服務管理自動化連線到 Configuration Manager的功能。
Sample-Managing-DataProtectionManager 示範如何連接至 Data Protection Manager (DPM) 伺服器,並且檢視 DPM 伺服器上所找到的磁碟的相關資訊。
Sample-Managing-MySQLServers 示範如何擷取安全性權杖,以用來擷取主機伺服器的清單。
Sample-Managing-OperationsManager 示範服務管理自動化連線至 System Center Operations Manager 的功能。
Sample-Managing-Orchestrator 示範如何連線到 System Center Orchestrator 並啟動 Orchestrator Runbook,以使用您現有的基礎結構。
Sample-Managing-Plans 示範如何建立新計劃以及新增具有定義配額的 SQL Server 服務至新計劃中。
Sample-Managing-ServiceBusClouds 示範如何連接至 Service Bus Cloud 伺服器並且檢視所建立命名空間的相關資訊。
Sample-Managing-SQLServers 示範如何建立新伺服器群組以及新增 SQL 主控伺服器。
Sample-Managing-UserAccounts 示範如何在適用於 Windows Server 的 Microsoft Azure Pack 中建立使用者,這會在 Microsoft Azure Pack 中建立,並在系統管理員使用者擴充功能的管理入口網站中顯示。 不過,此使用者也應該整合至驗證提供者 (例如,AuthSite) 來存取租使用者的管理入口網站,此範例中不包含此入口網站。
Sample-Managing-VirtualMachineManager 示範如何連接至 Virtual Machine Manager (VMM) 伺服器以及檢視 VMM 伺服器授權的相關資訊。
Sample-Managing-VMClouds 示範如何存取 Service Provider Foundation 伺服器的資料庫連線的相關資訊,關於由 Service Provider Foundation 管理的 VMM 伺服器物件的相關資訊。
Sample-Managing-WebSiteCloud 示範如何連接至 Web Site Clouds 控制器伺服器,以及檢視部署了 Web Site Clouds 的伺服器的相關資訊。
Sample-Modify-VMCloud-Subscription 示範當租用戶或系統管理員暫停或啟動 VM Clouds 訂閱時,用於觸發 Runbook 的實用案例。
Sample-Using-Activities 示範服務管理自動化使用活動的功能
Sample-Using-Checkpoints 示範在服務管理自動化中使用檢查點的功能。
Sample-Using-Connections 示範服務管理自動化的功能,以使用連線連線連線連線到遠端系統。
Sample-Using-Credentials 示範服務管理自動化使用認證的功能,並輸出服務管理自動化 Runbook 執行身分的使用者。 然後,便會連線至伺服器 'ServerName' 並且輸出 'SampleCredential' 指定存取伺服器的使用者。
Sample-Using-Modules 示範在 Runbook 中匯入模組,並且在伺服器 'ServerName' 上輸出已匯入模組的數量。 然後,匯入 'ModulePath' 所指定的模組,並且輸出新模組計數以及對應新匯入模組的資訊。
Sample-Using-RunbookParameters 示範如何使用 Runbook 的輸入參數並且指定是否需要參數,提供預設參數值以及稍後在工作流程中使用參數值。
Sample-Using-Runbooks 示範如何從另一個 Runbook 中呼叫 Runbook。
Sample-Using-SuspendWorkflow 示範如何強制暫停 Runbook。 如果在 Runbook 應該繼續之前需要手動步驟,例如接收特定人員的註銷核准,這非常有用。 在完成手動步驟後,暫停的 Runbook 將會以手動方式恢復以繼續執行 Runbook。
Sample-Using-Variables 示範服務管理自動化使用變數的功能。
Sample-Using-VMCloud-Automation 示範在啟動 Service Provider Foundation 事件時觸發 Runbook 的實用案例。

下一步