【问题标题】:How to execute PowerShell script as Azure Automation Runbook from InlineScript inside PSWorkflow runbook?如何从 PSWorkflow Runbook 中的 InlineScript 将 PowerShell 脚本作为 Azure 自动化 Runbook 执行?
【发布时间】:2016-03-04 08:41:14
【问题描述】:

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

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

但在 Azure 自动化中,点路径(至少在我的测试中)返回 c:\windows\system32,并且 Azure 自动化中的脚本即运行手册不存在(或者更确切地说,它无法执行,因为它可以找不到脚本)。

  1. 是否可以像这样执行存储在 AAuto 中的本机 PS Runbook?
  2. 如果是这样,我该如何指定文件的路径?
  3. 这是 Azure 自动化对工作流 Runbook 和 InlineScript 活动的解析/编译过程中的错误/疏忽,导致无法将依赖的 Runbook 复制到工作线程?

我做了一点搜索,发现在执行原生 PS Runbook 时:

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

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

据推测,作为一种解决方法,我可以使用 Hybrid Worker,但这会带来许多其他问题,例如确保子 Runbook 在那里发布并且必须单独维护它们,或者 AAuto 不会自动从工人的自动化帐户(尽管这是计划的)等。

【问题讨论】:

标签: powershell azure azure-automation powershell-workflow


【解决方案1】:

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

目前,您只能从 PowerShell Runbook 调用内联 PowerShell Runbook,以及从 PowerShell Workflow 或 Graph Runbook 调用 PowerShell Workflow 或 Graph Runbook。这在未来可能会改变。

它还没有改变:)

【讨论】:

  • 作为一种解决方法,您可以尝试执行 Eamon 在此处描述的相同操作:social.msdn.microsoft.com/Forums/en-US/…
  • 谢谢乔,刚刚回到这个话题。我的下一个想法是带外下载运行手册,尽管我认为这可能违反了沙盒。
  • 也就是说,我们刚刚完成了删除对凭据的依赖的过程,该过程将运行这些凭据的“托管”Azure 订阅。由于模块管理和其他已知问题,所有这些选项都需要为自动化部署和执行故事提供不同的一次性、带外警告。目前,阻力最小的路径是将依赖脚本复制/粘贴到需要它的运行手册中,尽管这样做有缺点。
猜你喜欢
  • 2019-05-05
  • 2022-11-11
  • 2020-07-24
  • 1970-01-01
  • 2019-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多