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

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.Id
5.默认设置新虚拟机用户名azureuser,密码az.trig.c0m
6.默认创建虚拟机操作系统【1】Windows Server 2012 R2 DataCenter,【2】CentOS 7.2
7.继续创建默认选择相同的资源组、存储账号、子网
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").StorageAccountName
if(! $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"

#创建公共IP
write-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.Id

if ($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 $rg
If (! $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–" 




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值