你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用和管理 Azure CLI 的扩展

Azure CLI 提供用于加载扩展的功能。 Azure CLI 扩展被形容成 Python 轮子,它们未随附在 CLI 中,但可作为 CLI 命令运行。 使用扩展可以访问试验性命令和预发行的命令,以及编写自己的 CLI 接口。 本文介绍如何管理扩展,并解答有关其用法的常见问题。

如何查找扩展

若要查看 Microsoft 提供和维护的 Azure CLI 扩展,请使用 az extension list-available 命令。

az extension list-available --output table

我们还在文档站点上提供了扩展列表

如何安装扩展

手动安装扩展

找到要安装的扩展后,请使用 az extension add 获取它。 如果该扩展在 az extension list-available 中列出,可以按名称安装该扩展。

az extension add --name <extension-name>

如果此扩展来自外部资源,或者你有指向它的直接链接,则可以提供源 URL 或本地路径。 该扩展必须是已编译的 Python wheel 文件。

az extension add --source <URL-or-path>

从版本 2.20.0 开始,还可以按照 index.json 中的格式构建专用扩展索引,然后将 Azure CLI 使用的扩展索引 URL 设置为该索引。 之后,可以按名称安装专用扩展索引中的扩展。

az config set extension.index_url=<URL>
az extension add --name <extension-name>

安装扩展后,可在 $AZURE_EXTENSION_DIR shell 变量的值下找到它。 如果此变量未设置,默认情况下在 Linux 和 macOS 上该值为 $HOME/.azure/cliextensions,在 Windows 上为 %USERPROFILE%\.azure\cliextensions

自动安装扩展

运行未安装的扩展命令时,Azure CLI 可识别你运行的命令,并自动安装版本至少为 2.10.0 的扩展。 此功能称为“动态安装”,从 2.12.0 开始,默认启用该功能。 还可通过以前受支持的版本的配置来启用它。

az config set extension.use_dynamic_install=yes_prompt

使用以下配置命令可在不提示的情况下实现动态安装。

az config set extension.use_dynamic_install=yes_without_prompt

使用以下配置命令可关闭动态安装功能,将其恢复到默认行为。 如果未安装扩展,扩展命令将返回“找不到命令”错误。

az config set extension.use_dynamic_install=no

默认情况下,提示动态安装的扩展命令会在安装扩展后继续运行。 可通过将 run_after_dynamic_install 属性设置为 no,更改默认行为并退出命令而不重新运行。

az config set extension.run_after_dynamic_install=no

如何更新扩展

如果已按名称安装了扩展,可以使用 az extension update 更新该扩展。

az extension update --name <extension-name>

否则,可以按照安装扩展说明,从源更新扩展。

如果扩展名称无法由 CLI 解析,请卸载该扩展,然后尝试重新安装。 该扩展也可能属于基本 CLI。 请按照安装 Azure CLI 中的说明尝试更新 CLI,并查看扩展的命令是否已添加。

如何卸载扩展

如果不再需要某个扩展,请使用 az extension remove 将其卸载。

az extension remove --name <extension-name>

还可以通过从安装扩展的位置删除它来进行手动删除。 $AZURE_EXTENSION_DIR shell 变量定义模块的安装位置。 如果此变量未设置,默认情况下在 Linux 和 macOS 上该值为 $HOME/.azure/cliextensions,在 Windows 上为 %USERPROFILE%\.azure\cliextensions

rm -rf $AZURE_EXTENSION_DIR/<extension-name>

常见问题

以下是一些有关 CLI 扩展的其他常见问题的答案。

安装允许哪些文件格式?

当前,只有编译的 Python wheel 才能作为扩展进行安装。

扩展是否可以替换现有命令?

是的。 扩展可以替换现有命令,但在运行已替换的命令之前,CLI 会发出一个警告。

如何判断扩展是否处于预发布阶段?

扩展的文档和版本将显示该扩展是否是预发行版。 Microsoft 通常以 CLI 扩展的形式发布预览版命令,以后会提供相应的选项用于将这些命令移到主要 CLI 产品中。 将命令转出扩展后,应卸载旧扩展。

扩展是否可以彼此依赖?

否。 由于 CLI 不能保证加载顺序,因此可能无法满足依赖关系方面的要求。 删除一个扩展不会影响其他任何扩展。

扩展是否随 CLI 一起更新?

否。 扩展必须单独更新,如更新扩展所述。

如何开发我们自己的扩展?

有关更多帮助,请参阅官方存储库。 Azure/azure-cli-extensions