在一个月间隔后手动执行 Runbook 时无法加载模块错误
Modules could not be loaded error while executing Runbook manually after a month interval
我有关于 Automation Runbook 的一般查询。
我有 Runbook 可以获取 VM 清单详细信息,我会在需要时手动使用它 运行。
问题: 如果我们有一段时间不使用 Automation Runbook(这不是计划 运行),它是否能够正常工作?如果我们在某个时间后(例如 1 个月后)运行 运行手册,我们会收到任何模块错误吗?
因为当我 运行 它以前完美地工作并得到了预期的结果但是如果我不 运行 它大约 2 或 3 周,当我尝试 运行 再次,它给我 "Modules could not be loaded" 错误。
当我再次尝试重新导入模块并 运行 几次时,它工作正常。是预期的吗?以前有人遇到过这个错误吗?
任何建议都会有所帮助。谢谢。
模块不应仅仅因为您长时间不运行 运行一本书而消失,至少不是设计使然。但是,在同一个自动化帐户上导入、删除或更新模块可能会导致模块加载出现问题,即使这些更改似乎与 运行 书没有直接关系。如果您确定没有对此自动化帐户执行任何更改,则绝对不会出现此行为。
不过,"Modules not installed/imported" 有点含糊。您收到的确切错误消息是什么?您在哪里看到它?
根据评论进行编辑:
此错误消息 ("The X command was found in the module Y, but the module could not be loaded") 表示已按预期在文件系统中找到该模块,但无法自动加载到当前 PS 会话中。发生这种情况的原因有很多。如果您明确地从 运行 书中调用 Import-Module Az.Accounts
(如果您仍然能够重现此内容),您将收到更详细的错误消息。
了解 Azure 自动化上下文中的 "importing a module" 意味着两种不同的含义很重要:
- 正在将模块导入自动化帐户。完成此操作后,模块和版本将出现在门户网站的列表中。现在,自动化服务将确保模块文件部署到沙盒进程上的文件系统。
- 正在将模块导入 PS 会话。这就是
Import-Module
所做的,这也是 PS 在您调用此模块中定义的命令(自动加载)时尝试自动执行的操作。这是在您的情况下失败的步骤。
此错误的一个常见原因是 PS 会话和沙箱进程可以在 Azure 自动化中重复使用,有时您获得的会话已经导入了不兼容的模块。例如,当使用 Az 模块时,你应该格外小心,不要意外加载 AzureRM 模块(更多细节见 https://docs.microsoft.com/azure/automation/az-modules) .即使您没有显式加载 AzureRM 模块,如果您尝试从该自动化帐户上的任何 运行book 调用 AzureRM 命令,或者如果您更新或在此自动化帐户上添加 AzureRM 模块。
这只是一个示例,但您可能还会将其他冲突模块和模块版本导入到您的自动化帐户中。无论如何,从您的 运行 书中调用 Import-Module
应该会为您提供有关您的具体情况的更多详细信息。我不认为仅仅过了 2-3 周就毁了你的 运行 书。我怀疑这个自动化帐户上发生了其他事情,导致重用的 PS 会话与这本书 运行 不兼容。导入或删除此自动化帐户上的任何模块有效地使下一个作业进入全新沙盒进程中的全新 PS 会话,我相信这就是解决您的问题的原因。
我有关于 Automation Runbook 的一般查询。
我有 Runbook 可以获取 VM 清单详细信息,我会在需要时手动使用它 运行。
问题: 如果我们有一段时间不使用 Automation Runbook(这不是计划 运行),它是否能够正常工作?如果我们在某个时间后(例如 1 个月后)运行 运行手册,我们会收到任何模块错误吗?
因为当我 运行 它以前完美地工作并得到了预期的结果但是如果我不 运行 它大约 2 或 3 周,当我尝试 运行 再次,它给我 "Modules could not be loaded" 错误。 当我再次尝试重新导入模块并 运行 几次时,它工作正常。是预期的吗?以前有人遇到过这个错误吗?
任何建议都会有所帮助。谢谢。
模块不应仅仅因为您长时间不运行 运行一本书而消失,至少不是设计使然。但是,在同一个自动化帐户上导入、删除或更新模块可能会导致模块加载出现问题,即使这些更改似乎与 运行 书没有直接关系。如果您确定没有对此自动化帐户执行任何更改,则绝对不会出现此行为。
不过,"Modules not installed/imported" 有点含糊。您收到的确切错误消息是什么?您在哪里看到它?
根据评论进行编辑:
此错误消息 ("The X command was found in the module Y, but the module could not be loaded") 表示已按预期在文件系统中找到该模块,但无法自动加载到当前 PS 会话中。发生这种情况的原因有很多。如果您明确地从 运行 书中调用 Import-Module Az.Accounts
(如果您仍然能够重现此内容),您将收到更详细的错误消息。
了解 Azure 自动化上下文中的 "importing a module" 意味着两种不同的含义很重要:
- 正在将模块导入自动化帐户。完成此操作后,模块和版本将出现在门户网站的列表中。现在,自动化服务将确保模块文件部署到沙盒进程上的文件系统。
- 正在将模块导入 PS 会话。这就是
Import-Module
所做的,这也是 PS 在您调用此模块中定义的命令(自动加载)时尝试自动执行的操作。这是在您的情况下失败的步骤。
此错误的一个常见原因是 PS 会话和沙箱进程可以在 Azure 自动化中重复使用,有时您获得的会话已经导入了不兼容的模块。例如,当使用 Az 模块时,你应该格外小心,不要意外加载 AzureRM 模块(更多细节见 https://docs.microsoft.com/azure/automation/az-modules) .即使您没有显式加载 AzureRM 模块,如果您尝试从该自动化帐户上的任何 运行book 调用 AzureRM 命令,或者如果您更新或在此自动化帐户上添加 AzureRM 模块。
这只是一个示例,但您可能还会将其他冲突模块和模块版本导入到您的自动化帐户中。无论如何,从您的 运行 书中调用 Import-Module
应该会为您提供有关您的具体情况的更多详细信息。我不认为仅仅过了 2-3 周就毁了你的 运行 书。我怀疑这个自动化帐户上发生了其他事情,导致重用的 PS 会话与这本书 运行 不兼容。导入或删除此自动化帐户上的任何模块有效地使下一个作业进入全新沙盒进程中的全新 PS 会话,我相信这就是解决您的问题的原因。