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

使用 PowerShell 导入和导出蓝图定义

重要

2026 年 7 月 11 日,蓝图(预览版)将弃用。 将现有蓝图定义和分配迁移到模板规格部署堆栈。 蓝图项目将转换为 ARM JSON 模板或用于定义部署堆栈的 Bicep 文件。 若要了解如何将项目创作为 ARM 资源,请参阅:

可以通过 Azure 门户完全管理 Azure 蓝图。 随着组织推进使用 Azure 蓝图,它们应该开始将蓝图定义视为托管代码。 此概念通常称为基础结构即代码 (IaC)。 将蓝图定义视为代码,可提供除 Azure 门户提供的优势之外的其他优势。 优势包括:

  • 共享蓝图定义
  • 备份蓝图定义
  • 在不同租户或订阅中重用蓝图定义
  • 在源代码管理中放置蓝图定义
    • 在测试环境中自动测试蓝图定义
    • 支持持续集成和持续部署 (CI/CD) 管道

无论出于何种原因,将蓝图定义作为代码进行管理都是有好处的。 本文介绍了如何在 Az.Blueprint 模块中使用 Import-AzBlueprintWithArtifactExport-AzBlueprintWithArtifact 命令。

先决条件

本文假定你具备中等程度的 Azure 蓝图使用知识。 如果尚不具备,请阅读以下文章:

如果尚未安装,请按照添加 Az.Blueprint 模块中的说明安装并验证 PowerShell 库中的 Az.Blueprint 模块。

蓝图定义的文件夹结构

在学习如何导入和导出蓝图之前,先看看组成蓝图定义的文件的结构。 蓝图定义应存储在其自己的文件夹中。

重要

如果没有将任何值传递给 Import-AzBlueprintWithArtifact cmdlet 的“Name”参数,则使用存储蓝图定义的文件夹的名称。

除了蓝图定义(必须命名为 blueprint.json)外,还有组成蓝图定义的项目。 每个项目都必须位于名为 artifacts 的子文件夹中。 放在一起,文件夹中作为 JSON 文件的蓝图定义的结构应如下所示:

.
|
|- MyBlueprint/  _______________ # Root folder name becomes default name of blueprint definition
|  |- blueprint.json  __________ # The blueprint definition. Fixed name.
|
|  |- artifacts/  ______________ # Subfolder for all blueprint artifacts. Fixed name.
|     |- artifact.json  ________ # Blueprint artifact as JSON file. Artifact named from file.
|     |- ...
|     |- more-artifacts.json

导出蓝图定义

导出蓝图定义的步骤非常简单。 导出蓝图定义对于共享、备份或置于源代码管理中非常有用。

  • Blueprint [必填]
    • 指定蓝图定义
    • 使用 Get-AzBlueprint 获取引用对象
  • OutputPath [必填]
    • 指定用于保存蓝图定义 JSON 文件的路径
    • 输出文件位于使用蓝图定义名称的子文件夹中
  • Version(可选)
    • 如果蓝图引用对象包含对多个版本的引用,则指定要输出的版本。
  1. 获取对要从表示为 {subId} 的订阅中导出的蓝图定义的引用:

    # Login first with Connect-AzAccount if not using Cloud Shell
    
    # Get version '1.1' of the blueprint definition in the specified subscription
    $bpDefinition = Get-AzBlueprint -SubscriptionId '{subId}' -Name 'MyBlueprint' -Version '1.1'
    
  2. 使用 Export-AzBlueprintWithArtifact cmdlet 导出指定的蓝图定义:

    Export-AzBlueprintWithArtifact -Blueprint $bpDefinition -OutputPath 'C:\Blueprints'
    

导入蓝图定义

所需的文件夹结构中具有导出的蓝图定义或手动创建的蓝图定义后,便可以将该蓝图定义导入到另一个管理组或订阅中。

有关内置蓝图定义的示例,请参阅 Azure 蓝图 GitHub 存储库

  • Name [必填]
    • 指定新蓝图定义的名称
  • InputPath [必填]
  • ManagementGroupId(可选)
    • 在不是当前上下文默认值的情况下,用于保存蓝图定义的管理组 ID
    • 必须指定“ManagementGroupId”或“SubscriptionId”
  • SubscriptionId(可选)
    • 在不是当前上下文默认值的情况下,用于保存蓝图定义的订阅 ID
    • 必须指定“ManagementGroupId”或“SubscriptionId”
  1. 使用 Import-AzBlueprintWithArtifact cmdlet 导入指定的蓝图定义:

    # Login first with Connect-AzAccount if not using Cloud Shell
    
    Import-AzBlueprintWithArtifact -Name 'MyBlueprint' -ManagementGroupId 'DevMG' -InputPath 'C:\Blueprints\MyBlueprint'
    

导入蓝图定义后,使用 PowerShell 进行分配

有关创建高级蓝图定义的信息,请参阅以下文章:

后续步骤