您可以將 Runbook 設計工具中的活動連結在一起,以設定 Runbook 中的作業順序。 這些連結稱為 智慧連結,因為您可以設定這些連結 來控制從某個活動傳遞至另一個活動的數據類型。 您也可以藉由設定這些作業使用內嵌迴圈執行的邏輯,來控制 Runbook 何時完成活動。 最後,您可以使用文字和數值作業在活動之間傳遞時操作數據,或設定作業順序的條件。 本文說明如何控制 Runbook 內的排序和操作數據。
使用智慧連結控制活動順序
Runbook 中的活動會按照您設定的順序完成,因為它們是互相連結的。 您可以使用 [鏈接屬性] 的 [包含] 和 [排除] 索引標籤,控制活動之間流動的數據。 例如,您只能包含要傳遞至符合特定準則之後續活動的數據。
重要
智慧連結 [排除] 索引標籤的規則,會取代智慧連結 [包含] 索引標籤的規則。
重要
每個頁籤上的規則是通過使用 [或] 條件來連接的。 只要索引標籤中所定義的條件中有一個成立,整個條件即被視為成立。
活動發佈的數據類型決定了您可以設定來控制 Runbook 執行順序的準則類型。 某些活動會發佈二進位數據,而其他活動則發佈數值或文字數據。
如果已發佈的數據是文字數據,您可以使用下列任一項來設定執行、包含或排除的準則。
狀況 | 描述 |
---|---|
包含 | 指定的文字出現在已發佈資料項目值的某個部分。 |
不包含 | 指定的文字未出現在已發佈資料項目值的某個部分。 |
開頭為 | 已發佈的資料項目的值以指定的文字開頭。 |
結尾為 | 已發佈資料項目值以指定的文字結束。 |
符合模式 | 已發佈資料項目值符合特定的正則表達式。 |
不符合模式 | 已發佈資料項目值符合特定的正則表達式。 |
等於 | 已發佈資料項目值與指定的文字完全相符。 |
不等於 | 已發佈資料項目值與指定的文字不符。 |
注意
文字值不區分大小寫。
您也可以使用正規表示式來設定準則來執行模式比對。
如果已發佈的數據是數值,您可以使用下列任一項來設定執行、包含或排除的準則。
狀況 | 描述 |
---|---|
等於 | 已發佈資料項目的值與指定的值完全相等。 |
不等於 | 已發佈資料項目的值不等於指定的值。 |
小於 | 已發佈資料項目的值小於指定的值。 |
大於 | 已發佈資料項目的值大於指定的值。 |
小於或等於 | 已發佈資料項目的值小於或等於指定的值。 |
大於或等於 | 已發佈資料項目的值大於或等於指定的值。 |
介於 | 已發佈資料項目的值介於兩個指定的值之間。 |
選取必要的索引標籤,以取得新增或移除智慧連結條件的步驟:
請遵循下列步驟來新增智慧連結條件:
以滑鼠右鍵按兩下智慧連結,選取 [ 屬性 ] 以開啟 [ 鏈接屬性 ] 對話框。
重要
若要變更構成規則的值,您必須選取智慧連結條件中每一個加底線的部分。
選取條件中所列的活動,以開啟 [ 已發佈的數據] 對話框。
選取 [顯示常見返回的資料] 方塊,以顯示所有活動共有的屬性。
從 [已發佈的數據] 中選取屬性,然後選取 [ 確定]。 準則表達式會隨著屬性傳回的資料類型而改變。
若要變更表達式的不同部分,請選取加底線的文字,然後選取或輸入適當的值。
選取 [完成]。
使用嵌入式迴圈重複執行活動
藉由使用迴圈,您可以在 Runbook 中的任何位置建置自動重試和監視。
您可以為任何活動建立迴圈,以便在作業失敗時重試作業,或測試活動的輸出資訊以取得有效的數據。 您也可以使用這些機制,在您的工作流程中建置等候條件。
當您設定活動的循環時,它會繼續使用相同的輸入數據執行,直到達到所需的結束迴圈準則為止。 您可以使用類似智慧連結組態的方式來建置循環的結束準則。 您可以使用活動中的任何已發佈資料項作為退出或不退出設定的一部分。 包含在常見的已發佈數據中是特殊數據項,例如 迴圈:嘗試 次數和 迴圈:總持續時間,可讓您在迴圈條件中使用迴圈本身的資訊。
每個輸入數據片段被傳送到活動時,循環都會運行一次。 例如,請考慮一個使用查詢資料庫活動,然後執行附加行的Runbook。 如果查詢資料庫活動傳回三個數據列,則 Append Line 活動會執行三次。 如果您在Append Line 活動中有迴圈,它會執行三個獨立的迴圈。 在第一個數據項循環執行Append Line活動之後,下一個數據項會經過Append Line並迴圈直到結束,然後第三個開始。 處理好所有三個項目之後,Runbook 中的下一個活動就會運行。
設定迴圈
在 Runbook 中的活動上按一下右鍵,然後選取 迴圈。 「迴圈屬性」 對話框隨即開啟。
在 [ 一般] 索引標籤上,選取 [ 啟用]。
在 [ 嘗試 之間的延遲] 方塊中,輸入每次嘗試執行活動時暫停的秒數。
退出與不退出條件
結束索引標籤上的規則指定判斷迴圈是否結束的條件。 不要結束標籤上的規則指定了使循環持續的條件。
重要
[不要結束] 索引標籤上的規則會取代[結束] 索引標籤上的規則。
每個索引標籤內的規則都會使用 Or 條件來聯結。 索引標籤上的條件只要有一個成立,整個索引標籤就視為 true。
選取程式的必要索引標籤,以新增或移除 結束 條件:
請遵循下列步驟來新增結束條件:
在 [ 迴圈屬性] 對話框中,選取 [結束 ] 索引卷標或 [不要結束 ] 索引卷標,然後選取方塊中所列的條件,選取 [新增 ] 以新增條件。
重要
若要變更構成規則的值,您必須選取連結條件的每個底線部分。
選取條件中所列的活動,以開啟 [ 已發佈的數據] 對話框。
核取 [ 顯示通用傳回的數據 ] 方塊,以顯示所有活動通用的屬性。
從已發佈的數據中選取屬性,然後選取 [ 確定]。 準則表達式會隨著屬性傳回的資料類型而改變。
若要變更表達式的不同部分,請選取加底線的文字,然後選取或輸入適當的值。
選取 [完成]。
設定 Runbook 的排程
您可以設定排程,藉此控制執行腳本的時間。 例如,有時候執行某些 Runbooks 不太合適,例如在一般上班時間備份主要伺服器上的 Runbooks。 您可以建立一個根據複合式時間間隔執行的排程,例如每個月第一個及第三個星期一和星期四,假日除外。
排程會使用執行 Runbook 之 Runbook 伺服器的系統時鐘。 如此可讓排程在虛擬機器環境中運作,即使系統時鐘因日光節約時間而做前後調整,也能繼續執行排程。
在禁止時間之前啟動的 Runbook 會繼續運行直到完成,即使禁止時間到時仍在處理中。 處理程序開始後,不會中斷。
重要
您可以修改排程的訪問許可權,但 Runbook 伺服器不會強制執行這些許可權。
注意
如果您將執行手冊排程在因系統時鐘向前調整一小時而被略過的時間啟動,該開始時間會被略過,且執行手冊會在下一個排程時間啟動。 如果您排程 Runbook 在因為系統時鐘向後調整一小時而重複出現的某小時內啟動,Runbook 就會啟動兩次。
注意
Orchestrator 不支援透過多重選取來移動多個排程。 若要將多個排程移到其他資料夾,您必須個別移動每個排程。
選取必要的索引標籤以建立排程、將排程指派給 Runbook,或從 Runbook 移除排程:
請遵循下列步驟來建立排程:
在 [連線] 窗格中,以滑鼠右鍵按兩下 [排程] 資料夾或 [排程] 資料夾的子資料夾,指向 [新增],然後選取 [排程] 以開啟 [新增排程] 對話框。
在 [一般] 索引標籤的 [名稱] 方塊中,輸入排程的名稱。
在 [ 描述 ] 方塊中,輸入描述或說明排程用途的描述。
選取 [ 詳細資料] 索引標籤。選取此排程允許 Runbook 執行的天數:
[一週天數]:選取此選項,並選取一週中此排程允許 Runbook 執行的天數。
[出現頻率]:選擇每月中排程允許 Runbook 執行的週數。
[每月天數]:選取此選項,並選取每月中此排程允許 Runbook 執行的天數。 指定月份中的某天,請輸入日期數字。 您可以使用連字號描述範圍,並可使用逗號分隔項目。 例如,輸入 1,3 包含當月的第一天和第三天。 輸入 1-21 包括當月第一天到第二十一天。 合併兩者,即可建立一個對每月天數的複合式描述。 輸入 all 以指定月份的所有天數。 輸入 last 以指定月份的最後一天。
您無法使用 所有 和 最後一天 作為日期範圍的一部分。 此外,如果您輸入的範圍為5-31,則此範圍適用於所有月份,包括28、29、30和31天的月份。
選取 [時數 ] 以開啟 [ 排程時數] 對話框。
選取並拖曳以選取一周中的一組時數。 對話框底部的文字會顯示您選取的時間週期。 然後選取下列其中一項:
允許 (藍色):將您選取的時間範圍指派為允許 Runbooks 執行的時間。
拒絕 (白色):將您選取的時間範圍指派為不允許 Runbooks 執行的時間。
選取 確定。
選取 [例外狀況] 索引標籤。此清單會顯示 [詳細資料] 索引標籤中定義之規則例外的所有天數。
選取 [ 新增 ] 以開啟 [ 日期] 對話框。
指定日期,然後選取[允許]或[不允許]來決定 Runbook 是否可以在該天執行,然後選取[確定]。 此項目會出現在清單中。
若要修改例外狀況條目,請選取它,然後選取修改。 若要移除例外條目,請選取它,然後選擇移除。
若要修改排程,可按兩下 [排程] 。
若要移除排程,可以在 [排程] 上按一下滑鼠右鍵,然後選取 [刪除] 。
選取 [完成]。
使用函式操作數據
您可能需要操作文本文件、傳回的數據或其他來源的字串數據,並將其轉換成 Runbook 活動的可用表單。 此外,您可以執行簡單的算術運算,例如計算總和和和差異,以及執行除法和乘法運算。 舉例來說,您可以使用「文字檔管理」 活動從文字檔擷取文字、修剪文字中的前置和後端空格,然後擷取文字可傳遞至其他活動作為傳回資料項目的特定部分。
您可以藉由插入函式來操作 Runbook 中的數據。 資料操作函式必須在方括弧 ('[' 和 ']') 內。 例如:
[Upper('this will be inserted in upper case')]
當執行活動時,範例中的文字 'this will be inserted in uppercase' 將會以 'THIS WILL BE INSERTED IN UPPERCASE' 取代。
函式名稱區分大小寫。 例如,系統會處理 Upper('Text') 函數,但不會處理 upper('Text') 函數。
下表列出了 Runbook 支援的功能。
函數與定義 | 使用方式 | 參數 | 範例 |
---|---|---|---|
Upper - 將文字轉換成大寫字母。 | Upper('Text') | Text - 要轉換成大寫的文字。 | 函數 Upper('this will be converted to uppercase') 會返回 'THIS WILL BE CONVERTED TO UPPERCASE' |
Lower - 將文字轉換成小寫。 | 降低('Text') | Text - 要轉換成小寫的文字。 | Lower('This Will Be Converted To Lowercase') 會傳回 '這將被轉換為小寫' |
欄位 - 返回特定位置的文字。 | Field('Text', 'Delimiter', 欄位號碼) | Text - 要搜尋的文字。 Delimiter - 區隔每個欄位的字元。 Field Number - 要傳回的欄位位置 (從 1 開始)。 |
Field 函數 (例如:Field('John;Smith;9055552211', ';', 2)) 會傳回 'Smith'。 |
Sum - 傳回一組數字的總和。 | 求和(第一數字, 第二數字, 第三數字, ...) | 數 - 要相加的數量。 您可以輸入任何一組數字,並以逗號 (,) 區隔。 | Sum(2,3,4,5) 會傳回 '14' |
Diff - 傳回兩個數字的差額。 | Diff(Number1, Number2, <Precision>) | Number1 - 將被減去的數字。 Number2 - 這是將從 Number1 減去的數字。 精度 <可選> - 將結果四捨五入至指定的小數位數。 |
Diff(9, 7) 會傳回 '2' Diff(9.3, 2.1, 2) 會傳回 '7.20' |
Mult - 傳回一組數字的乘積。 | Mult(第一個數字, 第二個數字, 第三個數字, ...) | 數值 - 要相乘的數值。 您可以輸入任何一組數字,並以逗號 (,) 區隔。 | Mult(2, 3, 4) 回傳 '24' |
Div - 返回兩個數字的除法商。 | Div(Number1,Number2,<Precision>) | Number1 - 代表被除數。 Number2 是用來除以 Number1 的數字。 精度 <可選> - 將結果四捨五入至指定的小數位數。 |
Div(8, 4) 會傳回 '2' Div(9, 2, 2) 會傳回 '4.50' |
Instr - 傳回在另一段文字中首次出現的位置。 | Instr('SearchText','TextToFind') | SearchText - 被搜尋的文字。 TextToFind - 您要搜尋的文字。 |
Instr('This is a string that is searched', 'string') 會傳回 11 |
Right - 從整段文本的右側傳回一個文字子集。 | 取右側子字串('Text', 長度) | Text - 全文。 Length - 將傳回從右邊算起的字元數。 |
Right('從右邊取出', 9) 會傳回 'the right'。 |
Left - 返回從全文左側提取的文字子集。 | Left函數('文字內容', 長度) | Text - 全文。 長度 - 指定要從左邊傳回的字元數。 |
Left('取自左邊', 4) 會傳回 '取' |
Mid - 傳回從全文中間開始的字串子集。 | Mid 函數用法:Mid('Text', Start, Length) | Text - 全文。 Start - 文字中要開始返回字元的位置。 Length - 從開始位置開始傳回的字元數目。 |
Mid('從中間取出', 5, 4) 會傳回 'from' |
LTrim - 去除文字的前置空格。 | LTrim('Text') | Text - 正在修剪開頭空格的文本。 | LTrim(' 只移除前置空格。') 會傳回 '只移除前置空格。 ' |
RTrim - 修剪文字中的後端空格。 | RTrim('Text') | Text - 正在去除尾部空格的文字。 | RTrim(' 只移除尾端空格。') 會傳回 ' 只移除尾端空格。 |
Trim - 刪除文字前後的空格。 | Trim('文本') | Text -要 修剪的文字。 | Trim(' 移除前置和尾端空格。') 會傳回 '移除前置和尾端空格'。 |
Len - 傳回文字的長度。 | Len('文字') | 文本 - 要測量的文字。 | Len('Measure this text') 會傳回 17 |
注意
函式名稱區分大小寫。 例如,系統會處理 Upper('Text') 函數,但不會處理 upper('Text') 函數。
後續步驟
若要閱讀建立範例 Runbook 的引導式逐步解說,請參閱 建立和測試範例 Runbook。