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. Spring JMX之一:使用JMX管理Spring Bean

    spring中关于jmx包括几个概念: MBeanExporter: 从字面上很容易理解, 用来将一些spring的bean作为MBean暴露给MBEanServer.MBeanServerFacto ...

  2. WEB开发常见错误-php无法操作数据库

    Ubuntu 安装phpmyadmin 和配置   ubuntu 安装 phpmyadmin  两种 : 1: apt-get 安装  然后使用 已有的虚拟主机目录建立软连接  sudo  apt-g ...

  3. MyBatis 插入主键方式和返回主键

    这使用的mysql数据库,下面这种方式(没有给mysql设置自动增长)是插入主键方式: <insert id="insertBook" parameterType=" ...

  4. Mybatis的select查询的三种方式

    1.首先建立一个测试的dao public interface IStudentDao { // 根据姓名查询 List<Student> selectStudentsByName(Str ...

  5. 使用phpStorm编辑器进行PHP代码的xdebug调试

    首先需要安装Xdebug,如果没有安装可以查看PHP断点调试工具Xdebug的安装这篇文章.phpStorm是开发者经常用的一款编辑器,当然也支持Xdebug调试,下面说一下配置步骤. phpStor ...

  6. Kali linux切换语言为中文

    echo LANG="zh_CN.UTF-8" > /etc/default/locale

  7. java并发编程工具类辅助类:CountDownLatch、CyclicBarrier和 Semaphore

    在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法. 以下 ...

  8. SpringMvc与Struts2的对比

    目前企业中使用SpringMvc的比例已经远远超过Struts2,那么两者到底有什么区别,是很多初学者比较关注的问题,下面我们就来对SpringMvc和Struts2进行各方面的比较: 1.核心控制器 ...

  9. After Upgrade To Release 12.1.3 Users Receive "Function Not Available To This Responsibility" Error While Selecting Sub Menus Under Diagnostics (Doc ID 1200743.1)

    APPLIES TO: Oracle Application Object Library - Version 12.1.3 to 12.1.3 [Release 12.1] Information ...

  10. Javascript设计模式理论与实战:单例模式

    在Javascript中,单例模式是一种最基本又经常用到的设计模式,可能在不经意间就用到了单例模式. 本文将从最基础的理论开始,讲述单例模式的基本概念和实现,最后用一个例子来讲述单例模式的应用. 理论 ...