共用方式為


如何啟動 Runbook

 

適用於: Windows Azure Pack for Windows Server

您可以使用下列三種方法其中一種在 服務管理自動化 中啟動 Runbook。

前兩種方法在下面使用文件說明。從另一個 Runbook 呼叫 Runbook 的文件說明位於 從另一個 Runbook 啟動 Runbook

從 Windows Azure Pack 管理入口網站啟動 Runbook

  1. 在管理入口網站中,於左邊窗格選取 [自動化]。

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

  3. 選取 Runbook,然後按一下 [啟動]。

  4. 如果 Runbook 具有參數,系統會針對每個參數使用文字方塊提示您提供值。布林值與日期時間參數具有特殊的選取器,而非標準的文字方塊。請參閱下面的 Runbook 參數 以進一步了解參數的詳細資料。

  5. 選取 [正在啟動 Runbook] 訊息旁邊的 [檢視作業] 或選取 Runbook 的 [作業] 索引標籤來檢視作業的狀態。

使用 Windows PowerShell 啟動 Runbook

您可以搭配 Windows PowerShell 使用 Start-SmaRunbook 來啟動 Runbook。以下範例程式碼會啟動名為 Test-Runbook 的 Runbook。

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
Start-SmaRunbook –WebServiceEndpoint $webServer –Port $port –Name $runbookName

Start-SmaRunbook 會傳回作業物件,您可以在 Runbook 啟動之後用它來追蹤其狀態。然後您可以使用此作業物件搭配 Get-SmaJob 來判斷作業的狀態,以及搭配 Get-SmaJobOutput 來取得其輸出。以下範例程式碼會啟動名為 Test-Runbook 的 Runbook,然後等待它完成並顯示其輸出。

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

$job = Start-SmaRunbook –WebServiceEndpoint $webServer –Port $port –Name $runbookName

$doLoop = $true
While ($doLoop) {
   $job = Get-SmaJob –WebServiceEndpoint $webServer –Port $port -Id $job.Id
   $status = $job.Status
   $doLoop = (($status -ne "Completed") -and ($status -ne "Failed") -and ($status -ne "Suspended") -and ($status -ne "Stopped") 
}

Get-SmaJobOutput –WebServiceEndpoint $webServer –Port $port -Id $job.Id –Stream Output

如果 Runbook 需要參數,您就必須以 hashtable 提供參數,其中 hashtable 的索引鍵與參數名稱相符,且值就是參數值。下列範例顯示如何使用兩個名為 FirstName 和 LastName 的字串參數、名為 RepeatCount 的整數,以及名為 Show 的布林值參數來啟動 Runbook。如需參數的其他資訊,請參閱下面的 Runbook 參數。

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

$params = @{"FirstName"="Joe";"LastName"="Smith";"RepeatCount"=2;"Show"=$true}
Start-SmaRunbook –WebServiceEndpoint $webServer –Port $port –Name $runbookName –Parameters $params

Runbook 參數

參數是 Runbook 啟動時必要的值。例如,可以建立新虛擬機器的 Runbook 應該會有一個參數供您指定電腦名稱。如果參數是強制性參數,您就必須在啟動 Runbook 時提供參數值。如果參數不是強制性參數,您就可以選擇是否提供參數。

當您使用管理入口網站或 Windows PowerShell 啟動 Runbook 時,會透過自動化 Web 服務傳送指示。此服務不支援具有複雜資料類型的參數。如果您需要為複雜參數提供值,您必須從另一個 Runbook 以內嵌方式呼叫它,如 從另一個 Runbook 啟動 Runbook 中所述。

自動化 Web 服務將為使用特定資料類型的參數提供特殊功能,如下列小節所述。

具名的值

如果參數是 [object] 資料類型,您就可以使用以下 JSON 格式來傳送具名值的清單給參數:{"Name1":Value1, "Name2":Value2, "Name3":Value3}。這些值必須是簡單類型。Runbook 將以具備和每個具名值相對應之屬性的 PSCustomObject 的方式收到參數。

請參考以下可接受名為 user 之參數的測試 Runbook。

Workflow Test-Parameters
{
   param ( 
      [Parameter(Mandatory=$true)][object]$user
   )
    if ($user.Show) {
        foreach ($i in 1..$user.RepeatCount) {
            $user.FirstName
            $user.LastName
        }
    } 
}

以下文字可用於 user 參數。

{"FirstName":"Joe","LastName":"Smith","RepeatCount":2,"Show":true}

這會產生以下輸出。

Joe
Smith
Joe
Smith

陣列

如果參數是像 [array] 或 [string[]] 這樣的陣列,您就可以使用以下 JSON 格式來傳送值的清單給參數:[Value1,Value2,Value3]。這些值必須是簡單類型。

請參考以下可接受名為 user 之參數的測試 Runbook。

Workflow Test-Parameters
{
   param ( 
      [Parameter(Mandatory=$true)][array]$user
   )
    if ($user[3]) {
        foreach ($i in 1..$user[2]) {
            $ user[0]
            $ user[1]
        }
    } 
}

以下文字可用於 user 參數。

["Joe","Smith",2,true]

這會產生以下輸出。

Joe
Smith
Joe
Smith

認證

如果參數是 [PSCredential] 資料類型,您就可以提供 服務管理自動化 認證資產的名稱。Runbook 將會抓取具有您指定之名稱的 認證資產

請參考以下接受名為 credential 之參數的測試 Runbook。

Workflow Test-Parameters
{
   param ( 
      [Parameter(Mandatory=$true)][PSCredential]$credential
   )
   $credential.UserName
}

以下測試可能用於假設有名為 "MyCredential" 之認證資產的 user 參數。

MyCredential

假設認證中的使用者名稱是 jsmith,就會產生以下輸出結果。

jsmith