Azure Automation 如何拆分通用函数实现单次定义多处调用
Azure Automation 通用函数复用解决方案
你的需求完全可以实现,你遇到的报错是因为调用子runbook的方式错误,函数仅在子进程独立作用域内生效,没有导入到当前父runbook的运行上下文。
具体修复步骤
- 前提确认:存放通用函数的runbook和调用方runbook需位于同一个Azure Automation账户下,且均已完成发布操作,草稿状态的runbook无法被其他runbook正常调用
- 替换调用语句:将你原有的
&调用改为PowerShell点源调用格式,注意两个.之间必须保留空格,该操作会将子runbook的所有内容加载到当前父runbook的全局作用域:
. .\Test-FunctionDefinition.ps1
- 核对函数命名:你示例中定义的函数名为
Test-FunctionDefintion(拼写缺少字母i),调用时使用的是Test-FunctionDefinition,拼写不一致也会触发找不到函数的报错,请修正后再测试 - 完成以上操作后即可正常调用导入的函数:
Test-FunctionDefinition -TestParam "Test String"
多函数场景替代方案
如果你的通用工具函数数量较多,也可以将所有函数打包为标准PowerShell模块,上传到Azure Automation账户的「共享资源」-「模块」目录中,所有runbook无需额外导入操作,即可直接调用模块内的所有公开函数,更适合大规模运维场景使用。
内容的提问来源于stack exchange,提问作者DarkMoon
相关产品推荐
相关产品推荐

