如何导出Azure自动化图形Runbook定义(.graphrunbook)编码/加密?

时间:2016-03-01 20:41:00

标签: powershell azure azure-automation

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

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

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

上下文:我正在研究与ARM配合使用的改进版Sync-VsoGitRunbook,不需要任意文件夹层次结构(通过自动确定依赖关系),并且可以部署图形化Runbook以及 - 因为为什么不!这一切都非常适合Native&工作流程,这些只是最后要实施的部分。

我目前没有使用任何图形Runbook,但是如果我们这样做,我希望它们与架构一致。我还计划在将代码打包/清理后开源代码。

2 个答案:

答案 0 :(得分:2)

使用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 $GraphicalAuthoringSDKPath\Orchestrator.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代码引入Runbook(例如链接条件,重试条件,活动参数中的PS表达式等)。如果您对这些数据感兴趣,可以改进脚本:存储的所有数据可以使用此API检索图形Runbook。

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

答案 1 :(得分:1)