无法对通过附加非托管 Windows vhd(PowerShell 和 ARM 模板)创建的 VM 进行 RDP 操作



从最近几天开始,我遇到了无法RDP通过附加非托管Windows vhd创建的Azure VM的情况。 我解释执行的步骤,

  1. 从 Azure VM msdn 创建了非托管 VM 映像 (vhd)

    一个。 创建了具有非托管操作系统磁盘的 Azure VM (Windows Server 2016)。

    二. 使用 Sysprep msdn 通用化 VM。

    三. 解除分配 VM,并将状态设置为使用 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 在系统 blob 容器中被复制。

  1. 通过使用 PowerShell 附加在步骤 1 中创建的 VHD,使用非托管磁盘创建了 VM。 执行以下步骤或 PowerShell 命令以创建 VM 并附加 VHD,
# 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 

创建了具有非托管 OS 磁盘的 VM。 问题/问题:无法对虚拟机进行 RDP。

附加信息:- 如果我使用非托管操作系统磁盘创建同一 VM,但使用fromImage选项而不是attach则允许我 RDP VM。

为执行此过程而运行的命令属于已折旧的电源外壳模块 AzureRm。 我建议你首先卸载 azurerm powershell 模块并安装新的 az powershell 模块(这些模块不能在同一台计算机上共存),更新脚本以使用新的 powershell 模块 cmdlet,看看它如何为你工作。

最新更新