PowerShell创建ARM虚拟机6合1脚本

来源:互联网 发布:pr淘宝主图视频比特率 编辑:程序博客网 时间:2024/06/03 06:55

PowerShell创建ARM虚拟机6合1脚本

【1】 从平台镜像创建Windows虚拟机

【2】 从平台镜像创建Linux虚拟机

【3】 从通用化镜像创建Window虚拟机

【4】 从通用化镜像创建Linux虚拟机

【5】 从专有VHD创建Windows虚拟机

【6】 从专有VHD创建Linux虚拟机

#------------------------------------------------------------------------------    # User own the risk, otherwise exit.# # Azure PowerShell Version:  3.6.0## Create by Zeno. #------------------------------------------------------------------------------  <###########脚本说明#############################################################1.运行前需创建好资源组、存储账号、虚拟网络、子网2.运行前需在脚本中定义虚拟机大小3.【3】【4】虚拟机默认创建在镜像相同的存储账号4.默认不使用可用性集,如果有需要,请提前创建好可用性集并解锁以下定义  69行 $myAvaSet = Get-AzureRmResourceGroup | Get-AzureRmAvailabilitySet | Select Name,ResourceGroupName,id | Out-GridView -PassThru -Title "Select your AvailibilitySet"  91行 $vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize -AvailabilitySetID $myAvaSet.Id5.默认设置新虚拟机用户名azureuser,密码az.trig.c0m6.默认创建虚拟机操作系统【1】Windows Server 2012 R2 DataCenter,【2】CentOS 7.27.继续创建默认选择相同的资源组、存储账号、子网8.获取镜像参数命令:Get-AzureRmVMImagePublisher -Location "chinanorth" | Get-AzureRmVMImageOffer | Get-AzureRmVMImageSku | Get-AzureRmVMImage | Select Version,Skus,Offer,PublisherName,Location |Out-GridView###############################################################################>#登录订阅Login-AzureRmAccount -EnvironmentName AzureChinaCloud -Credential $(Get-Credential -UserName admin@xxx.partner.onmschina.cn -Message Login_AzureChinaCloud) |Out-Null#[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')#用户定义参数$vmSize = "Standard_A2"                  #定义虚拟机大小############################默认定义虚拟机用户名和密码$user="azureuser"$pwd=ConvertTo-SecureString  "az.trig.c0m" -AsPlainText -Force$cred=New-Object System.Management.Automation.PSCredential($user,$pwd)#选择执行操作$Select = Read-Host -prompt "【1】 Create Windows VM from AzureImage【2】 Create Linux VM from AzureImage【3】 Create Windows VM from your Template VHD【4】 Create Linux VM from your Template VHD【5】 Create Windows VM from Upload VHD【6】 Create Linux VM from Upload VHD`n`tPlease Select" If ($Select -gt 6 -or $Select -lt 1){write-host "`n Please select number 1/2/3/4/5/6 then Enter!"  -ForegroundColor Yellow;Exit}#选择虚拟机资源组、子网$ResourceGroup = Get-AzureRmResourceGroup | Select ResourceGroupName,Location | Out-GridView -PassThru -Title "Select your ResourceGroup"if(! $ResourceGroup){Write-Host "`n`tFAILED: Resource Group must be needed!" -ForegroundColor Red;Exit}$Subnet = Get-AzureRmVirtualNetwork | Get-AzureRmVirtualNetworkSubnetConfig | Select Name,Id,AddressPrefix| Out-GridView -PassThru -Title "Select your Subnet"if(! $Subnet){Write-Host "`n`tFAILED: You must select a subnet" -ForegroundColor Red;Exit}#存储账号定义if ($Select -eq 1 -or $Select -eq 2){$StorageAccount = (Get-AzureRmStorageAccount | Select StorageAccountName,ResourceGroupName,Location | Out-GridView -PassThru -Title "Select your Storage Account").StorageAccountNameif(! $StorageAccount){Write-Host "`n`tFAILED: You must select a storage account" -ForegroundColor Red;Exit}}if ($Select -ge 3){#输入VHD文件完整路径$vhdURI = Read-Host -prompt "`n`tPlease input the VHD URi"#$vhdURI = [Microsoft.VisualBasic.Interaction]::InputBox("Enter your VHD file path like: https://demo.blob.core.chinacloudapi.cn/vhds/myos.vhd", "VHD Image File")if(!$vhdURI -or !($vhdURI.StartsWith("https") -and $vhdURI.EndsWith("vhd"))) {Write-Host "`n`tFAILED: VHDimage File Path is Wrong" -ForegroundColor Red;Exit}$storage = $vhdURI.Split(‘/’)[2]}do{#$myAvaSet = Get-AzureRmResourceGroup | Get-AzureRmAvailabilitySet | Select Name,ResourceGroupName,id | Out-GridView -PassThru -Title "Select your AvailibilitySet"#默认定义参数$vmName = Read-Host -prompt "`n`tPlease input new VM name"if (! $vmName){ Write-Host "`n`tFAILED: You must input a VM name" -ForegroundColor Red;Exit}if ((Get-AzureRmVM).Name -contains $vmName){ Write-Host "`n`tFAILED: You have the same VM already!" -ForegroundColor Red;Exit}$rg = $ResourceGroup.ResourceGroupName$location = $ResourceGroup.Location$publicIpName = "$vmName" + "-ip"$NICName = ("$vmName" + "-nic").ToLower()$diskname = "$vmName" + "-$(Get-Date -Format "yyyyMMddHHmm")" + "-osDisk"#创建公共IPwrite-host "`n`tCreate Public Ip: $publicIpName!" -ForegroundColor Green$myPublicIp = New-AzureRmPublicIpAddress -Name $publicIpName -ResourceGroupName $rg -Location $location -AllocationMethod Dynamic#创建虚拟机网络接口write-host "`n`tCreate Newwork Interface: $NICName!" -ForegroundColor Green$myNIC = New-AzureRmNetworkInterface -ResourceGroupName $rg -Name $NICName -Location $location -SubnetId $Subnet.Id -PublicIpAddressId $myPublicIp.Id#虚拟机通用配置write-host "`n`tCreate VM: $vmName!" -ForegroundColor Green$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize #-AvailabilitySetID $myAvaSet.Id$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $myNIC.Idif ($Select -eq "1"){ $osDiskUri = "https://$StorageAccount.blob.core.chinacloudapi.cn/vhds/$diskname.vhd"#Windows虚拟机配置(使用Windows平台镜像)$vmConfig = Set-AzureRmVMOSDisk -VM $vmConfig -Name $diskname -VhdUri $osDiskUri -CreateOption fromImage$vmConfig = Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate$vmConfig = Set-AzureRmVMSourceImage -VM $vmConfig -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus "2012-R2-Datacenter" -Version "latest"} elseif ($Select -eq "2") { $osDiskUri = "https://$StorageAccount.blob.core.chinacloudapi.cn/vhds/$diskname.vhd"#Linux虚拟机配置(使用Linux平台镜像)$vmConfig = Set-AzureRmVMOSDisk -VM $vmConfig -Name $diskname -VhdUri $osDiskUri -CreateOption fromImage$vmConfig = Set-AzureRmVMOperatingSystem -VM $vmConfig -Linux -ComputerName $vmName -Credential $cred$vmConfig = Set-AzureRmVMSourceImage -VM $vmConfig -PublisherName "OpenLogic" -Offer "CentOS" -Skus "6.8" -Version "latest"} elseif ($Select -eq "3") { $osDiskUri = "https://$storage/vhds/$diskname.vhd"#Windows虚拟机配置$vmConfig = Set-AzureRmVMOSDisk -VM $vmConfig -Name $diskname -VhdUri $osDiskUri -CreateOption fromImage -SourceImageUri $vhdURI -Windows$vmConfig = Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate} elseif ($Select -eq "4") {$osDiskUri = "https://$storage/vhds/$diskname.vhd"#Linux虚拟机配置$vmConfig = Set-AzureRmVMOSDisk -VM $vmConfig -Name $diskname -VhdUri $osDiskUri -CreateOption fromImage -SourceImageUri $vhdURI -Linux$vmConfig = Set-AzureRmVMOperatingSystem -VM $vmConfig -Linux -ComputerName $vmName -Credential $cred} elseif ($Select -eq "5") { #Windows虚拟机配置$vmConfig = Set-AzureRmVMOSDisk -VM $vmConfig -Name $diskname -VhdUri $vhdURI -CreateOption Attach -Windows} elseif ($Select -eq "6") { #Linux虚拟机配置$vmConfig = Set-AzureRmVMOSDisk -VM $vmConfig -Name $diskname -VhdUri $vhdURI -CreateOption Attach -Linux} #创建Azure虚拟机$myvm = $null$myvm = New-AzureRmVM -VM $vmConfig -Location $location -ResourceGroupName $rgIf (! $myvm.IsSuccessStatusCode){ Write-Host "`n`tFAILED: Create Failed" -ForegroundColor Red;Exit}write-host "`n`t【$vmName】 Create Successful!"  -ForegroundColor Green$input = Read-Host -Prompt "`n`tEnter to continue? (Y/n)"} until($input -eq "N")"–END OF EXECUTION–" 


 
原创粉丝点击