PowerShell創建ARM虛擬機6合1腳本

原文鏈接:https://blog.csdn.net/m0_37973810/article/details/72898597

【轉載】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 [email protected] -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=NewObjectSystem.Management.Automation.PSCredential(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
ntPlease 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 “ntFAILED: 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 “ntFAILED: 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(! KaTeX parse error: Expected 'EOF', got '}' at position 103: …olor Red;Exit} }̲ if (Select -ge 3)
{
#輸入VHD文件完整路徑
KaTeX parse error: Expected 'EOF', got '#' at position 59: …t 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(!vhdURIor!(vhdURI -or !(vhdURI.StartsWith(“https”) -and $vhdURI.EndsWith(“vhd”))) {Write-Host “ntFAILED: 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 “ntPlease input new VM name”
if (! $vmName){ Write-Host “ntFAILED: You must input a VM name” -ForegroundColor Red;Exit}
if ((Get-AzureRmVM).Name -contains $vmName){ Write-Host “ntFAILED: You have the same VM already!” -ForegroundColor Red;Exit}
$rg = $ResourceGroup.ResourceGroupName
$location = $ResourceGroup.Location
publicIpName="publicIpName = "vmName" + “-ip”
NICName=("NICName = ("vmName" + “-nic”).ToLower()
diskname="diskname = "vmName" + “-$(Get-Date -Format “yyyyMMddHHmm”)” + “-osDisk”

#創建公共IP
write-host “ntCreate Public Ip: $publicIpName!” -ForegroundColor Green
$myPublicIp = New-AzureRmPublicIpAddress -Name $publicIpName -ResourceGroupName $rg -Location $location -AllocationMethod Dynamic

#創建虛擬機網絡接口
write-host “ntCreate Newwork Interface: $NICName!” -ForegroundColor Green
$myNIC = New-AzureRmNetworkInterface -ResourceGroupName $rg -Name $NICName -Location $location -SubnetId $Subnet.Id -PublicIpAddressId $myPublicIp.Id

#虛擬機通用配置
write-host “ntCreate 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://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://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://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://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 “ntFAILED: Create Failed” -ForegroundColor Red;Exit}

write-host “nt【$vmName】 Create Successful!” -ForegroundColor Green
KaTeX parse error: Expected 'EOF', got '}' at position 58: …ntinue? (Y/n)" }̲ until(input -eq “N”)
“–END OF EXECUTION–”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章