管理 Service Management Automation 的 Runbook

重要

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

身為服務管理自動化 (SMA) 系統管理員,您必須設定和執行 Runbook。 包括設定 Runbook 背景工作角色和排程和追蹤 Runbook 的活動。 除了您撰寫的 Runbook 之外,還有兩個系統 Runbook 隨附於 SMA:

  • DiscoverAllLocalModules:在您安裝 Runbook 背景工作角色之後立即執行。 此 Runbook 會探索已安裝 Runbook 背景工作角色之 Windows Server 系統上的所有原生模組。 它會擷取這些模組的活動和活動元數據,以便在您在 Microsoft Azure Pack 中撰寫 Runbook 時使用其活動。
  • SetAutomationModuleActivityMetadata:在您將模組匯入 SMA 之後立即執行。 此 Runbook 會從新匯入的模組擷取活動和活動元數據,以便在您在 Microsoft Azure Pack 中撰寫 Runbook 時使用其活動。

設定 Runbook 背景工作角色

根據預設,當您在 SMA 中啟動 Runbook 作業時,它會由隨機 Runbook 背景工作角色挑選。 不過,您可能想要使用特定的 Runbook 背景工作角色。 若要這樣做,請使用 RunbookWorker 屬性。 深入瞭解 Runbook 執行。

使用 PowerShell ISE 附加元件指定 Runbook 背景工作角色。

  1. 在 SMA ISE 附加元件 >元件組態中,使用您的 SMA 帳戶登入。 登入之後,您可以在 [ Runbook] 索引標籤中看到您的 Runbook。
  2. 在 [ Runbook] 索引 標籤中,選取一或多個要針對特定 Runbook 背景工作角色執行的 Runbook。
  3. 選取 [設定],然後在 [ 設定 Runbook 屬性] 中,從下拉功能表中選取 Runbook 背景工作角色。
  4. 選取 [進行變更]。

透過 SMA PowerShell 模組指定 Runbook 背景工作角色

您也可以使用下列命令列命令來設定 Runbook 背景工作角色屬性:

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Sample-TestRunbook"
$workerName = "Worker1"

Set-SmaRunbookConfiguration -WebServiceEndpoint $webServer -Port $port -Name $runbookName -RunbookWorker $workerName

您可以看到部署的所有 Runbook 背景工作角色清單,如下所示:

$webServer = 'https://MyServer'
$port = 9090

Get-SmaRunbookWorkerDeployment -WebServiceEndpoint $webServer -Port $port

注意

您目前無法使用 Microsoft Azure Pack 入口網站來指定 Runbook 背景工作角色。 使用 SMA ISE 附加元件或 PowerShell Cmdlet。

排程 Runbook

若要排程 Runbook 以在指定的時間啟動,您可以將它連結至一或多個排程。 排程可以設定為執行一次,或設定為遞歸。 Runbook 可以連結至多個排程,而排程可以有多個與其連結的 Runbook。

建立排程

您可以使用管理入口網站或 Windows PowerShell 來建立排程。

在管理入口網站中建立排程

  1. 在管理入口網站中,選取 [自動化]
  2. 在 [ 資產] 索引 標籤中,選取 [ 新增設定>新增排程]。
  3. 輸入新排程的名稱和描述,然後選取它是否會執行 一次每日
  4. 視需要指定 開始時間和其他選項。 開始時間的時區將與本機電腦的時區相符。

使用 Windows PowerShell 建立排程

您可以使用 Set-SmaSchedule Cmdlet 來建立排程,或修改現有的排程。 您必須指定排程的開始時間,以及它是否應該重複執行一次或重複執行。

下列範例會建立稱為 「我的每日排程」的新排程。 它會在當天開始,並在下午一天繼續執行一年。

$webServer = 'https://MyServer'
$port = 9090
$scheduleName = 'My Daily Schedule'
$startTime = (Get-Date).Date.AddHours(12)
$expiryTime = $startTime.AddYears(1)

Set-SmaSchedule -WebServiceEndpoint $webServer -Port $port -Name $scheduleName -ScheduleType OneTimeSchedule -StartTime $startTime -ExpiryTime $expiryTime -DayInterval 1

Runbook 可以連結至多個排程,而排程可以有多個與其連結的 Runbook。 如果 Runbook 有參數,則您可以提供值,以供 Runbook 啟動時使用。 您必須為每個必要參數提供值。

  1. 在管理入口網站中,選取 [自動化>Runbook]。
  2. 選取要排程的 Runbook 名稱,然後選取 [ 排程] 索引標籤。
  3. 如果 Runbook 目前已連結至排程,請選取 [ 連結]。 然後選取 [ 鏈接到新的排程],然後建立新的排程,或選取 [ 鏈接到現有的排程 ],然後選取排程。
  4. 如果 Runbook 有參數,系統會提示您輸入它們的值。

您可以使用 Start-SmaRunbook 搭配 ScheduleName 參數來將排程連結至 Runbook。 您可以使用 Parameters 參數來指定值。 深入了解 參數值。

以下範例命令可顯示如何將排程連結至 Runbook。

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$scheduleName = "Sample-DailySchedule"

Start-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName -ScheduleName $scheduleName -Parameters $params

追蹤 Runbook

當您在 SMA 中啟動 Runbook 時,就會建立作業。 工作是 Runbook 的單一執行個體。 單一 Runbook 可能會有多個作業,每個作業都有自己的 Runbook 參數值集。

  • 如果填入 Runbook 的 RunbookWorker 屬性,則該背景工作伺服器會服務作業。
  • 如果背景工作伺服器無法使用,作業將會失敗,並出現錯誤。
  • 如果未填入 RunbookWorker 屬性,則 SMA 會隨機選取可用的背景工作伺服器來服務要求。

下圖顯示PowerShell工作流程 Runbook Runbook 的 Runbook 作業生命週期。

顯示 PowerShell 工作流程的圖表。

下圖顯示PowerShell腳本 Runbook Runbook 的 Runbook 作業生命週期。

顯示 PowerShell 腳本的圖表。

工作狀態

下表描述工作可能會有不同的狀態。

狀態 描述
Completed 工作已成功完成。
失敗 作業已結束並發生例外狀況。
已排入佇列 工作正在等候取得自動化背景工作中的資源,以便可啟動。
開始日期 工作已指派給背景工作,並且系統正在進行啟動。
繼續中 工作暫停後,系統正在繼續工作。
執行中 工作正在執行。
已停止 工作完成之前已由使用者停止。
停止中 系統正在停止工作。
暫止 工作已由使用者、系統或 Runbook 中的命令暫停。 暫停的作業可以再次啟動。 如果 Runbook 沒有檢查點,它會從其最後一個檢查點繼續,或從 Runbook 的開頭繼續。

只有在有可能繼續的例外狀況時,系統才會暫停 Runbook。 根據預設, ErrorActionPreference 會設定為 [繼續],這表示當發生例外狀況時,作業會持續執行。 如果此變數設定為 [停止],當發生例外狀況時,作業就會暫停。
Suspending 系統會嘗試在使用者的要求暫停作業。 Runbook 必須達到其下一個檢查點才能暫停。 如果它已經通過最後一個檢查點,則會在暫停之前完成。

在管理入口網站中檢視作業狀態

自動化儀錶板會顯示 SMA 環境中所有 Runbook 的摘要。

  • 針對經過指定的天數或小時數輸入每個狀態的所有 Runbook,摘要圖表會顯示其工作總數。
  • 您可以在圖表的右上角選取時間範圍。
  • 圖表的時間軸會根據您選取的時間範圍類型而變更。
  • 您可以選擇是否要在畫面頂端按下特定狀態來顯示該行。

如下所示顯示儀錶板:

  1. 在管理入口網站中,選取 [自動化]
  2. 選取 [儀表板] 索引標籤。

顯示儀錶板

Runbook 儀表板會顯示單一 Runbook 的摘要。 針對經過指定的天數或小時數輸入每個狀態的 Runbook,摘要圖表會顯示其工作總數。 您可以選取圖形右上角的時間範圍。 圖表的時間軸會根據您選取的時間範圍類型而變更。 您可以選擇是否要在畫面頂端按下特定狀態來顯示該行。

如下所示顯示儀錶板:

  1. 在管理入口網站中,選取 [自動化]
  2. 選取 Runbook 的名稱。
  3. 選取 [儀表板] 索引標籤。

檢視作業詳細資料

您可以檢視所有針對特定 Runbook 建立之作業的清單及其最新狀態。

  • 您可以依作業狀態和上次變更作業的日期範圍來篩選清單。
  • 選取作業的名稱,以檢視其詳細資訊及其輸出。
  • 工作的詳細檢視包含提供給該工作的 Runbook 參數值。
  • 作業記錄包含了輸出、警告和錯誤訊息,並具有記錄建立時的時間戳記。
  • 深入瞭解 Runbook 輸出和訊息
  • 作業的來源是執行作業時工作流程的原始碼。 如果工作流程的原始碼在執行作業之後有更新,可能會不同於 Runbook 目前的版本。

您可以使用下列步驟來檢視 Runbook 工作。

  1. 在管理入口網站中,選取 [自動化]
  2. 選取 Runbook 的名稱,然後選取 [ 作業] 索引 標籤。
  3. 選取作業的 [ 作業建立] 數據行,以檢視其詳細數據和輸出。
  4. 選取 [記錄] 索引標籤來檢視作業記錄。 選取記錄,然後選取畫面底部的 [ 檢視詳細 數據],以取得記錄的詳細檢視。
  5. 從 [ 歷程記錄] 索引標籤 中,選取 [ 檢視來源]。

使用 Windows PowerShell 擷取作業狀態

您可以使用 Get-SmaJob ,擷取針對 Runbook 建立的作業,以及特定作業的詳細資料。

  • 如果您使用 Start-SmaRunbook 啟動具有 Windows PowerShell 的 Runbook,則會傳回產生的作業。
  • 使用 Get-SmaJobOutput 來取得作業的輸出。

下列範例命令會擷取範例 Runbook 的最後一個作業,並顯示其狀態、提供給 Runbook 參數的值,以及作業的輸出。

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"

$job = (Get-SmaJob -WebServiceEndpoint $webServer -Port $port -RunbookName $runbookName | sort LastModifiedDate -desc)[0]
$job.Status
$job.JobParameters
Get-SmaJobOutput -WebServiceEndpoint $webServer -Port $port -Id $job.Id -Stream Output

設定 Runbook 設定

每個 Runbook 都有多個設定。 您可以使用這些設定來協助找出和管理 Runbook。 您也可以藉由設定這些設定來變更 Runbook 記錄。 以下說明上述每個設定,後面接著如何修改這些設定的程式。

名稱和描述

建立 Runbook 之後,您無法變更其名稱。 [描述] 是選擇性的,最多可以有 512 個字元。

標籤

標記可讓您指派不同的單字和片語,有助於識別 Runbook。 您可以為 Runbook 指定多個標記,使用逗號分隔。

記錄

根據預設,詳細資訊和進度記錄不會寫入作業記錄。 您可以變更特定 Runbook 的設定來記錄這些記錄。 如需有關這些記錄的詳細資訊,請參閱 Runbook 輸出和訊息

指定的 Runbook 背景工作角色

根據預設,Runbook 作業會指派給要執行的隨機 Runbook 背景工作角色。 您可以變更特定 Runbook 的設定,以在特定 Runbook 背景工作角色上執行 Runbook。

在管理入口網站中變更 Runbook 設定

您可以從 Runbook 的 [設定 ] 頁面, 在管理入口網站中變更 Runbook 的設定。

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

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

  3. 選取 Runbook 的名稱。

  4. 選取 [設定] 索引標籤。

使用 PowerShell 變更 Runbook 設定

您可以使用 Set-SmaRunbookConfiguration Cmdlet 來變更 Runbook 的所有設定,但標記除外。 您只能使用管理入口網站變更和新增現有 Runbook 的標籤。 當您使用 Import-SmaRunbook 匯入 Runbook 時,您只能使用 PowerShell 設定 Runbook 的標記。

下列命令範例示範如何設定 Runbook 的屬性。 此範例會新增描述,並指定應該記錄詳細信息記錄:

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Sample-TestRunbook"

Set-SmaRunbookConfiguration -WebServiceEndpoint $webServer -Port $port -Name $runbookName -Description "Sample runbook" -LogVerbose $true

加密 Runbook 背景工作角色和 SQL Server 連線

使用 SSL 保護 Runbook 背景工作進程與 SQL 伺服器之間的連線。

下一步