如何导出 Azure Automation Graphical Runbook 定义 (.graphrunbook) encoded/encrypted?
How are exported Azure Automation Graphical Runbook definition (.graphrunbook) encoded/encrypted?
这是从 Azure 门户导出后的 .graphrunbook 的(修剪)内容。
{
"SchemaVersion" : "1.2",
"RunbookDefinition" : "AAA....AAA="
}
Runbook 定义可能是基于 XML 或 XAML 的,虽然这看起来像 base64 编码的文本,但解码后的大部分内容仍然是 encoded/illegible .
上下文: 我正在开发适用于 ARM 的 Sync-VsoGitRunbook 的改进版本,不需要任意文件夹层次结构(通过自动确定依赖项),并且还可以部署图形运行手册 - 为什么不呢! Native 和 Workflow 的所有内容都差不多完成了,这些只是要实现的最后一部分。
我目前没有使用任何图形操作手册,但 if/once 我们使用,我希望它们与体系结构保持一致。我还计划在我得到它后开源代码 wrapped/cleaned。
使用 Azure 自动化图形创作 SDK。
https://azure.microsoft.com/en-us/updates/public-preview-automation-graphical-authoring-sdk/
使用 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 }
}
此脚本提供的数据不完整:它仅列出了运行手册图表中显示为方框的活动。但是,还有其他方法可以将PS代码引入runbook(例如link条件、重试条件、activity参数中的PS表达式等)如果您有兴趣在此数据中,脚本也可以改进:可以使用此 API.
检索存储在图形操作手册中的所有数据
请到Chris提供的link下载最新版本的SDK。最新版本包含一些重要修复。
这是从 Azure 门户导出后的 .graphrunbook 的(修剪)内容。
{
"SchemaVersion" : "1.2",
"RunbookDefinition" : "AAA....AAA="
}
Runbook 定义可能是基于 XML 或 XAML 的,虽然这看起来像 base64 编码的文本,但解码后的大部分内容仍然是 encoded/illegible .
上下文: 我正在开发适用于 ARM 的 Sync-VsoGitRunbook 的改进版本,不需要任意文件夹层次结构(通过自动确定依赖项),并且还可以部署图形运行手册 - 为什么不呢! Native 和 Workflow 的所有内容都差不多完成了,这些只是要实现的最后一部分。
我目前没有使用任何图形操作手册,但 if/once 我们使用,我希望它们与体系结构保持一致。我还计划在我得到它后开源代码 wrapped/cleaned。
使用 Azure 自动化图形创作 SDK。
https://azure.microsoft.com/en-us/updates/public-preview-automation-graphical-authoring-sdk/
使用 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 }
}
此脚本提供的数据不完整:它仅列出了运行手册图表中显示为方框的活动。但是,还有其他方法可以将PS代码引入runbook(例如link条件、重试条件、activity参数中的PS表达式等)如果您有兴趣在此数据中,脚本也可以改进:可以使用此 API.
检索存储在图形操作手册中的所有数据请到Chris提供的link下载最新版本的SDK。最新版本包含一些重要修复。