创作 Service Management Automation Runbook

重要

此版本的 Service Management Automation (SMA) 已终止支持。 建议 升级到 SMA 2022

Service Management Automation 和 Microsoft Azure Automation 中的 Runbook 是 Windows PowerShell 工作流或 PowerShell 脚本。 利用它们能够自动完成管理和部署云服务器的管理流程或 Windows PowerShell 脚本可执行的任何其他功能。

两个系统之间的 Runbook 没有区别,相同的 Runbook 可以在具有相同功能的任一上运行。 本文中使用术语自动化时,它指的是服务管理自动化和 Microsoft Azure 自动化。

Automation 提供的用于与 Windows PowerShell 工作流一起使用的其他服务包括以下各项:

  • Runbook 的集中存储和管理。

  • 用于计划和运行 Runbook 的可扩展架构。

  • 集中管理并可用于所有 Runbook 的全局资源。

  • 用于创作和测试 Runbook 的用户界面。

  • 用于管理和启动 Runbook 的 cmdlet 集。

创建或导入 Runbook

可以通过在管理门户中创建 Runbook 或通过从文件导入它,将 Runbook 添加到服务管理自动化。

在管理门户中创建 Runbook

  1. 在管理门户中,依次选择“新建”、“应用服务”、“自动化”、“Runbook”、“快速创建”。

  2. 输入所需的信息,然后选择“ 创建”。 Runbook 名称必须以字母开头,可以使用字母、数字、下划线和短划线。

  3. 如果要立即编辑 Runbook,请选择“ 编辑 Runbook”。 否则,请选择“ 确定”。

  4. 此时新的 Runbook 将出现在“Runbook”选项卡上。

从文件中导入 Runbook

  1. 在管理门户中,选择“自动化” ,然后选择自动化帐户。

  2. 选择“导入” 。

  3. 选择“ 浏览文件 ”并找到要导入的脚本文件。

  4. 如果要立即编辑 Runbook,请选择“ 编辑 Runbook”。 否则,请选择“ 确定”。

  5. 新 runbook 会出现在自动化帐户的“Runbook” 选项卡上。

使用 Windows PowerShell 从脚本文件导入 Runbook

可以使用 Import-SmaRunbook cmdlet 通过包含工作流的脚本文件创建新 runbook。

下面的示例命令演示如何将脚本文件导入到现有 runbook 中,然后发布它。

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$scriptPath = "c:\runbooks\Test-Runbook.ps1"

Import-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Path $scriptPath
Publish-SMARunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName

编辑 runbook

Service Management Automation 中的每个 Runbook 都有两个版本:草稿和已发布。 编辑工作流的草稿版本,然后将其发布,以便可以执行。 无法编辑已发布版本。

使用管理门户编辑 Runbook

管理门户包括一个编辑器,可以用于查看和编辑 runbook。 除了提供基本文本编辑功能外,编辑器还提供自动插入 Runbook、全局资产和活动代码的功能。

  1. 在管理门户中,选择“自动化”

  2. 选择“Runbook”选项卡。

  3. 选择要编辑的 Runbook 的名称。

  4. 选择“创作”选项卡。

  5. 选择屏幕顶部的 “草稿 ”或屏幕底部的 “编辑 ”按钮。

  6. 执行所需的编辑。

  7. 编辑完成后,选择“ 保存 ”。

  8. 如果要 发布 Runbook 的最新草稿版本,请选择“发布”。

为为 Runbook、全局资产和活动插入代码的步骤选择所需的选项卡:

按照以下步骤将代码插入 Runbook:

  1. 在管理门户编辑器中打开 runbook。

  2. 在屏幕底部,选择“ 插入 ”,然后选择“ Runbook”。

  3. 从中心列中选择要插入的 Runbook,然后选择向右箭头。

  4. 如果该 Runbook 具有参数,则会将其列出供你参考。

  5. 选择“检查”按钮。

  6. 运行所选 Runbook 的代码将插入到当前 Runbook 中。

  7. 如果 Runbook 需要参数,请提供适当的值来代替由大括号 <>括起来的数据类型。

使用 PowerShell 编辑自动化 Runbook

要使用 Windows PowerShell 编辑 runbook,请使用选择的编辑器来编辑工作流,然后将它保存为 .ps1 文件。 可以使用 Get-SMARunbookDefinition cmdlet 检索 runbook 的内容,然后使用 Edit-SMARunbook cmdlet 将现有草稿工作流替换为已修改的工作流。

使用 Windows PowerShell 检索 Runbook 的内容

以下示例命令演示了如何检索 Runbook 的脚本并将其保存到脚本文件。 在此示例中,检索的是草稿版本。 也可以检索 runbook 的已发布版本,不过不能更改此版本。

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$scriptPath = "c:\runbooks\Test-Runbook.ps1"

$runbookDefinition = Get-SMARunbookDefinition -WebServiceEndpoint $webServer -Port $port -Name $runbookName -Type Draft
$runbookContent = $runbookDefinition.Content

Out-File -InputObject $runbookContent -FilePath $scriptPath

使用 Windows PowerShell 更改 Runbook 的内容

下面的示例命令演示如何将 runbook 的现有内容替换为包含工作流的脚本文件的内容。

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$scriptPath = "c:\runbooks\Test-Runbook.ps1"

Edit-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName -Path $scriptPath -Overwrite
Publish-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName -Path $scriptPath

使用 PowerShell ISE 编辑 Automation Runbook

Windows PowerShell 集成脚本环境 (ISE) 是一个应用程序,可用于运行命令以及编写、测试和调试脚本。 借助 SMA PowerShell ISE 加载项,可以使用此工具来编写和测试 Automation Runbook。

  1. 打开 Windows PowerShell ISE。

  2. 如果 SMA ISE 加载项 未显示在 ISE 的右侧,请打开“ 加载项 ”菜单,然后启用 SMA ISE 加载项

  3. 在“配置”选项卡上,登录到 SMA。

  4. 选择“ Runbook ”选项卡。应会看到 SMA Runbook 列表。

  5. 选择要编辑的 Runbook,然后选择“ 下载”。 随即会从 SMA 下载 Runbook 的本地副本。

  6. 选择“打开” 。 随即会使用 Runbook 创建一个新选项卡。

  7. 对 Runbook 进行必要的更改。

  8. 选择“ 上传草稿 ”,将 Runbook 发送到 SMA。 这会覆盖 Runbook 的现有草稿版本。

  9. 如果要 发布 Runbook 的最新草稿版本,请选择“发布草稿”。

发布 Runbook

创建 Runbook 后,需要发布它,以便 Runbook 辅助角色可以执行它。 Service Management Automatio 中的每个 Runbook 都有草稿版本和已发布版本。 只有已发布版才能用来运行,只有草稿版才能用来编辑。 已发布版不受对草稿版所做的任何更改的影响。 准备好提供草稿版本时,可以发布该版本,这将用草稿版本覆盖已发布版本。

使用管理门户发布 Runbook

  1. 选择“自动化”工作区。

  2. 在屏幕顶部,选择“Runbook”

  3. 找到要编辑的 runbook 并单击其名称。

  4. 在屏幕顶部,选择“ 创作”。

  5. 选择“ 草稿”。

  6. 在屏幕底部,选择“ 发布”。

  7. 选择验证消息的“ ”。

使用 PowerShell 运行 Runbook

可以通过 Windows PowerShell 来使用 Publish-SmaRunbook 发布 runbook。 下面的示例命令演示如何发布 runbook。

$webServer = 'https://MyServer'
$port = 9090
$runbookPath = 'c:\runbooks\Sample-TestRunbook.ps1'
$runbookName = 'Test-Runbook'

Publish-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName

使用 PowerShell ISE 发布 Runbook

Windows PowerShell 集成脚本环境 (ISE) 是一个应用程序,可用于运行命令以及编写、测试和调试脚本。 借助 SMA PowerShell ISE 加载项,可以使用此工具来编写和测试 Automation Runbook。

  1. 打开 Windows PowerShell ISE。

  2. 如果 SMA ISE 加载项 未显示在 ISE 的右侧,请打开“ 加载项 ”菜单,然后启用 SMA ISE 加载项

  3. 在“配置”选项卡上,登录到 SMA。

  4. 选择“ Runbook ”选项卡。应会看到 SMA Runbook 列表。

  5. 选择 Runbook,然后选择 “发布草稿 ”以发布 Runbook 的最新草稿版本。

测试 Runbook

你可以在 Service Management Automation 中测试 Runbook 的草稿版本,同时保持 Runbook 的已发布版本不变。 这样便可以确保新的 Runbook 在替代已发布版之前各项功能运行正常。

测试 Runbook 时,将执行草稿版 Runbook,并会完成其所执行的任何操作。 不会创建任何作业历史记录,但是 OutputWarning and Error 流会显示在测试输出窗格中。 仅当 $VerbosePreference variable 设置为“继续” 时,才会在“输出”窗格中显示 Verbose Stream的消息。

当你测试 Runbook 时,它仍正常执行工作流,并针对环境中的资源执行任何操作。 因此,只应针对非生产资源执行测试 runbook。

在 Service Management Automation 中测试 Runbook

要测试 runbook, 请在管理门户中打开 runbook 的草稿版本。 选择屏幕底部的“ 测试 ”按钮以开始测试。

在测试 Runbook 时,可以使用“输出窗格”下的按钮来停止或暂停 Runbook。 暂停 Runbook 时,该 Runbook 会完成它在被暂停之前正在进行的活动。 暂停 Runbook 后,可以将它停止或重启。

使用 PowerShell ISE 测试 Runbook

PowerShell ISE 加载项提供了模拟标准活动(如 Get-SMACredential 和 Set-SMAVariable)的 cmdlet,因此,你可以在本地计算机上测试 Runbook,就像测试任何其他脚本一样。

全局资产及其值会从自动化组下载,用于本地测试。 可以在“ 资产 ”选项卡上检查或更改这些值。加密值以橙色显示,并且不会下载其值。 如果要在本地测试中使用这些资产,则必须在本地设置其值。

若要在 SMA 中测试 Runbook,请选择“ SMA 中的测试草稿”。 此时将打开一个新窗口。 选择“ 启动新作业” 以启动测试。 输出将显示在窗口中。

Automation runbook 示例

Service Management Automation 随附下列 Runbook 作为示例 Runbook 来阐述方法和最佳做法。 它们可用于 Microsoft Azure Pack for Windows Server 中的自动化扩展。

Runbook 名称 说明
Sample-Deleting-VMCloud-Subscription 演示用于在用户删除 VM 云订阅时触发 Runbook 的有用方案。
Sample-Managing-Azure 演示如何使用 Microsoft Azure PowerShell 模块连接到 Microsoft Azure 订阅并执行基本操作。
Sample-Managing-ConfigurationManager 演示 Service Management Automation 连接到 Configuration Manager 的功能。
Sample-Managing-DataProtectionManager 演示如何连接到 Data Protection Manager (DPM) 服务器并查看有关 DPM 服务器上的磁盘的信息。
Sample-Managing-MySQLServers 演示如何检索将随后用于检索主机服务器列表的安全令牌。
Sample-Managing-OperationsManager 演示 Service Management Automation 连接到 System Center Operations Manager 的功能。
Sample-Managing-Orchestrator 演示如何连接到 System Center Orchestrator 并启动 Orchestrator Runbook 以使用现有基础结构。
Sample-Managing-Plans 演示如何创建新计划并将具有已定义配额的 SQL Server 服务添加到新计划。
Sample-Managing-ServiceBusClouds 演示如何连接到“服务总线云”服务器并查看有关创建的命名空间的信息。
Sample-Managing-SQLServers 演示如何创建新的服务器组并添加 SQL 托管服务器。
Sample-Managing-UserAccounts 演示如何在 Microsoft Azure Pack for Windows Server 中创建用户,该用户将在 Microsoft Azure Pack 中创建,并在管理员管理门户中显示用户扩展。 但是,此用户还应集成到身份验证提供程序中, (例如,AuthSite) ,用于访问租户的管理门户,此示例中不包括此门户。
Sample-Managing-VirtualMachineManager 演示如何连接到 Virtual Machine Manager (VMM) 服务器并查看有关 VMM 服务器许可证书的信息。
Sample-Managing-VMClouds 演示如何访问有关 Service Provider Foundation 服务器的数据库连接的信息,以及有关 Service Provider Foundation 管理的 VMM 服务器对象的信息。
Sample-Managing-WebSiteCloud 演示如何连接到“网站云”控制器服务器并查看有关“网站云”部署的服务器的信息。
Sample-Modify-VMCloud-Subscription 演示用于在租户或管理员挂起或激活 VM 云订阅时触发 Runbook 的有用方案。
Sample-Using-Activities 演示 Service Management Automation 使用活动的功能
Sample-Using-Checkpoints 演示在 Service Management Automation 中使用检查点的功能。
Sample-Using-Connections 演示 Service Management Automation 使用连接以连接到远程系统中的功能。
Sample-Using-Credentials 演示 Service Management Automation 使用凭据的功能,并输出运行 Service Management Automation Runbook 的用户。 然后,它连接到服务器“ServerName”,并输出由“SampleCredential”指定的正在访问服务器的用户。
Sample-Using-Modules 演示 Runbook 中的导入模块,并输出服务器“ServerName”上已导入模块的数量。 然后,它导入由“ModulePath”指定的模块,并输出新模块计数以及与新导入的模块对应的信息。
Sample-Using-RunbookParameters 演示如何为 Runbook 使用输入参数,并且还指定是否需要参数,提供默认参数值,并稍后在工作流中使用参数值。
Sample-Using-Runbooks 演示如何从另一个 Runbook 内调用 Runbook。
Sample-Using-SuspendWorkflow 演示如何强制挂起 Runbook。 如果需要手动步骤才能继续 Runbook(例如从特定人员接收注销批准),这可能很有用。 手动步骤完成后,将手动恢复挂起的 Runbook 以继续运行 Runbook。
Sample-Using-Variables 演示 Service Management Automation 使用变量的功能。
Sample-Using-VMCloud-Automation 演示用于在 Service Provider Foundation 事件的开头触发 Runbook 的有用方案。

后续步骤

  • 阅读有关如何从一个 Runbook 调用另一个 Runbook 的信息。
  • 了解如何 使用集成模块。