Share via


使用全域資產簡化服務管理自動化 Runbook 撰寫

重要

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

全域資產可供自動化環境中的所有 Runbook 使用。 您可以使用管理入口網站中的自動化工作區,或 Windows PowerShell 中適當的指令程式來建立及設定這些資源。 在 Runbook 中,您可以為 RunbookConstructs 模組中的活動擷取及設定全域資產的值。 Windows PowerShell Cmdlet 可用於服務管理自動化中的 Runbook,但建議活動更有效率,因為它們不需要透過自動化 Web 服務運作。

取得或設定認證

自動化認證是可以在 Windows PowerShell 命令中使用的使用者名稱及密碼,或是上傳至伺服器的憑證。 認證的屬性會安全地儲存在自動化資料庫中,而且可以使用 Get-AutomationPSCredentialGet-AutomationCertificate 活動在 Runbook 中存取。

用於管理認證的 PowerShell

您可以使用下表中的 Cmdlet,在服務管理自動化中使用 Windows PowerShell 來建立和管理認證。

指令程式 描述
Get-SmaCertificate 擷取自動化憑證。
Get-SmaCredential 擷取自動化PowerShell認證。
Remove-SmaCertificate 拿掉自動化憑證。
Remove-SmaCredential 拿掉自動化PowerShell認證。
Set-SmaCertificate 建立新的憑證,或設定現有憑證的屬性,包括上傳憑證檔案和設定.pfx 的密碼。
Set-SmaCredential 建立新的自動化 PowerShell 認證,或設定現有認證的屬性。

用於使用認證的 PowerShell

您可以使用下表中的活動來存取 Runbook 中的認證。

活動 描述
Get-AutomationCertificate 取得在 Runbook 中使用的憑證。
Get-AutomationPSCredential 取得要在 Runbook 中使用的使用者名稱/密碼。

注意

您應該避免在 Get-AutomationPSCredentialGet-AutomationCertificate 的 Name 參數中使用變數,因為這會使探索 Runbook 與 Automation 變數之間的相依性變得複雜。

在管理入口網站中建立PowerShell認證

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

  2. 在視窗頂端,選取 [ 資產]。

  3. 在視窗底部,選取 [ 新增設定]。

  4. 選取 [新增認證]。

  5. 在 [認證類型] 下拉式清單中,選取 [PowerShell 認證]

  6. 在 [ 名稱 ] 方塊中輸入認證的名稱。

  7. 選取向右箭號。

  8. 輸入每個屬性的值。

  9. 選取複選標記以儲存認證。

在 中建立憑證

管理入口網站

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

  2. 在視窗頂端,選取 [ 資產]。

  3. 在視窗底部,選取 [ 新增設定]。

  4. 選取 [新增認證]。

  5. 在 [認證類型] 下拉式清單中,選取 [憑證]

  6. 在 [ 名稱 ] 方塊中輸入憑證的名稱。

  7. 選取向右箭號。

  8. 選取 [瀏覽檔案 ],然後流覽至 .cer 或 .pfx 檔案。

  9. 如果您選取 .pfx 檔案,請提供其密碼。

  10. 選取複選標記以儲存憑證。

使用 PowerShell 建立認證

下列命令範例示範如何建立新的認證。

$webServer = 'https://MyWebServer'
$port = 9090
$credName = 'MyCredential'
$user = 'contoso\MyUser'
$pwd = ConvertTo-SecureString -String 'P@$$w0rd' -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user,$pwd

Set-SmaCredential -WebServiceEndpoint $webServer -port $port -Name $credName -Value $cred

在 Service Management Automation 中使用 Windows PowerShell 建立新 PowerShell 憑證

下列命令範例示範如何匯入憑證檔案以建立新憑證。

$webServer = 'https://MyWebServer'
$port = 9090
$certName = 'MyCertificate'
$path = 'c:\certs\MyCertificate.pfx'
$certPwd = ConvertTo-SecureString -String 'P@$$w0rd' -AsPlainText -Force

Set-SmaCertificate -WebServiceEndpoint $webServer -port $port -Name $certName -Path $certPath -Password $certPwd

在 Runbook 中使用 PowerShell 認證

使用 Get-AutomationPSCredential 活動擷取 Runbook 中的 PowerShell 認證。 這會傳回可在工作流程中使用的 PSCredential 物件。

  • 下列範例命令顯示如何在 Runbook 中使用 PowerShell 認證。 在此範例中,認證會使用 InlineScript 活動,使用替代認證以執行一組命令。

    $myCredential = Get-AutomationPSCredential -Name 'MyCredential'
    InlineScript {
       <Commands>
    } -PSComputerName $ServerName -PSCredential $myCredential
    

管理 SMA 連線

自動化連線包含從 Runbook 連線至服務或應用程式所需的資訊。 這項資訊定義於應用程式的模組,且通常包含使用者名稱、密碼及連線的電腦等資訊。 可能也需要其他資訊,例如憑證或訂用帳戶標識碼。 聯機的屬性會安全地儲存在自動化資料庫中,而且可以使用 Get-AutomationConnection 活動在 Runbook 中存取。

Windows PowerShell Cmdlet

您可以使用下表中的 Windows PowerShell Cmdlet 來建立和管理認證。

指令程式 描述
Get-SmaConnection 擷取特定連線中每個欄位的值。
Get-SmaConnectionField 擷取特定連線類型的欄位定義。
Get-SmaConnectionType 擷取可用的連線類型。
New-SmaConnection 建立新連接。
Remove-SmaConnection 移除現有的連接。
Set-SmaConnectionFieldValue 設定現有連接的特定欄位的值。

Runbook 活動

您可以使用下表中的活動來存取 Runbook 中的連線。

活動 Description
Get-AutomationConnection 取得在 Runbook 中使用的連線。

在管理入口網站中建立連線

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

  2. 在視窗頂端,選取 [ 資產]。

  3. 在視窗底部,選取 [ 新增設定]。

  4. 選取 [新增連線]。

  5. 在 [連線類型] 下拉式清單中,選取連線類型。

  6. 在 [ 名稱 ] 方塊中輸入連線的名稱。

  7. 選取向右箭號。

  8. 輸入每個屬性的值。

  9. 選取複選標記以儲存連線。

使用 Windows PowerShell 建立連線

下列命令範例會使用名稱 MyVMMConnection 建立新的 Virtual Machine Manager 連線。

注意

我們會使用哈希表來定義連接的屬性。 這是因為不同類型的連線需要不同的屬性集。 另一種類型的連線會使用一組不同的欄位值。

如需雜湊表的相關詳細資訊,請參閱 about_Hash_Tables

$webServer = 'https://MyWebServer'
$port = 9090
$connectionName = 'MyConnection'
$fieldValues = @{"Username"="MyUser";"Password"="password";"ComputerName"="MyComputer"}
New-SmaConnection -WebServiceEndpoint $webServer -port $port -Name $connectionName -ConnectionTypeName "VirtualMachineManager" -ConnectionFieldValues $fieldValues

在 Runbook 中使用連線

使用 Get-AutomationConnection 活動在 Runbook 中使用連線。 此活動會擷取連接中不同欄位的值,並將它們當做哈希表傳回,然後可以搭配 Runbook 中的適當命令使用。

如需雜湊表的相關詳細資訊,請參閱 about_Hash_Tables

下列程式碼範例示範如何使用連線,為另一部電腦上執行命令的 InlineScript 區塊提供電腦名稱與認證。

$con = Get-AutomationConnection -Name 'MyConnection'
$securepassword = ConvertTo-SecureString -AsPlainText -String $con.Password -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $con.Username, $securepassword
InlineScript {
   <Commands>
} -PSComputerName $con.ComputerName -PSCredential $cred

使用全域變數簡化 Runbook 開發

自動化變數是適用於所有 Runbook 的值。 您可以從管理入口網站、Windows PowerShell 或 Runbook 中建立、修改和擷取它們。 自動化變數對下列案例很實用:

  • 在多個 Runbook 之間共用一個值。

  • 從相同 Runbook 的多個工作之間共用一個值。

  • 從管理入口網站,或從 Runbook 使用的 Windows PowerShell 命令列中管理值。

自動化變數會保存,因此即使 Runbook 失敗,它們仍可繼續使用。 這也允許由一個 Runbook 設定值,該 Runbook 接著由另一個 Runbook 使用,或在下次執行時由相同的 Runbook 使用。

建立變數時,您必須從下列清單指定其資料類型。 如此一來,管理入口網站就可以顯示變數值的適當控件。 您只能將正確類型的值指派給變數。

  • String

  • 整數

  • Boolean

  • Datetime

建立變數時,您可以指定將其加密儲存。 加密變數時,它會安全地儲存在 SMA 資料庫中,而且無法從 Get-SmaVariable Cmdlet 擷取其值。 若要擷取加密的值,唯一的方法是從 Runbook 中的 Get-AutomationVariable 活動擷取。 您可以藉由建立哈希表,將已定義類型的多個值儲存至單一變數。

Windows PowerShell Cmdlet

您可以使用下表中的 Windows PowerShell Cmdlet 來建立和管理變數。

指令程式 描述
Get-SmaVariable 擷取現有變數的值。
Set-SmaVariable 建立新變數,或設定現有變數的值。

Runbook 活動

您可以使用下表中的活動來存取 Runbook 中的變數。

活動 Description
Get-AutomationVariable 擷取現有變數的值。
Set-AutomationVariable 設定現有的變數的值。

注意

您應該避免在 「Name 參數 Get-AutomationVariable 中使用變數,因為這會使探索 Runbook 與自動化變數之間的相依性複雜。

在管理入口網站中建立新的變數

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

  2. 在視窗頂端,選取 [ 資產]。

  3. 在視窗底部,選取 [ 新增設定]。

  4. 選取 [新增變數]。

  5. 在 [類型] 下拉式清單中,選取資料類型。

  6. 在 [ 名稱 ] 方塊中輸入變數的名稱。

  7. 選取向右箭號。

  8. 輸入變數的值,並指定是否要加密它。

  9. 選取複選標記以儲存新的變數。

使用 Windows PowerShell 建立新變數

Set-SmaVariable Cmdlet 會建立新變數和設定現有變數的值。 下列命令範例會顯示如何建立字串類型的變數。

$web = 'https://MySMAServer'
$port = 9090

Set-SMAVariable -WebServiceEndpoint $web -Port $port -Name 'MyVariable' -Value 'My String'

在 Runbook 中使用變數

  • 下列程式碼範例示範如何設定及擷取 Runbook 中的變數。 在此範例中,假設已建立名為 NumberOfIterations 和 NumberOfRunnings 類型的整數變數,以及名為 SampleMessage 的類型字元串變數。

    $NumberOfIterations = Get-AutomationVariable -Name 'NumberOfIterations'
    $NumberOfRunnings = Get-AutomationVariable -Name 'NumberOfRunnings'
    $SampleMessage = Get-AutomationVariable -Name 'SampleMessage'
    Write-Output "Runbook has been run $NumberOfRunnings times."
    for ($i = 1; $i -le $NumberOfIterations; $i++) {
       Write-Output "$i`: $SampleMessage"
    }
    Set-AutomationVariable -Name NumberOfRunnings -Value (NumberOfRunnings += 1)
    

下一步