1.脚本背景信息:

a.使用平台镜像(Windows Server 2016 zh-cn)部署高性能托管磁盘虚拟机

b.虚拟机默认不开启Boot诊断

c.添加三块已经创建好的数据磁盘

d.添加已创建好的网络接口(该网络接口已经绑定了NSG,固定公网IP,固定内网IP)

b.需要将虚拟机部署在制定的可用性集

$resourcegroup = "hlmrgt1"

$location = "Chinanorth2"

$vmsize="Standard_DS2_v2"

$cred=Get-Credential

$osdiskcache='ReadWrite'

#/subscriptions/0b4b20c5-29b3-4dd9-bfdc-40b75f1dc4c9/resourceGroups/hlmrgt1/providers/Microsoft.Network/networkInterfaces/hlmnict1

$vmname='hlmvmt1'

#$vnetname='hlmvnett1'

#$publicip='hlmpublict1'

$nicname='hlmnict1'

$availabilitysetname='hlmast1'

#$storageType='Standard_LRS'

$storageType='Premium_LRS'

#/subscriptions/0b4b20c5-29b3-4dd9-bfdc-40b75f1dc4c9/resourceGroups/hlmrgt1/providers/Microsoft.Compute/disks/hlmmadisk1

$dataDiskName1='hlmmadisk1'

$dataDiskName2='hlmmadisk2'

$dataDiskName3='hlmmadisk3'

$OSDiskName='hlmmaosdisk'

#$OSDiskUri='https://Mydisk.blob.core.windows.net/disks/MyOSDisk.vhd'

$dataDisk1=Get-AzureRmDisk -DiskName $dataDiskName1 -ResourceGroupName $resourcegroup

$dataDisk2=Get-AzureRmDisk -DiskName $dataDiskName2 -ResourceGroupName $resourcegroup

$dataDisk3=Get-AzureRmDisk -DiskName $dataDiskName3 -ResourceGroupName $resourcegroup

#$vnet=Get-AzureRmVirtualNetwork -Name $vnetname -ResourceGroupName $resourcegroup

#$pubip=Get-AzureRmPublicIpAddress -ResourceGroupName $resourcegroup -Name $publicip

$nic=Get-AzureRmNetworkInterface -ResourceGroupName $resourcegroup -Name $nicname

$availabilityset=Get-AzureRmAvailabilitySet -ResourceGroupName $resourcegroup -Name $availabilitysetname

$vm=New-AzureRmVMConfig -VMName $vmname -VMSize $vmsize -AvailabilitySetID $availabilityset.Id

$vm=Set-AzureRmVMSourceImage -VM $vm -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus "2016-Datacenter-zhcn" -Version "latest"

$vm=Set-AzureRmVMOSDisk -VM $vm -Name $OSDiskName -StorageAccountType $storageType -DiskSizeInGB 128 -CreateOption FromImage -Caching $osdiskcache

#-VhdUri $OSDiskUri

#$vm=Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $vmname -Credential $cred -ProvisionVMAgent $false -EnableAutoUpdate $false

$vm=Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $vmname -Credential $cred -ProvisionVMAgent -EnableAutoUpdate

$vm=Set-AzureRmVMBootDiagnostics -VM $vm -Disable

$vm=Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id

$vm=Add-AzureRmVMDataDisk -VM $vm -Name $dataDiskName1 -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 0

$vm=Add-AzureRmVMDataDisk -VM $vm -Name $dataDiskName2 -CreateOption Attach -ManagedDiskId $dataDisk2.Id -Lun 1

$vm=Add-AzureRmVMDataDisk -VM $vm -Name $dataDiskName3 -CreateOption Attach -ManagedDiskId $dataDisk3.Id -Lun 2

New-AzureRmVM -VM $vm -ResourceGroupName $resourcegroup -Location $location

2.经测试,上述脚本在Azure PS6.4/PS6.5/PS6.8上执行都没问题,但在PS6.7上执行时,会提示报错信息“Object reference not set to an instance of an object”,经排查在Azure Powershell 6.7的版本中,使用Powershell命令“Add-AzureRmVMDataDisk”添加数据磁盘时,需要指定“-StorageAccountType Premium_LRS”参数才可以成功执行

3.客户的进一步需求,如何使用Azure Powershell创建一块带有操作系统磁盘的托管磁盘,命令参考如下:

$OsDiskName = "hlmosdiskt1"

$OsDiskImageReference = New-Object Microsoft.Azure.Management.Compute.Models.ImageDiskReference("/Subscriptions/6966eb56-434e-4874-a1d2-41892ca6938b/Providers/Microsoft.Compute/Locations/ChinaEast2/Publishers/MicrosoftWindowsServer/ArtifactTypes/VMImage/Offers/WindowsServer/Skus/2016-Datacenter-zhcn/Versions/2016.127.20180613")

$OsDiskConfig = New-AzureRmDiskConfig -CreateOption FromImage -OsType Windows -DiskSizeGB 128 -AccountType Premium_LRS -Location "China East 2" -ImageReference $OsDiskImageReference

$OsDisk = New-AzureRmDisk -ResourceGroupName liucheng -DiskName $OsDiskName -Disk $OsDiskConfig

4.如果需要将3中生产的disk创建为image,请参考如下命令:

$maOSdisk = Get-AzureRmDisk -ResourceGroupName hlmrgt1 -DiskName hlmosdiskt1                                                                                         

$imageConfig = New-AzureRmImageConfig -Location 'Chinanorth2'                                                                                                        

Set-AzureRmImageOsDisk -Image $imageConfig -OsType Windows -OsState Generalized -ManagedDiskId $maOSdisk.Id                                                          

New-AzureRmImage -Image $imageConfig -ImageName hlmimaget1 -ResourceGroupName hlmrgt1   

5.如果需要使用3中生成disk部署虚拟机,请参考,

https://docs.microsoft.com/zh-cn/azure/virtual-machines/scripts/virtual-machines-windows-powershell-sample-create-vm-from-managed-os-disks?toc=%2fpowershell%2fmodule%2ftoc.json

Azure Powershell部署使用平台映像的托管Windows VM及相关问题说明的更多相关文章

  1. Windows 上安装 Azure PowerShell及Azure PowerShell部署虚拟机

    一.Azure PowerShell部署   1.使用 PowerShellGet 在 Windows 上安装 Azure PowerShell 从 Azure PowerShell 版本 6.0 开 ...

  2. 如何使用 Azure PowerShell 在 Azure Marketplace 中查找 Windows VM 映像

    本主题介绍如何使用 Azure PowerShell 在 Azure Marketplace 中查找 VM 映像. 创建 Windows VM 时使用此信息来指定 Marketplace 映像. 确保 ...

  3. Azure PowerShell (一)如何安装和配置 Azure PowerShell

    什么是 Azure PowerShell? Azure PowerShell 是一组模块,提供用于通过 Windows PowerShell 管理 Azure 的 cmdlet.你可以使用 cmdle ...

  4. Azure资源管理工具Azure PowerShell介绍

    什么是 Azure PowerShell? Azure PowerShell 是一组模块,提供用于通过 Windows PowerShell 管理 Azure 的 cmdlet.你可以使用 cmdle ...

  5. 使用 Azure PowerShell 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager

    以下步骤演示了如何使用 Azure PowerShell 命令将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Azure Resource Manager 部署模型. 也可根据需要通过 Az ...

  6. Azure Powershell script检测登陆并部署ARM Template

    本文简单提供了一个Azure powershell脚本,能实现如下功能 Azure (China)账户是否已经登陆了,如果没登陆,会提示你登陆. 要创建的资源组是否存在,存在的话不再创建,直接部署te ...

  7. 使用 Azure CLI 在 Azure China Cloud 云平台上手动部署一套 Cloud Foundry

    这篇文章将介绍如何使用 Azure CLI 在 Azure China Cloud 云平台上手动部署一套 Cloud Foundry.本文的目的在于: 了解作为 PaaS 的 Cloud Foundr ...

  8. 使用 Azure PowerShell 模块创建和管理 Windows VM

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

  9. Azure PowerShell (4) 使用PowerShell管理多个订阅

    <Windows Azure Platform 系列文章目录> 笔者手上有两个Azure账户. - Azure Global (windowsazure.com)账户.有两个订阅. - 世 ...

随机推荐

  1. 01-A-1: 计算

  2. 116. Populating Next Right Pointers in Each Node (Tree; WFS)

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...

  3. ubuntu14.04环境下利用docker搭建solrCloud集群

    在Ubuntu14.04操作系统的宿主机中,安装docker17.06.3,将宿主机的操作系统制作成docker基础镜像,之后使用自制的基础镜像在docker中启动3个容器,分配固定IP,再在3个容器 ...

  4. 在Action中操作域对象

    ----------------------siwuxie095 在 Action 中操作域对象 1.在 Action 中可以操作的域对象主要有三个: (1)Request (2)Session (3 ...

  5. 解题报告-Perfect Squares

    Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...

  6. jquery记录

    jquery validate验证框架 参考:http://www.cnblogs.com/linjiqin/p/3431835.html http://www.runoob.com/jquery/j ...

  7. 关于java项目中的.classpath文件:

    Classpath是Java中的重要概念: 它描述了Java虚拟机在运行一个Class时在哪些路径中加载要运行的类以及运行的类要用到的类 简单的说,就是像操作系统的path 只不过这个classpat ...

  8. MYISM表并发写请求过多 导致无法被读取解决方案

    MyISAM锁调度是如何实现的呢,这也是一个很关键的问题.例如,当一个进程请求某个MyISAM表的读锁,同时另一个进程也请求同一表的写锁,此时MySQL将会如优先处理进程呢?通过研究表明,写进程将先获 ...

  9. Android JIN简单单步调试

    ADTr20已经比较完美支持NDK开发了.可以集成ndk编译,只需在项目右键Add Native Support,就能自动生成jni文件,并部署编译环境(注意这个过程是不可逆的,手动删除jni文件后, ...

  10. 主键冲突异常 DuplicateKeyException

    org.springframework.dao.DuplicateKeyException Exception thrown when an attempt to insert or update d ...