0

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

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

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

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

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

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

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

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

4

1 回答 1

1

Please see 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.

It hasn't changed yet :)

于 2016-02-03T05:04:44.677 回答