教程:使用 Azure PowerShell 创建和管理 Windows VM

Azure 虚拟机提供完全可配置的灵活计算环境。 本教程介绍 Azure 虚拟机 (VM) 的基本部署任务,例如选择 VM 大小、选择 VM 映像和部署 VM。 你将学习如何执行以下操作:

  • 创建并连接到 VM
  • 选择并使用 VM 映像
  • 查看和使用特定 VM 大小
  • 调整 VM 的大小
  • 查看并了解 VM 状态

启动本地 Shell

如果选择在本地安装并使用 PowerShell,则本教程需要 Azure PowerShell 模块 5.7.0 或更高版本。 运行 Get-Module -ListAvailable AzureRM 即可查找版本。 如果需要升级,请参阅安装 Azure PowerShell 模块。 如果在本地运行 PowerShell,则还需运行 Connect-AzureRmAccount -Environment AzureChinaCloud 以创建与 Azure 的连接。

创建资源组

使用 New-AzureRmResourceGroup 命令创建资源组。

Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 必须在创建虚拟机前创建资源组。 在以下示例中,在“ChinaEast”区域中创建了名为“myResourceGroupVM”的资源组:

New-AzureRmResourceGroup `
   -ResourceGroupName "myResourceGroupVM" `
   -Location "ChinaEast"

创建或修改 VM 时指定资源组,本教程会对此进行演示。

创建 VM

创建 VM 时,可使用多个选项,例如操作系统映像、网络配置和管理凭据。 此示例创建名为 myVM 的 VM,运行默认版本的 Windows Server 2016 Datacenter。

使用 Get-Credential 设置 VM 上管理员帐户所需的用户名和密码:

$cred = Get-Credential

使用 New-AzureRmVM 创建 VM。

New-AzureRmVm `
    -ResourceGroupName "myResourceGroupVM" `
    -Name "myVM" `
    -Location "chinaeast" `
    -VirtualNetworkName "myVnet" `
    -SubnetName "mySubnet" `
    -SecurityGroupName "myNetworkSecurityGroup" `
    -PublicIpAddressName "myPublicIpAddress" `
    -Credential $cred

连接到 VM

在部署完成后,创建到 VM 的远程桌面连接。

运行以下命令,以返回 VM 的公共 IP 地址。 需记下此 IP 地址,以便在后续步骤中使用浏览器连接到它测试 Web 连接。

Get-AzureRmPublicIpAddress `
   -ResourceGroupName "myResourceGroupVM"  | Select IpAddress

在本地计算机上使用以下命令创建与 VM 的远程桌面会话。 将 IP 地址替换为你的 VM 的 publicIPAddress。 出现提示时,输入创建 VM 时使用的凭据。

mstsc /v:<publicIpAddress>

在“Windows 安全性”窗口中,依次选择“更多选择”、“使用其他帐户”。 键入针对 VM 创建的用户名和密码,然后单击“确定”。

了解市场映像

Azure 市场包括许多可用于新建 VM 的映像。 在之前的步骤中,使用 Windows Server 2016 Datacenter 映像创建了 VM。 在此步骤中,我们将使用 PowerShell 模块在市场中搜索其他 Windows 映像,这些映像也可用作新 VM 的基础。 此过程包括查找发布者、产品/服务、SKU,以及用于标识映像的版本号(可选)。

使用 Get AzureRmVMImagePublisher 命令返回映像发布者的列表:

Get-AzureRmVMImagePublisher -Location "ChinaEast"

使用 Get AzureRmVMImageOffer 返回映像产品/服务的列表。 使用此命令,返回筛选了指定发布者(名为 MicrosoftWindowsServer)的列表:

Get-AzureRmVMImageOffer -Location "ChinaEast" -PublisherName "MicrosoftWindowsServer"

结果将如以下示例所示:

Offer             PublisherName          Location
-----             -------------          --------
Windows-HUB       MicrosoftWindowsServer ChinaEast
WindowsServer     MicrosoftWindowsServer ChinaEast
WindowsServer-HUB MicrosoftWindowsServer ChinaEast

然后,使用 Get AzureRmVMImageSku 命令对发布者和产品/服务名称进行筛选,以返回映像名称的列表。

Get-AzureRmVMImageSku -Location "ChinaEast" -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer"

结果将如以下示例所示:

Skus                            Offer         PublisherName          Location
----                            -----         -------------          --------
2008-R2-SP1                     WindowsServer MicrosoftWindowsServer ChinaEast  
2008-R2-SP1-zhcn                WindowsServer MicrosoftWindowsServer ChinaEast  
2012-Datacenter                 WindowsServer MicrosoftWindowsServer ChinaEast  
2012-Datacenter-zhcn            WindowsServer MicrosoftWindowsServer ChinaEast  
2012-R2-Datacenter              WindowsServer MicrosoftWindowsServer ChinaEast  
2012-R2-Datacenter-zhcn         WindowsServer MicrosoftWindowsServer ChinaEast  
2016-Datacenter                 WindowsServer MicrosoftWindowsServer ChinaEast  
2016-Datacenter-Server-Core     WindowsServer MicrosoftWindowsServer ChinaEast  
2016-Datacenter-with-Containers WindowsServer MicrosoftWindowsServer ChinaEast  
2016-Nano-Server                WindowsServer MicrosoftWindowsServer ChinaEast

此信息可用于部署具有特定映像的 VM。 此示例通过将最新版本的 Windows Server 2016 与容器映像配合使用来部署 VM。

New-AzureRmVm `
    -ResourceGroupName "myResourceGroupVM" `
    -Name "myVM2" `
    -Location "ChinaEast" `
    -VirtualNetworkName "myVnet" `
    -SubnetName "mySubnet" `
    -SecurityGroupName "myNetworkSecurityGroup" `
    -PublicIpAddressName "myPublicIpAddress2" `
    -ImageName "MicrosoftWindowsServer:WindowsServer:2016-Datacenter-with-Containers:latest" `
    -Credential $cred `
    -AsJob

-AsJob 参数以后台任务的方式创建 VM,因此 PowerShell 提示符会返回到你所在的位置。 可以通过 Get-Job cmdlet 查看后台作业的详细信息。

了解 VM 大小

VM 大小决定 VM 可用计算资源(如 CPU、GPU 和内存)的数量。 创建的虚拟机大小应适合工作负荷。 如果工作负荷增加,也可重设现有虚拟机的大小。

VM 大小

下表将大小分类成了多个用例。

类型 常见大小 说明
常规用途 B、Dsv3、Dv3、DSv2、Dv2、Av2 CPU 与内存之比均衡。 适用于开发/测试、小到中型应用程序和数据解决方案。
计算优化 Fsv2、Fs、F 高 CPU 与内存之比。 适用于中等流量的应用程序、网络设备和批处理。
内存优化 Esv3、Ev3、M、DSv2、Dv2 较高的内存核心比。 适用于关系数据库、中到大型缓存和内存中分析。
GPU NCv3 专门针对大量图形绘制和视频编辑的 VM。

查找可用的 VM 大小

若要查看在特定区域可用的 VM 大小的列表,请使用 Get-AzureRmVMSize 命令。

Get-AzureRmVMSize -Location "ChinaEast"

调整 VM 的大小

部署 VM 后,可调整其大小以增加或减少资源分配。

调整 VM 大小之前,请检查所需的大小在当前 VM 群集上是否可用。 使用 Get AzureRmVMSize 命令返回大小的列表。

Get-AzureRmVMSize -ResourceGroupName "myResourceGroupVM" -VMName "myVM"

如果所需大小可用,则可从开机状态调整 VM 大小,但需在此操作期间重启 VM。

$vm = Get-AzureRmVM -ResourceGroupName "myResourceGroupVM"  -VMName "myVM"
$vm.HardwareProfile.VmSize = "Standard_DS3_v2"
Update-AzureRmVM -VM $vm -ResourceGroupName "myResourceGroupVM"

如果所需大小在当前群集上不可用,则需解除分配 VM,才能执行重设大小操作。 解除分配 VM 时会删除临时磁盘上的任何数据,并且如果不使用静态 IP 地址,则公共 IP 地址会发生更改。

Stop-AzureRmVM `
   -ResourceGroupName "myResourceGroupVM" `
   -Name "myVM" -Force
$vm = Get-AzureRmVM `
   -ResourceGroupName "myResourceGroupVM"  `
   -VMName "myVM"
$vm.HardwareProfile.VmSize = "Standard_E2s_v3"
Update-AzureRmVM -VM $vm `
   -ResourceGroupName "myResourceGroupVM"
Start-AzureRmVM `
   -ResourceGroupName "myResourceGroupVM"  `
   -Name $vm.name

VM 电源状态

Azure VM 可能会处于多种电源状态之一。 从虚拟机监控程序的角度来看,此状态表示 VM 的当前状态。

电源状态

电源状态 说明
正在启动 指示正在启动虚拟机。
正在运行 指示虚拟机正在运行。
正在停止 指示正在停止虚拟机。
已停止 指示 VM 已停止。 虚拟机处于停止状态时仍会产生计算费用。
正在解除分配 指示 VM 正解除分配。
已解除分配 指示 VM 已从监控程序中删除,但仍可在控制面板中使用。 处于 Deallocated 状态的虚拟机不会产生计算费用。
- 指示 VM 的电源状态未知。

查找电源状态

若要检索特定 VM 的状态,请使用 Get-AzureRmVM 命令。 请确保为 VM 和资源组指定有效的名称。

Get-AzureRmVM `
    -ResourceGroupName "myResourceGroupVM" `
    -Name "myVM" `
    -Status | Select @{n="Status"; e={$_.Statuses[1].Code}}

输出将如以下示例所示:

Status
------
PowerState/running

管理任务

在 VM 生命周期中,可能需要运行管理任务,例如启动、停止或删除 VM。 此外,可能还需要创建脚本来自动执行重复或复杂的任务。 使用 Azure PowerShell,可从命令行或脚本运行许多常见的管理任务。

停止 VM

使用 Stop-AzureRmVM 停止并解除分配 VM:

Stop-AzureRmVM `
   -ResourceGroupName "myResourceGroupVM" `
   -Name "myVM" -Force

若要让 VM 保持已预配状态,请使用 -StayProvisioned 参数。

启动 VM

Start-AzureRmVM `
   -ResourceGroupName "myResourceGroupVM" `
   -Name "myVM"

删除资源组

删除资源组会删除其包含的所有资源。

Remove-AzureRmResourceGroup `
   -Name "myResourceGroupVM" `
   -Force

后续步骤

在本教程中,你已学习 VM 创建和管理的基本知识,例如如何:

  • 创建并连接到 VM
  • 选择并使用 VM 映像
  • 查看和使用特定 VM 大小
  • 调整 VM 的大小
  • 查看并了解 VM 状态

请转到下一教程,了解 VM 磁盘。