练习 - 使用 Azure PowerShell 以交互方式创建 Azure 资源
在原始方案中,必须创建虚拟机 (VM) 来测试客户关系管理 (CRM) 软件。 当新版本可用时,你想要快速新建 VM,以便通过干净的映像测试完整安装体验。 测试完成后,可以删除 VM。
让我们来尝试用于创建 VM 的命令。
注释
本练习可选做。 若要完成本练习,则需要在开始之前创建 Azure 订阅。 如果没有 Azure 帐户或不想暂时创建一个帐户,可以通读说明,以便了解所显示的信息。
注释
需要使用资源组来完成本练习中的步骤。 可以使用已创建的资源组,也可以专门为此练习创建新的资源组。 如果选择创建新的资源组,这样就可以更轻松地清理完成练习时创建的任何资源。 如果没有现有资源组或想要为此练习创建新的资源组,可以按照 使用 Azure 门户和 Azure 资源管理器 中的步骤管理资源组,使用 Azure 门户创建资源组,或者可以使用 Azure CLI 通过 Azure CLI 创建资源组,按照 “管理 Azure 资源组 ”中的步骤作。
使用 Azure PowerShell 创建 Linux VM
下面介绍如何使用 Azure PowerShell 创建新的 Azure VM:
使用
New-AzVMcmdlet 创建 VM。- 指定 VM 的资源组。
- 根据组织的命名标准命名 VM。
- 从可用 Azure 区域列表中选择离你近的位置。
- 使用 Ubuntu Linux 映像:
Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest。 - 使用
Get-Credentialcmdlet 设置 VM 管理员凭据。 - 使用用于 SSH 访问的端口 添加 OpenPorts
22参数。 - 创建用于 SSH 登录的公共 IP 地址名称。
$azVmParams = @{ ResourceGroupName = 'myResourceGroupName' Name = 'testvm-eus-01' Credential = (Get-Credential) Location = 'eastus' Image = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest' OpenPorts = 22 PublicIpAddressName = 'testvm-eus-01' } New-AzVm @azVmParams将前面的示例中的 myResourceGroupName 替换为现有资源组的名称或为此练习创建的资源组的名称。
提示
可以使用“复制”按钮将命令复制到剪贴板。 要粘贴,请右键单击 Cloud Shell 终端中的新行,然后选择“粘贴”,或使用 Shift+Insert 键盘快捷方式(在 macOS 上为 ⌘+V)。
输入凭据:
出现提示时,输入用户名和密码,并遵循以下准则:密码必须为 12-123 个字符,满足以下四个复杂性要求中的三个:小写字符、大写字符、数字和特殊字符(正则表达式匹配 [\W_])。 有关详细信息,请参阅 Linux VM 常见问题解答。
等待 VM 创建:
VM 创建过程需要几分钟才能完成。
查询 VM:
完成后,查询 VM 并将 VM 对象分配给变量 (
$vm)。$vm = Get-AzVM -Name testvm-eus-01 -ResourceGroupName myResourceGroupName查看有关 VM 的信息:
若要查看有关 VM 的信息,请显示变量的内容。
$vm示例输出:
ResourceGroupName : myResourceGroupName Id : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/testvm-eus-01 VmId : 00000000-0000-0000-0000-000000000000 Name : testvm-eus-01 Type : Microsoft.Compute/virtualMachines Location : eastus Tags : {} HardwareProfile : {VmSize} NetworkProfile : {NetworkInterfaces} OSProfile : {ComputerName, AdminUsername, LinuxConfiguration, Secrets} ProvisioningState : Succeeded StorageProfile : {ImageReference, OsDisk, DataDisks} ...检查 VM 属性:
可以通过成员访问运算符 (
.) 检查复杂对象。 例如,若要查看与 HardwareProfileVMSize部分关联的 对象中的属性,请运行以下命令:$vm.HardwareProfile若要获取其中一个磁盘上的信息,请运行以下命令:
$vm.StorageProfile.OsDisk获取可用的 VM 大小:
将 VM 对象传递到其他 cmdlet 以获取可用大小:
$vm | Get-AzVMSize获取公共 IP 地址:
检索公共 IP 地址以连接到 VM 并将其存储在变量中。
$ip = Get-AzPublicIpAddress -ResourceGroupName myResourceGroupName -Name testvm-eus-01连接到 VM:
使用变量中的 IP 地址通过 SSH 连接到 VM。 例如,如果用户名为
bob,请使用以下命令:ssh bob@$($ip.IpAddress)通过键入 exit 进行注销。
删除 VM
若要尝试其他命令,请删除 VM。 执行以下步骤:
关闭 VM:
运行以下命令:
Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName提示是否继续时,输入“Y”,然后按 Enter。
删除 VM:
VM 停止后,运行
Remove-AzVMcmdlet 来将其删除。Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName提示是否继续时,输入“Y”,然后按 Enter。
列出资源组中的所有资源:
使用
Get-AzResourcecmdlet 列出资源组中的所有资源。 结果通过管道传递给Select-Object以返回特定属性:Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Select-Object -Property Name, ResourceType, ResourceGroupName应该会看到几个仍然存在的资源(包括磁盘、虚拟网络等):
Name ResourceType ResourceGroupName ---- ------------ ----------------- cloudshell Microsoft.Storage/storageAccounts myResourceGroupName testvm-eus-01 Microsoft.Network/virtualNetworks myResourceGroupName testvm-eus-01 Microsoft.Network/publicIPAddresses myResourceGroupName testvm-eus-01 Microsoft.Network/networkSecurityGroups myResourceGroupName testvm-eus-01 Microsoft.Network/networkInterfaces myResourceGroupName testvm-eus-01_OsDisk_1 Microsoft.Compute/disks myResourceGroupNameRemove-AzVM命令只删除 VM。 它不会清理其他任何资源。 若要手动清理它们,请执行以下步骤:删除网络接口:
Get-AzNetworkInterface -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name | Remove-AzNetworkInterface提示是否继续时,输入“Y”,然后按 Enter。
删除网络安全组:
Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName | Remove-AzNetworkSecurityGroup提示是否继续时,输入“Y”,然后按 Enter。
删除公共 IP 地址:
Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName | Remove-AzPublicIpAddress提示是否继续时,输入“Y”,然后按 Enter。
删除虚拟网络:
Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName | Remove-AzVirtualNetwork提示是否继续时,输入“Y”,然后按 Enter。
删除托管 OS 磁盘:
Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name | Remove-AzDisk提示是否继续时,输入“Y”,然后按 Enter。
验证是否删除了所有资源:
检查资源组以确保删除所有资源:
Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Select-Object -Property Name, ResourceType, ResourceGroupName
虽然以交互方式执行了这些命令,但更好的方法是编写 PowerShell 脚本。 通过脚本,你将来能够重复使用用于创建或删除 VM 的逻辑
接下来,让我们看看如何使用 PowerShell 脚本自动执行这些任务。