如何从 PSWorkflow Runbook 中的 InlineScript 将 PowerShell 脚本作为 Azure Automation Runbook 执行?

How to execute PowerShell script as Azure Automation Runbook from InlineScript inside PSWorkflow runbook?

在 PowerShell 工作流 activity 中,我可以使用 InlineScript 调用本机 PowerShell 脚本:

workflow test
{
    InlineScript
    {
        .\script.ps1
    }
}

但在 Azure 自动化中,点路径(至少在我的测试中)返回 c:\windows\system32,而 Azure 自动化中的脚本作为运行手册在那里不存在(或者更确切地说,它未能因为找不到脚本而执行)。

  1. 是否可以像这样执行存储在 AAuto 中的本机 PS runbook?
  2. 如果是这样,我该如何指定文件的路径?
  3. 这是 Azure 自动化 parsing/compilation Workflow Runbook 和 InlineScript 活动流程中的 bug/oversight,防止从属 Runbook 复制到工作人员吗?

我进行了一些搜索,发现当原生 PS 运行手册被执行时:

  1. 首先检查它们是否有任何其他 Runbook 参考。
  2. 作为部署到 worker 执行的一部分,在 C:\Temp\
  3. 下创建了一个随机命名的文件夹
  4. 引用的运行手册最终会复制到此文件夹中。
  5. 如果未找到引用的运行手册,则不会将它们复制到临时目录。
  6. 根 runbook 似乎没有复制到文件夹中。
  7. 执行 Workflow Runbook 时未创建动态命名的文件夹(在 c:\Temp 下)。
  8. 作为标准工作流编译的一部分,InlineScript 活动将其内容复制到自动生成的 xaml。我不确定链接文件,尽管基于看起来是运行时问题的行为。我的猜测是每次执行工作流时都会发生编译(因此延迟启动),并发生在工作人员身上,就像本地一样使用标准 PS 工作流编译。

我无法(轻易)将此脚本转换为工作流,并且它在其他工作流活动中使用。现在,我可以做到这一点的唯一方法 'work' 是将脚本复制并粘贴到需要它的工作流程中的第一个 InlineScript 中,从维护的角度来看,这显然是乏味和烦人的。

据推测,作为一种解决方法,我可以使用 Hybrid Worker,但这会带来许多其他问题,例如确保子 runbook 在那里发布并且必须单独维护它们,或者 AAuto 不会自动推送自定义模块从 Automation Account 到 worker(虽然这是计划中的)等

请参阅https://azure.microsoft.com/en-us/blog/announcing-powershell-script-support-azure-automation-2/:

Right now, you can only invoke inline PowerShell runbooks from PowerShell runbooks, and PowerShell Workflow or Graph runbooks from PowerShell Workflow or Graph runbooks. This may change in the future.

还没变:)