练习 - 使用 Azure PowerShell 以交互方式创建 Azure 资源
在原始方案中,必须创建虚拟机 (VM) 来测试客户关系管理 (CRM) 软件。 当新版本可用时,你想要快速新建 VM,以便通过干净的映像测试完整安装体验。 测试完成后,可以删除 VM。
让我们来尝试用于创建 VM 的命令。
使用 Azure PowerShell 创建 Linux VM
我们使用的是 Azure 沙盒,因此无需创建资源组。 使用现有的沙盒资源组 [沙盒资源组名称]
下面介绍如何使用 Azure PowerShell 创建新的 Azure VM:
使用
New-AzVM
cmdlet 创建 VM。指定沙盒资源组:[沙盒资源组名称]
。 根据组织的命名标准命名 VM。
从可用 Azure 沙盒位置的列表中选择靠近你的位置。
- 美国西部2
- 美国中南部
- 美国中部
- 美国东部
- 欧洲西部
- 亚洲东南部
- 日本东部
- 巴西南部
- 澳大利亚东南部
- 印度中部
使用 Ubuntu Linux 映像:
Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest
。使用
Get-Credential
cmdlet 设置 VM 管理员凭据。使用用于 SSH 访问的端口
22
添加 OpenPorts 参数。创建用于 SSH 登录的公共 IP 地址名称。
$azVmParams = @{ ResourceGroupName = '<rgn>[sandbox resource group name]</rgn>' 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
提示
可以使用“复制”按钮将命令复制到剪贴板。 要粘贴,请右键单击 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 <rgn>[sandbox resource group name]</rgn>
查看有关 VM 的信息:
若要查看有关 VM 的信息,请显示变量的内容。
$vm
示例输出:
ResourceGroupName : <rgn>[sandbox resource group name]</rgn> Id : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>[sandbox resource group name]</rgn>/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 属性:
可以通过成员访问运算符 (
.
) 检查复杂对象。 例如,若要查看与 HardwareProfile 部分关联的VMSize
对象中的属性,请运行以下命令:$vm.HardwareProfile
若要获取其中一个磁盘上的信息,请运行以下命令:
$vm.StorageProfile.OsDisk
获取可用的 VM 大小:
将 VM 对象传递到其他 cmdlet 以获取可用大小:
$vm | Get-AzVMSize
获取公共 IP 地址:
检索公共 IP 地址以连接到 VM 并将其存储在变量中。
$ip = Get-AzPublicIpAddress -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -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-AzVM
cmdlet 来将其删除。Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
提示是否继续时,输入“Y”,然后按 Enter。
列出资源组中的所有资源:
使用
Get-AzResource
cmdlet 列出资源组中的所有资源。 结果通过管道传递给Select-Object
以返回特定属性:Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Select-Object -Property Name, ResourceType, ResourceGroupName
应该会看到几个仍然存在的资源(包括磁盘、虚拟网络等):
Name ResourceType ResourceGroupName ---- ------------ ----------------- cloudshell Microsoft.Storage/storageAccounts <rgn>[sandbox resource group name]</rgn> testvm-eus-01 Microsoft.Network/virtualNetworks <rgn>[sandbox resource group name]</rgn> testvm-eus-01 Microsoft.Network/publicIPAddresses <rgn>[sandbox resource group name]</rgn> testvm-eus-01 Microsoft.Network/networkSecurityGroups <rgn>[sandbox resource group name]</rgn> testvm-eus-01 Microsoft.Network/networkInterfaces <rgn>[sandbox resource group name]</rgn> testvm-eus-01_OsDisk_1 Microsoft.Compute/disks <rgn>[sandbox resource group name]</rgn>
Remove-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 脚本自动执行这些任务。