使用 Azure PowerShell 以交互方式创建 Azure 资源

已完成

在交互模式下,PowerShell 允许你立即输入并运行命令。

在客户关系管理 (CRM) 示例中,目标是创建三个包含虚拟机 (VM) 的测试环境。 使用资源组来确保将 VM 组织到不同的环境中:

  • 单元测试
  • 集成测试
  • 验收测试

由于只需创建一次资源组,因此为此任务交互式地使用 PowerShell 是一个合理的选择。

在 PowerShell 中运行命令时,会将命令与 cmdlet 匹配,然后执行请求的操作。

示例:如何使用 Azure PowerShell 创建资源组

让我们执行一个常见任务:创建资源组。 资源组可帮助你共同管理相关资源,创建新的资源组通常是启动新 Azure 解决方案时执行的首要任务之一。

下面是需要执行的三个步骤:

  1. 连接到 Azure 订阅。

  2. 创建资源组。

  3. 验证资源组是否已成功创建。

每个步骤对应不同的 Azure PowerShell 命令。

连接到 Azure

使用 Azure PowerShell 的本地安装时,在执行任何 Azure PowerShell 命令之前,必须进行身份验证。 Connect-AzAccount cmdlet 会提示输入 Azure 凭据,然后连接到 Azure 订阅。

若要以交互方式连接,无需指定任何参数:

Connect-AzAccount

此命令将打开输入 Azure 凭据的提示,并建立与 Azure 订阅的连接。

使用订阅

如果你是 Azure 的新手,则只有一个订阅。 但是,如果你已使用 Azure 一段时间,则可能会有多个订阅。 Azure PowerShell 允许配置要对其执行命令的订阅。

每次只能在一个订阅中操作。 使用 Get-AzContext cmdlet 确定哪个订阅当前处于活动状态。 如果不正确,可以使用 Set-AzContext cmdlet 切换订阅。

  1. 获取所有订阅的列表:

    Get-AzSubscription
    
  2. 查看已登录的当前订阅:

    Get-AzContext
    
  3. 更改活动订阅:

    Set-AzContext -Subscription '00000000-0000-0000-0000-000000000000'
    

    如果需要查找订阅 ID,可以在 Get-AzSubscription cmdlet 的输出中找到它。

创建资源组

在 Azure 中创建资源时,将这些资源放入资源组,以便于管理。

若要创建资源组,请使用 New-AzResourceGroup cmdlet。 必须指定名称和位置,并且名称在订阅中必须唯一。 该位置决定资源组元数据的存储位置(出于符合性原因,这可能很重要)。 使用 Get-AzLocation cmdlet 确定可用的位置。

注意

如果在 Azure 沙盒中工作,则会为你创建资源组。 如果更喜欢在自己的订阅中工作,请使用以下命令。

用于创建资源组的语法是:

New-AzResourceGroup -Name <resource-group-name> -Location <location>

列出所有资源组

若要检索包含有效订阅中所有资源组的列表,请使用 Get-AzResourceGroup cmdlet。

Get-AzResourceGroup

有关更简洁的视图,可以通过管道将输出传递给 Format-Table cmdlet:

Get-AzResourceGroup | Format-Table

也可以筛选输出结果以仅显示特定的资源组:

Get-AzResourceGroup -Name <resource-group-name>

创建一个 Azure 虚拟机

创建虚拟机 (VM) 是可以使用 Azure PowerShell 执行的常见任务。

New-AzVM cmdlet 用于创建 VM。 此 cmdlet 具有多个参数,用于处理 VM 的广泛配置设置。 大多数参数都有合理的默认值,因此我们通常只需要指定五个关键项:

  • ResourceGroupName:放置了新 VM 的资源组。
  • 名称:Azure 中 VM 的名称。
  • 位置:预配了 VM 的地理区域。
  • 凭证:包含 VM 管理员帐户的用户名和密码的对象。 使用 Get-Credential cmdlet 来提示输入用户名和密码并将其存储为凭据对象。
  • 图像:用于 VM 的操作系统映像,通常是 Linux 发行版或 Windows Server。

下面是一个示例:

$azVmParams = @{
    ResourceGroupName = '<resource-group-name>'
    Name              = '<machine-name>'
    Credential        = '<credentials-object>'
    Location          = '<location>'
    Image             = '<image-name>'
}
New-AzVM @azVmParams

可以通过展开 New-AzVM cmdlet 将这些参数作为哈希表提供,如前面的示例所示。 或者,可以直接向 New-AzVM cmdlet 提供参数,或使用其他 cmdlet 配置虚拟机,例如 Set-AzVMOperatingSystemSet-AzVMSourceImageAdd-AzVMNetworkInterfaceSet-AzVMOSDisk

例如,若要直接向 New-AzVM cmdlet 提供参数,请使用以下语法:

New-AzVM -Name <vm-name> -ResourceGroupName <resource-group-name> -Credential (Get-Credential) ...

示例:获取 VM 的信息

可使用 Get-AzVM 命令列出订阅中的 VM。 此命令还支持通过指定 Name 参数来检索特定 VM。

Get-AzVM 的结果存储在变量中:

$vm = Get-AzVM -Name <vm-name> -ResourceGroupName <resource-group-name>

$vm 变量的内容是可以与之交互的对象。 例如,可以对此对象进行更改,然后使用 Update-AzVM 命令将更改推送到 Azure:

$resourceGroupName = '<resource-group-name>'
$vm = Get-AzVM -Name <vm-name> -ResourceGroupName $resourceGroupName
$vm.HardwareProfile.vmSize = 'Standard_DS3_v2'

Update-AzVM -ResourceGroupName $resourceGroupName -VM $vm

在交互模式下使用 PowerShell 适用于一次性任务。 例如,如果资源组仅在项目的生存期内创建一次,则可以以交互方式创建和管理这些资源组。 对于仅执行一次的任务来说,使用交互模式通常比编写脚本更快更容易。