#azure #powershell
#azure #powershell
Вопрос:
За последние несколько дней я сталкиваюсь со сценарием, в котором я не могу выполнить RDP для виртуальной машины Azure, созданной путем подключения неуправляемого Windows vhd. Я объясняю выполненные шаги,
-
Создан неуправляемый образ виртуальной машины (vhd) из msdn виртуальной машины Azure
a. Создал виртуальную машину Azure (Windows Server 2016) с неуправляемым диском операционной системы.
б. Обобщите виртуальную машину, используя Sysprep msdn.
c. Освободил виртуальную машину и установил состояние для обобщения с помощью PowerShell.
Stop-AzureRmVM -ResourceGroupName '[RG]' -Name '[vhdtest]'
Set-AzureRmVM -ResourceGroupName '[RG]' -Name '[vhdtest]' –Generalized
Save-AzureRmVMImage -ResourceGroupName '[RG]' -Name '[vhdtest]' `
-DestinationContainerName 'newvhds' -VHDNamePrefix 'new3'
Я вижу, что новый VHD скопирован в системный контейнер больших двоичных объектов.
- Создал виртуальную машину с неуправляемым диском, подключив VHD, созданный на шаге 1, с помощью PowerShell. Для создания виртуальной машины и подключения жесткого диска были выполнены следующие шаги или команды PowerShell,
# created Subnet
$rgName = "Technovate2020_Logicators-RG"
$subnetName = "mySubNet-attach"
$singleSubnet = New-AzureRMVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
# created virtual Network with assignig Subnet
$location = "CentralUS"
$vnetName = "myVnetName-attach"
$vnet = New-AzureRMVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location `
-AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet
# created Network Security Group rule to enable RDP
$nsgName = "myNsg-attach"
$rdpRule = New-AzureRMNetworkSecurityRuleConfig -Name myRdpRule -Description "Allow RDP" `
-Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
-SourceAddressPrefix Internet -SourcePortRange * `
-DestinationAddressPrefix * -DestinationPortRange 3389
# created Network Security Group and assiging rules
$nsg = New-AzureRMNetworkSecurityGroup -ResourceGroupName $rgName -Location $location `
-Name $nsgName -SecurityRules $rdpRule
# created Public IP
$ipName = "myIP-attach"
$pip = New-AzureRMPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location `
-AllocationMethod Dynamic
# created Network Interface Card
$nicName = "myNicName-attach"
$nic = New-AzureRMNetworkInterface -Name $nicName -ResourceGroupName $rgName `
-Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
# created VM Configurations
$vmName = "myVM-attach"
$vmConfig = New-AzureRMVMConfig -VMName $vmName -VMSize "Standard_D4s_v3"
# Assign NIC
$vm = Add-AzureRMVMNetworkInterface -VM $vmConfig -Id $nic.Id
# Unmanaged OS Disk to attach (already copied the vhd from 'system' container to 'vhds')
$osDiskUri = "https://technovate2020logicators.blob.core.windows.net/vhds/new3-osDisk.vhd"
# assigning OS Disk using 'attach' option
$osDiskName = $vmName "osDisk"
$vm = Set-AzureRMVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption attach -Windows
#Create the VM
New-AzureRMVM -ResourceGroupName $rgName -Location $location -VM $vm
Создана виртуальная машина с неуправляемым диском ОС.
Проблема: Не удается выполнить RDP для виртуальной машины.
Дополнительная информация: — Если я создам ту же виртуальную машину с неуправляемым диском ОС, но использую fromImage
option вместо attach
, то мне разрешат выполнять RDP для виртуальной машины.
Ответ №1:
Команды, которые вы запускаете для выполнения этого процесса, принадлежат устаревшему модулю powershell, AzureRM. Я бы рекомендовал вам сначала удалить модуль azurerm powershell и установить новый модуль az powershell (модули не могут сосуществовать на одном компьютере), обновить свой скрипт для использования новых командлетов модуля powershell и посмотреть, как это работает у вас.
Комментарии:
1. Спасибо, Williams за ответ и предложения.
2. Я попробовал следующее, чтобы заставить vhd работать в соответствии с моими требованиями: 1 — Создайте виртуальную машину, используя неуправляемый диск ОС. (также выполнялось ранее.) 2 — Чтобы создать из него VHD, просто удалите виртуальную машину и другие связанные ресурсы (например, общедоступный IP, сетевой адаптер, nsg и т.д.) 3 — Останется vhd виртуальной машины. 4- Создайте виртуальную машину, подключающую vhd с шага 3, и это сработает (пробовал с шаблоном ARM). В принципе, нет необходимости выполнять шаги, упомянутые в learn.microsoft.com/en-us/azure/virtual-machines/windows /…