如何对导出的 Azure 自动化图形运行手册定义 (.graphrunbook) 进行编码/加密



这是从 Azure 门户导出后 .graphrunbook 的(修剪)内容。

{ 
    "SchemaVersion" : "1.2", 
    "RunbookDefinition" : "AAA....AAA=" 
}

Runbook 定义大概是基于 XML 或 XAML 的,虽然这看起来像 base64 编码的文本,但这样解码会导致大部分仍被编码/难以辨认。

上下文:我正在开发 Sync-VsoGitRunbook 的改进版本,该版本可与 ARM 配合使用,不需要任意文件夹层次结构(通过自动确定依赖项),并且还可以部署图形运行手册 - 因为为什么不呢!对于Native&Workflow来说,这一切都已经结束了,这些只是要实现的最后一部分。

我目前没有使用任何图形运行手册,但如果/一旦我们这样做,我希望它们与架构保持一致。我还计划在包装/清理代码后将其开源。

使用 Azure 自动化图形创作 SDK 是检查和修改 .graphrunbok 文件内容的唯一受支持的方法。例如,像这样的脚本将为你提供 Runbook 使用的命令列表:

param(
    [Parameter(Mandatory = $true)]
    $RunbookPath,
    $GraphicalAuthoringSDKPath = 'C:Program Files (x86)Microsoft Azure Automation Graphical Authoring SDK'
)
function Get-RunbookActivities($Runbook, $ActivityType)
{
    $Runbook.Activities | %{ $_ -as $ActivityType } | ?{ $_ }
}
Add-Type -Path $GraphicalAuthoringSDKPathOrchestrator.GraphRunbook.Model.dll
$SerializedRunbook = Get-Content $RunbookPath
$Runbook = [Orchestrator.GraphRunbook.Model.Serialization.RunbookSerializer]::Deserialize($SerializedRunbook)
@{
    'Invoked runbooks' = Get-RunbookActivities $Runbook Orchestrator.GraphRunbook.Model.InvokeRunbookActivity |
                            %{ $_.RunbookActivityType.CommandName }
    'Commands' = Get-RunbookActivities $Runbook Orchestrator.GraphRunbook.Model.CommandActivity |
                            %{ "$($_.CommandType.ModuleName)/$($_.CommandType.CommandName)" }
    'Code activity content' = Get-RunbookActivities $Runbook Orchestrator.GraphRunbook.Model.WorkflowScriptActivity |
                            %{ $_.Process }
}

此脚本提供的数据不完整:它仅列出在 Runbook 关系图上显示为框的活动。但是,还有其他方法可以将 PS 代码引入运行手册(例如链接条件、重试条件、活动参数中的 PS 表达式等)。如果对此数据也感兴趣,可以改进脚本:可以使用此 API 检索存储在图形 Runbook 中的所有数据。

请从 Chris 提供的链接下载最新版本的 SDK。最新版本包含一些重要的修复程序。

使用 Azure 自动化图形创作 SDK。

https://azure.microsoft.com/en-us/updates/public-preview-automation-graphical-authoring-sdk/

最新更新