在 PowerShell 工作流活动中,我可以使用 InlineScript 调用本机 PowerShell 脚本:
workflow test
{
InlineScript
{
.\script.ps1
}
}
但是在 Azure 自动化中,点路径(至少在我的测试中)正在返回c:\windows\system32
,并且 Azure 自动化中的 script-as-runbook 不存在(或者更确切地说,它无法执行,因为它找不到脚本)。
- 是否可以像这样执行存储在 AAuto 中的本机 PS Runbook?
- 如果是这样,我如何指定文件的路径?
- 这是 Azure 自动化对工作流 Runbook 和 InlineScript 活动的解析/编译过程中的错误/疏忽,从而阻止了依赖的 Runbook 被复制到工作人员?
我做了一点搜索,发现在执行原生 PS Runbook 时:
- 首先检查它们是否有任何其他 Runbook 引用。
- 作为部署到工作人员执行的一部分,在下面创建一个随机命名的文件夹
C:\Temp\
- 引用的 Runbook 最终会复制到此文件夹。
- 如果未找到引用 Runbook,则不会将它们复制到临时目录。
- 根 Runbook 似乎没有复制到该文件夹中。
- 执行 Workflow Runbook 时,不会创建动态命名的文件夹(在 c:\Temp 下)。
- 作为标准工作流编译的一部分,InlineScript 活动将其内容复制到自动生成的 xaml。我不确定链接文件,尽管基于看起来是运行时问题的行为。我的猜测是,每次执行工作流时都会进行编译(因此延迟启动),并在工作人员上进行,使用标准的 PS 工作流编译,就像本地一样。
我无法(轻松)将此脚本转换为工作流,并且它在其他工作流活动中使用。现在,我可以使这个“工作”的唯一方法是将脚本复制并粘贴到需要它的工作流中的第一个 InlineScript 中,从维护的角度来看,这显然是乏味和烦人的。
据推测,作为一种解决方法,我可以使用 Hybrid Worker,但这会带来许多其他问题,例如确保子 Runbook 在那里发布并且必须单独维护它们,或者 AAuto 不会自动将自定义模块从自动化帐户推送到工人(尽管这是计划好的)等。