使用全域資產簡化服務管理自動化 Runbook 撰寫
重要
此版本的服務管理自動化 (SMA) 已終止支援。 我們建議您 升級至 SMA 2022。
全域資產可供自動化環境中的所有 Runbook 使用。 您可以使用管理入口網站中的自動化工作區,或 Windows PowerShell 中適當的指令程式來建立及設定這些資源。 在 Runbook 中,您可以為 RunbookConstructs 模組中的活動擷取及設定全域資產的值。 Windows PowerShell Cmdlet 可用於服務管理自動化中的 Runbook,但建議活動更有效率,因為它們不需要透過自動化 Web 服務運作。
取得或設定認證
自動化認證是可以在 Windows PowerShell 命令中使用的使用者名稱及密碼,或是上傳至伺服器的憑證。 認證的屬性會安全地儲存在自動化資料庫中,而且可以使用 Get-AutomationPSCredential 或 Get-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-AutomationPSCredential 和 Get-AutomationCertificate 的 Name 參數中使用變數,因為這會使探索 Runbook 與 Automation 變數之間的相依性變得複雜。
在管理入口網站中建立PowerShell認證
選取 [自動化] 工作區。
在視窗頂端,選取 [ 資產]。
在視窗底部,選取 [ 新增設定]。
選取 [新增認證]。
在 [認證類型] 下拉式清單中,選取 [PowerShell 認證]。
在 [ 名稱 ] 方塊中輸入認證的名稱。
選取向右箭號。
輸入每個屬性的值。
選取複選標記以儲存認證。
在 中建立憑證
管理入口網站
選取 [自動化] 工作區。
在視窗頂端,選取 [ 資產]。
在視窗底部,選取 [ 新增設定]。
選取 [新增認證]。
在 [認證類型] 下拉式清單中,選取 [憑證]。
在 [ 名稱 ] 方塊中輸入憑證的名稱。
選取向右箭號。
選取 [瀏覽檔案 ],然後流覽至 .cer 或 .pfx 檔案。
如果您選取 .pfx 檔案,請提供其密碼。
選取複選標記以儲存憑證。
使用 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 中使用的連線。 |
在管理入口網站中建立連線
選取 [自動化] 工作區。
在視窗頂端,選取 [ 資產]。
在視窗底部,選取 [ 新增設定]。
選取 [新增連線]。
在 [連線類型] 下拉式清單中,選取連線類型。
在 [ 名稱 ] 方塊中輸入連線的名稱。
選取向右箭號。
輸入每個屬性的值。
選取複選標記以儲存連線。
使用 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 與自動化變數之間的相依性複雜。
在管理入口網站中建立新的變數
選取 [自動化] 工作區。
在視窗頂端,選取 [ 資產]。
在視窗底部,選取 [ 新增設定]。
選取 [新增變數]。
在 [類型] 下拉式清單中,選取資料類型。
在 [ 名稱 ] 方塊中輸入變數的名稱。
選取向右箭號。
輸入變數的值,並指定是否要加密它。
選取複選標記以儲存新的變數。
使用 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)
下一步
- 閱讀建 置整合模組的相關信息。
- 閱讀撰寫 自動化 Runbook 的相關信息。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應