管理 Service Management Automation 的 Runbook
身為服務管理自動化 (SMA) 系統管理員,您必須設定及執行 Runbook。 包括設定 Runbook 背景工作角色和排程和追蹤 Runbook 的活動。 除了您撰寫的 Runbook 之外,SMA 還包含兩個系統 Runbook:
- DiscoverAllLocalModules:安裝 Runbook 背景工作角色之後立即執行。 此 Runbook 會探索安裝 Runbook 背景工作角色之 Windows Server 系統上的所有原生模組。 它會擷取這些模組的活動和活動元數據,以便在 azure Pack Microsoft 中撰寫 Runbook 時使用其活動。
- SetAutomationModuleActivityMetadata:將模組匯入 SMA 後立即執行。 此 Runbook 會從新匯入的模組擷取活動和活動元數據,以便在您在 Microsoft Azure Pack 中撰寫 Runbook 時使用其活動。
設定 Runbook 背景工作角色
根據預設,當您在 SMA 中啟動 Runbook 作業時,會由隨機 Runbook 背景工作角色挑選。 不過,您可能想要使用特定的 Runbook 背景工作角色。 若要這樣做,請使用 RunbookWorker 屬性。 深入瞭解 Runbook 執行。
使用 PowerShell ISE 附加元件指定 Runbook 背景工作角色。
- 在 SMA ISE 附加元件 >元件組態中,使用您的 SMA 帳戶登入。 登入之後,您可以在 [Runbook] 索引標籤中看到 Runbook。
- 在 [ Runbook] 索引標籤中 ,選取一或多個要針對特定 Runbook 背景工作角色執行的 Runbook。
- 選取 [ 設定],然後在 [ 設定 Runbook 屬性] 中,從下拉功能表中選取 Runbook 背景工作角色。
- 選取 [ 進行變更]。
透過 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 建立排程。
在管理入口網站中建立排程
- 在管理入口網站中,選取 [自動化] 。
- 在 [資產] 索引標籤中,選取 [新增設定>新增排程]。
- 輸入新排程的名稱和描述,然後選取它是否會執行 一次 或 每日。
- 指定 [ 開始時間],並視需要指定其他選項。 開始時間的時區將與本機電腦的時區相符。
使用 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 有參數,則您可以提供值供 Runbook 啟動時使用。 您必須為每個必要參數提供值。
在管理入口網站中連結排程
- 在管理入口網站中,選取 [自動化>Runbook]。
- 選取要排程的 Runbook 名稱,然後選取 [ 排程] 索引標籤。
- 如果 Runbook 目前已連結至排程,請選取 [ 連結]。 然後選取 [ 鏈接至新排程],然後建立新的排程,或選取 [ 鏈接至現有的排程 ],然後選取排程。
- 如果 Runbook 擁有參數,將會提示您提供值。
使用 Windows PowerShell 連結排程
您可以使用 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腳本 Runbook Runbook 的 Runbook 作業生命週期。
工作狀態
下表描述作業可能會有的不同狀態。
狀態 | 描述 |
---|---|
已完成 | 作業已順利完成。 |
失敗 | 作業已結束並發生例外狀況。 |
佇列 | 作業正在等候 Automation Worker 上的資源可用,以便能夠啟動。 |
啟動中 | 作業已指派給 Worker,且系統正在啟動它。 |
繼續中 | 系統正在作業暫停後繼續作業。 |
執行中 | 作業正在執行。 |
已停止 | 作業在完成前由使用者停止作業。 |
正在停止 | 系統正在停止作業。 |
暫止 | 作業已由使用者、系統或是 Runbook 中的命令暫停。 暫停的作業可以再次啟動。 如果 Runbook 沒有檢查點,則會從其最後一個檢查點繼續,或從 Runbook 的開頭繼續。 只有在有可能繼續的例外狀況時,系統才會暫停 Runbook。 根據預設, ErrorActionPreference 會設定為 [繼續],這表示作業會在發生例外狀況時繼續執行。 如果此變數設定為 [停止],則會在發生例外狀況時暫停作業。 |
暫停中 | 系統會在使用者的要求下嘗試暫停作業。 Runbook 必須達到其下一個檢查點才能暫停。 如果它已經通過其最後一個檢查點,則會先完成再暫停。 |
在管理入口網站中檢視作業狀態
自動化儀錶板會顯示 SMA 環境中所有 Runbook 的摘要。
- 摘要圖表會顯示指定天數或小時數內所有進入各狀態之 Runbook 的總作業數。
- 您可以在圖表右上角選取時間範圍。
- 圖表的時間軸會根據您選取的時間範圍類型而變更。
- 您可以選擇是否要在畫面頂端按下該行來顯示特定狀態的行。
如下所示顯示儀錶板:
- 在管理入口網站中,選取 [自動化] 。
- 選取 [儀表板] 索引標籤。
顯示儀錶板
Runbook 儀表板會顯示單一 Runbook 的摘要。 摘要圖表會顯示指定天數或小時數內進入各狀態之 Runbook 的總作業數。 您可以選取圖表右上角的時間範圍。 圖表的時間軸會根據您選取的時間範圍類型而變更。 您可以選擇是否要在畫面頂端按下該行來顯示特定狀態的行。
如下所示顯示儀錶板:
- 在管理入口網站中,選取 [自動化] 。
- 選取 Runbook 的名稱。
- 選取 [儀表板] 索引標籤。
檢視作業詳細資料
您可以檢視針對特定 Runbook 及其最新狀態建立的所有作業清單。
- 您可以依作業狀態和上次變更作業的日期範圍來篩選清單。
- 選取作業的名稱,以檢視其詳細資訊及其輸出。
- 作業的詳細檢視包含已提供給該作業之 Runbook 參數的值。
- 作業記錄包含了輸出、警告和錯誤訊息,並具有記錄建立時的時間戳記。
- 深入瞭解 Runbook 輸出和訊息。
- 作業的來源是執行作業時工作流程的原始碼。 如果工作流程的原始碼在執行作業之後有更新,可能會不同於 Runbook 目前的版本。
您可以使用下列步驟檢視 Runbook 的作業。
- 在管理入口網站中,選取 [自動化] 。
- 選取 Runbook 的名稱,然後選取 [ 作業] 索引標籤。
- 選取作業的 [ 作業建立] 數據行,以檢視其詳細數據和輸出。
- 選取 [記錄] 索引標籤來檢視作業記錄。 選取記錄,然後選取 畫面底部的 [檢視詳細 數據],以取得記錄的詳細檢視。
- 從 [歷程記錄] 索引標籤中,選取 [檢視來源]。
使用 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 之後,您無法變更 Runbook 的名稱。 描述 是選擇性的,且最多可以包含 512 個字元。
標籤
Tag 可讓您指定不同的字和片語以協助識別 Runbook。 您可以使用逗號區隔 Tag 來為 Runbook 指定多個 Tag。
記錄
根據預設,詳細資訊和進度記錄不會寫入作業歷程記錄。 您可以變更特定 Runbook 的設定以記錄這些記錄項目。 如需這些記錄項目的詳細資訊,請參閱 Runbook Output and Messages。
指定的 Runbook 背景工作角色
根據預設,Runbook 作業會指派給要執行的隨機 Runbook 背景工作角色。 您可以變更特定 Runbook 的設定,以在特定 Runbook 背景工作角色上執行 Runbook。
在管理入口網站中變更 Runbook 設定
您可以從 Runbook 的 [設定] 頁面,變更管理入口網站中 Runbook 的設定。
在管理入口網站中,選取 [自動化] 。
選取 [Runbook] 索引標籤。
選取 Runbook 的名稱。
選取 [設定] 索引標籤。
使用 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 Server 之間的連線。