AZURE POWER SHELL 將傳統(Classic)虛擬機 移轉為 新的資源管理(RM)虛擬機
修正一些官方的錯誤
注意 AZURE的PowerShell版本需要6.0.0以上
另外網路相關的設定會丟失
IP、虛擬網路、VPN等 需要重新設定
Connect-AzureRmAccount
Get-AzureRMSubscription | Format-Table
$subscrID="132cdab3-5b8a-4920-b89b-81fdaadb46fd"
Get-AzureRmSubscription -SubscriptionId $subscrID | Select-AzureRmSubscription
$resourceGroupName = 'ClassicVM'
$destinationResourceGroup = 'ClassicVM'
$location = 'southeastasia'
$virtualNetworkName = 'ClassicVNet' # new VM vnet
$virtualMachineName = 'classicvm' # new VM name
$virtualMachineSize = 'Standard_DS1_v2'
$adminUserName = "fender"
$adminPassword = "Xyz=1234567890" | ConvertTo-SecureString -AsPlainText -Force
$imageName = 'classicVMImage'
$osVhdUri = 'https://storagever1.blob.core.windows.net/vhds/classicvm-os-5668.vhd'
$dataVhdUri = 'https://storagever1.blob.core.windows.net/vhds/classicvm-datadisk.vhd'
$dataDiskName = 'dataDisk1'
$osDiskName = 'myOsDisk'
#使用傳統 VM 中的 VHD 建立受控 OS 磁碟。
$osDisk = New-AzureRmDisk -DiskName $osDiskName -Disk `
(New-AzureRmDiskConfig -AccountType Standard_LRS `
-Location $location -CreateOption Import `
-SourceUri $osVhdUri) `
-ResourceGroupName $destinationResourceGroup
#將 OS 磁碟附加至新的 VM。
$VirtualMachine = New-AzureRmVMConfig -VMName $virtualMachineName -VMSize $virtualMachineSize
$VirtualMachine = Set-AzureRmVMOSDisk -VM $VirtualMachine -ManagedDiskId $osDisk.Id -StorageAccountType Standard_LRS -DiskSizeInGB 128 -CreateOption Attach -Windows
#從資料 VHD 檔案建立受控資料磁碟,並將它新增到新的 VM
$dataDisk1 = New-AzureRmDisk -DiskName $dataDiskName -Disk (New-AzureRmDiskConfig -AccountType Standard_LRS -Location $location -CreateOption Import -SourceUri $dataVhdUri ) -ResourceGroupName $resourceGroupName
$VirtualMachine = Add-AzureRmVMDataDisk -VM $VirtualMachine -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1
#設定公用 IP、虛擬網路和 NIC,建立新的 VM。
$publicIp = New-AzureRmPublicIpAddress -Name ($VirtualMachineName.ToLower()+'_ip') -ResourceGroupName $resourceGroupName -Location $location -AllocationMethod Dynamic
$vnet = Get-AzureRmVirtualNetwork -Name 'Vnet' -ResourceGroupName 'VLAN'
$nic = New-AzureRmNetworkInterface -Name ($VirtualMachineName.ToLower()+'_nic') -ResourceGroupName $resourceGroupName -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $publicIp.Id
$VirtualMachine = Add-AzureRmVMNetworkInterface -VM $VirtualMachine -Id $nic.Id
Azure 虛擬機器 PowerShell 範例
注意 AZURE的PowerShell版本需要6.0.0以上
另外網路相關的設定會丟失
IP、虛擬網路、VPN等 需要重新設定
Connect-AzureRmAccount
Get-AzureRMSubscription | Format-Table
$subscrID="132cdab3-5b8a-4920-b89b-81fdaadb46fd"
Get-AzureRmSubscription -SubscriptionId $subscrID | Select-AzureRmSubscription
$resourceGroupName = 'ClassicVM'
$destinationResourceGroup = 'ClassicVM'
$location = 'southeastasia'
$virtualNetworkName = 'ClassicVNet' # new VM vnet
$virtualMachineName = 'classicvm' # new VM name
$virtualMachineSize = 'Standard_DS1_v2'
$adminUserName = "fender"
$adminPassword = "Xyz=1234567890" | ConvertTo-SecureString -AsPlainText -Force
$imageName = 'classicVMImage'
$osVhdUri = 'https://storagever1.blob.core.windows.net/vhds/classicvm-os-5668.vhd'
$dataVhdUri = 'https://storagever1.blob.core.windows.net/vhds/classicvm-datadisk.vhd'
$dataDiskName = 'dataDisk1'
$osDiskName = 'myOsDisk'
#使用傳統 VM 中的 VHD 建立受控 OS 磁碟。
$osDisk = New-AzureRmDisk -DiskName $osDiskName -Disk `
(New-AzureRmDiskConfig -AccountType Standard_LRS `
-Location $location -CreateOption Import `
-SourceUri $osVhdUri) `
-ResourceGroupName $destinationResourceGroup
#將 OS 磁碟附加至新的 VM。
$VirtualMachine = New-AzureRmVMConfig -VMName $virtualMachineName -VMSize $virtualMachineSize
$VirtualMachine = Set-AzureRmVMOSDisk -VM $VirtualMachine -ManagedDiskId $osDisk.Id -StorageAccountType Standard_LRS -DiskSizeInGB 128 -CreateOption Attach -Windows
#從資料 VHD 檔案建立受控資料磁碟,並將它新增到新的 VM
$dataDisk1 = New-AzureRmDisk -DiskName $dataDiskName -Disk (New-AzureRmDiskConfig -AccountType Standard_LRS -Location $location -CreateOption Import -SourceUri $dataVhdUri ) -ResourceGroupName $resourceGroupName
$VirtualMachine = Add-AzureRmVMDataDisk -VM $VirtualMachine -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1
#設定公用 IP、虛擬網路和 NIC,建立新的 VM。
$publicIp = New-AzureRmPublicIpAddress -Name ($VirtualMachineName.ToLower()+'_ip') -ResourceGroupName $resourceGroupName -Location $location -AllocationMethod Dynamic
$vnet = Get-AzureRmVirtualNetwork -Name 'Vnet' -ResourceGroupName 'VLAN'
$nic = New-AzureRmNetworkInterface -Name ($VirtualMachineName.ToLower()+'_nic') -ResourceGroupName $resourceGroupName -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $publicIp.Id
$VirtualMachine = Add-AzureRmVMNetworkInterface -VM $VirtualMachine -Id $nic.Id
New-AzureRmVM -VM $VirtualMachine -ResourceGroupName $resourceGroupName -Location $location
See also :
Azure 虛擬機器 PowerShell 範例
留言