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

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

本教程需要 Azure PowerShell 模块 3.6 或更高版本。 运行 Get-Module -ListAvailable AzureRM 即可查找版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 如果在本地运行 PowerShell,则还需运行 Login-AzureRmAccount -EnvironmentName AzureChinaCloud 以创建与 Azure 的连接。

创建资源组

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

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

PowerShell复制
New-AzureRmResourceGroup -ResourceGroupName myResourceGroupVM -Location ChinaEast

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

创建虚拟机

虚拟机必须连接到虚拟网络。 可以通过网络接口卡使用公共 IP 地址与虚拟机通信。

创建虚拟网络

使用 New-AzureRmVirtualNetworkSubnetConfig 创建子网:

PowerShell复制
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
-Name mySubnet `
-AddressPrefix 192.168.1.0/24

使用 New-AzureRmVirtualNetwork 创建虚拟网络:

PowerShell复制
$vnet = New-AzureRmVirtualNetwork `
-ResourceGroupName myResourceGroupVM `
-Location ChinaEast `
-Name myVnet `
-AddressPrefix 192.168.0.0/16 `
-Subnet $subnetConfig

创建公共 IP 地址

使用 New-AzureRmPublicIpAddress 创建一个公共 IP 地址:

PowerShell复制
$pip = New-AzureRmPublicIpAddress `
-ResourceGroupName myResourceGroupVM `
-Location ChinaEast `
-AllocationMethod Static `
-Name myPublicIPAddress

创建网络接口卡

使用 New-AzureRmNetworkInterface 创建网络接口卡:

PowerShell复制
$nic = New-AzureRmNetworkInterface `
-ResourceGroupName myResourceGroupVM `
-Location ChinaEast `
-Name myNic `
-SubnetId $vnet.Subnets[0].Id `
-PublicIpAddressId $pip.Id

创建网络安全组

Azure 网络安全组 (NSG) 控制一个或多个虚拟机的入站和出站流量。 网络安全组规则允许或拒绝特定端口上或端口范围内的网络流量。 这些规则还可包括源地址前缀,这样只有源自预定义源的流量才可与虚拟机进行通信。 若要访问正安装的 IIS web 服务器,必须添加入站 NSG 规则。

若要创建入站 NSG 规则,请使用 Add-AzureRmNetworkSecurityRuleConfig。 以下示例创建名为“myNSGRule”的 NSG 规则,这将为虚拟机打开端口 3389:

PowerShell复制
$nsgRule = New-AzureRmNetworkSecurityRuleConfig `
-Name myNSGRule `
-Protocol Tcp `
-Direction Inbound `
-Priority 1000 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 3389 `
-Access Allow

将 myNSGRule 与 New-AzureRmNetworkSecurityGroup 结合使用,创建 NSG:

PowerShell复制
$nsg = New-AzureRmNetworkSecurityGroup `
-ResourceGroupName myResourceGroupVM `
-Location ChinaEast `
-Name myNetworkSecurityGroup `
-SecurityRules $nsgRule

使用 Set-AzureRmVirtualNetworkSubnetConfig 将 NSG 添加到虚拟网络中的子网:

PowerShell复制
Set-AzureRmVirtualNetworkSubnetConfig `
-Name mySubnet `
-VirtualNetwork $vnet `
-NetworkSecurityGroup $nsg `
-AddressPrefix 192.168.1.0/24

使用 Set-AzureRmVirtualNetwork 更新虚拟网络:

PowerShell复制
Set-AzureRmVirtualNetwork -VirtualNetwork $vnet

创建虚拟机

创建虚拟机时,可使用多个选项,例如操作系统映像、磁盘大小调整和管理凭据。 在此示例中,将创建名为“myVM”的虚拟机,它运行最新版本的 Windows Server 2016 Datacenter。

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

PowerShell复制
$cred = Get-Credential

使用 New-AzureRmVMConfig 为虚拟机创建初始配置:

PowerShell复制
$vm = New-AzureRmVMConfig -VMName myVM -VMSize Standard_D1

使用 Set-AzureRmVMOperatingSystem 向虚拟机配置添加操作系统信息:

PowerShell复制
$vm = Set-AzureRmVMOperatingSystem `
-VM $vm `
-Windows `
-ComputerName myVM `
-Credential $cred `
-ProvisionVMAgent -EnableAutoUpdate

使用 Set-AzureRmVMSourceImage 向虚拟机配置添加映像信息:

PowerShell复制
$vm = Set-AzureRmVMSourceImage `
-VM $vm `
-PublisherName MicrosoftWindowsServer `
-Offer WindowsServer `
-Skus 2016-Datacenter `
-Version latest

使用 Set-AzureRmVMOSDisk 向虚拟机配置添加操作系统磁盘设置:

PowerShell复制
$vm = Set-AzureRmVMOSDisk `
-VM $vm `
-Name myOsDisk `
-DiskSizeInGB 128 `
-CreateOption FromImage `
-Caching ReadWrite

使用 Add-AzureRmVMNetworkInterface 向虚拟机配置添加以前创建的网络接口卡:

PowerShell复制
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id

使用 New-AzureRmVM 创建虚拟机。

PowerShell复制
New-AzureRmVM -ResourceGroupName myResourceGroupVM -Location ChinaEast -VM $vm

连接到 VM

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

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

PowerShell复制
Get-AzureRmPublicIpAddress -ResourceGroupName myResourceGroupVM  | Select IpAddress

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

PowerShell复制
mstsc /v:<publicIpAddress>

了解 VM 映像

Azure 应用商店包括许多可用于新建虚拟机的虚拟机映像。 在之前的步骤中,使用 Windows Server 2016 Datacenter 映像创建了虚拟机。 在此步骤中,使用 PowerShell 模块在应用商店搜索其他 Windows 映像,这些映像也可充当新 VM 的基础。 此过程包括查找发布者、产品/服务和映像名称 (Sku)。

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

powersehll复制
Get-AzureRmVMImagePublisher -Location "ChinaEast"

使用 Get AzureRmVMImageOffer 返回映像产品/服务的列表。 使用此命令,返回筛选了特定发布者的列表。

PowerShell复制
Get-AzureRmVMImageOffer -Location "ChinaEast" -PublisherName "MicrosoftWindowsServer"
PowerShell复制
Offer             PublisherName          Location
----- ------------- --------
Windows-HUB MicrosoftWindowsServer ChinaEast
WindowsServer MicrosoftWindowsServer ChinaEast
WindowsServer-HUB MicrosoftWindowsServer ChinaEast

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

PowerShell复制
Get-AzureRmVMImageSku -Location "ChinaEast" -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer"
PowerShell复制
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。 此示例为 VM 对象设置映像名称。 请参阅本教程前面的示例,了解完整的部署步骤。

PowerShell复制
$vm = Set-AzureRmVMSourceImage `
-VM $vm `
-PublisherName MicrosoftWindowsServer `
-Offer WindowsServer `
-Skus 2016-Datacenter-with-Containers `
-Version latest

了解 VM 大小

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

VM 大小

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

类型 大小 说明
常规用途 DSv2、Dv2、DS、D、Av2、A0-7 CPU 与内存之比均衡。 适用于开发/测试、小到中型应用程序和数据解决方案。
计算优化 Fs, F 高 CPU 与内存之比。 适用于中等流量的应用程序、网络设备和批处理。
内存优化 GS, G, DSv2, DS, Dv2, D 较高的内存核心比。 适用于关系数据库、中到大型缓存和内存中分析。
存储优化 Ls 高磁盘吞吐量和 IO。 适用于大数据、SQL 和 NoSQL 数据库。
GPU NV, NC 专门针对大量图形绘制和视频编辑的 VM。
高性能 H, A8-11 功能极其强大的 CPU VM 具有可选的高吞吐量网络接口 (RDMA)。

查找可用的 VM 大小

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

PowerShell复制
Get-AzureRmVMSize -Location ChinaEast

调整 VM 的大小

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

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

PowerShell复制
Get-AzureRmVMSize -ResourceGroupName myResourceGroupVM -VMName myVM

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

PowerShell复制
$vm = Get-AzureRmVM -ResourceGroupName myResourceGroupVM  -VMName myVM
$vm.HardwareProfile.VmSize = "Standard_D4"
Update-AzureRmVM -VM $vm -ResourceGroupName myResourceGroupVM

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

PowerShell复制
Stop-AzureRmVM -ResourceGroupName myResourceGroupVM -Name "myVM" -Force
$vm = Get-AzureRmVM -ResourceGroupName myResourceGroupVM -VMName myVM
$vm.HardwareProfile.VmSize = "Standard_F4s"
Update-AzureRmVM -VM $vm -ResourceGroupName myResourceGroupVM
Start-AzureRmVM -ResourceGroupName myResourceGroupVM -Name $vm.name

VM 电源状态

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

电源状态

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

查找电源状态

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

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

输出:

PowerShell复制
Status
------
PowerState/running

管理任务

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

停止虚拟机

使用 Stop-AzureRmVM 停止并解除分配虚拟机:

PowerShell复制
Stop-AzureRmVM -ResourceGroupName myResourceGroupVM -Name "myVM" -Force

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

启动虚拟机

PowerShell复制
Start-AzureRmVM -ResourceGroupName myResourceGroupVM -Name myVM

删除资源组

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

PowerShell复制
Remove-AzureRmResourceGroup -Name myResourceGroupVM -Force

后续步骤

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

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

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

创建和管理 VM 磁盘

立即访问http://market.azure.cn

使用 Azure PowerShell 模块创建和管理 Windows VM的更多相关文章

  1. 使用 Azure CLI 创建和管理 Linux VM

    Azure 虚拟机提供完全可配置的灵活计算环境. 本教程介绍 Azure 虚拟机的基本部署项目,例如选择 VM 大小.选择 VM 映像和部署 VM. 你将学习如何执行以下操作: 创建并连接到 VM 选 ...

  2. 排查在 Azure 中创建、重启 Windows VM 或调整其大小时发生的分配失败

    创建 VM.重新启动已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配 ...

  3. 使用 Azure PowerShell 管理 Azure 虚拟网络和 Windows 虚拟机

    Azure 虚拟机使用 Azure 网络进行内部和外部网络通信. 本教程介绍了如何在虚拟网络中创建多个虚拟机 (VM),以及如何在虚拟机之间配置网络连接. 你将学习如何执行以下操作: 创建虚拟网络 创 ...

  4. [New Portal]Windows Azure Virtual Machine (16) 使用Azure PowerShell创建Azure Virtual Machine

    <Windows Azure Platform 系列文章目录> 注:本章内容和之前的[New Portal]Windows Azure Virtual Machine (12) 在本地制作 ...

  5. 使用 Windows PowerShell 管理Windows Azure映像

    你可以使用 Azure PowerShell 模块中的 cmdlet 管理可供你的 Azure 订阅使用的映像.这包括 Azure 提供的映像以及你上载的映像.对于某些映像任务,你还可以使用 Azur ...

  6. 新版Azure Automation Account 浅析(二) --- 更新Powershell模块和创建Runbook

    前篇我们讲了怎样创建一个自动化账户以及创建时候"Run As Account"选项背后的奥秘.这一篇针对在Azure自动化账户中使用Powershell Runbook的用户讲一下 ...

  7. 用于创建和管理 Azure 虚拟机的常用 PowerShell 命令

    本文介绍一些可用于在 Azure 订阅中创建和管理虚拟机的 Azure PowerShell 命令. 若要获取特定命令行开关和选项的详细帮助,可以使用 Get-Help 命令. 有关安装最新版 Azu ...

  8. 使用 Azure PowerShell 监视和更新 Windows 虚拟机

    Azure 监视使用代理从 Azure VM 收集启动和性能数据,将此数据存储在 Azure 存储中,并使其可供通过门户.Azure PowerShell 模块和 Azure CLI 进行访问. 使用 ...

  9. Azure PowerShell (5) 使用Azure PowerShell创建简单的Azure虚拟机和Linux虚拟机

    <Windows Azure Platform 系列文章目录> 本文介绍的是国外的Azure Global.如果是国内由世纪互联运维的Azure China,请参考这篇文档: Azure ...

随机推荐

  1. spring与struts简单整合案例

    Spring,负责对象对象创建 Struts, 用Action处理请求 Spring与Struts框架整合, 关键点:让struts框架action对象的创建,交给spring完成! 步骤: 1)引入 ...

  2. Vue.js基础拾遗

    本篇目录: 模版语法 插值 指令 v-bind指令 v-on指令 计算属性与侦听器 计算属性VS方法 计算属性VS侦听属性 Class与Style绑定 绑定HTML Class 绑定内联样式 条件渲染 ...

  3. Makefile中.PHONY的作用

    单词phony (即phoney)的意思是:伪造的,假的.来自collins的解释是: If you describe something as phoney, you disapprove of i ...

  4. ExecutorService——<T> Future<T> submit(Callable<T> task)

    提交一个有返回值的任务用于执行,且返回一个Future对象,用来表示行将发生的任务的结果. 如果任务执行成功的话,那么Future对象的get方法将会返回任务的执行结果T.   如果你想要立即阻塞,等 ...

  5. GCC 多文件编辑

    #include <stdio.h> int plus(int a, int b); int minus(int a, int b); int multiply(int a, int b) ...

  6. SpringMVC Controller介绍及常见注解

    一.简介 在SpringMVC中,控制器Controller负责处理由DispatcherServlet分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model,然后再把该Model返 ...

  7. oracle 删除服务sc delete Oracle

    oracle 删除服务sc delete OracleVssWriterorcl -----(oracle orcl vss writer service的服务名!)

  8. Visual Studio 命令提示符

    Visual Studio 命令提示和 SDK 命令提示会自动设置环境变量,使您能够轻松使用 .NET Framework 工具. 在 .NET Framework 4 版 和更高版本中,应使用 Vi ...

  9. 【 js 基础 】【 源码学习 】backbone 源码阅读(三)

    最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-stud ...

  10. JavaScript中=、==、===以及!=、!==的区别与联系

    JavaScript中=.==.===以及!=.!==的区别与联系   在JavaScript中,“=”代表赋值操作:“==”先转换类型再比较,“===”先判断类型,如果不是同一类型直接为false. ...