使用Azure Powershell从映像创建的VM未设置ComputerName

时间:2018-11-13 10:48:07

标签: azure powershell azure-powershell

我有一个Azure映像,当我使用Azure Powershell从中创建VM时,尽管我在脚本中设置了ComputerName,但在创建VM时并未将ComputerName设置为提供的值。

脚本:

$ImageName = 'MyImage'
$RsgName = 'MyRsg'
$VmName = 'MyNewVM'
$DiagnosticStorageName = 'diagnosticsstore5048'

$cred = Get-Credential -Credential 'TheAdmin'

$Image = Get-AzureRmImage -ImageName $ImageName -ResourceGroupName $RsgName

# Get NIC
$nic = Get-AzureRmNetworkInterface -ResourceGroupName $RsgName

# Configure the new VM
$Vm = New-AzureRmVMConfig -VMName $VmName -VMSize 'Standard_A2_v2'
$Vm = Set-AzureRmVMSourceImage -VM $Vm -Id $Image.Id
$Vm = Set-AzureRmVMOSDisk -VM $Vm -Name $VmName'-disk' -StorageAccountType 'StandardLRS' -DiskSizeInGB '128' -CreateOption FromImage -Caching ReadWrite
$Vm = Add-AzureRmVMNetworkInterface -VM $Vm -Id $nic.Id
$Vm = Set-AzureRmVMBootDiagnostics -VM $Vm -Enable -ResourceGroupName $RsgName -StorageAccountName $DiagnosticStorageName
$Vm = Set-AzureRmVMOperatingSystem -VM $Vm -Windows -ComputerName 'dor' -Credential $Cred -ProvisionVMAgent

New-AzureRmVM -VM $Vm -ResourceGroupName $RsgName -Location 'West Europe' -DisableBginfoExtension

上次我运行脚本来创建VM时,它以计算机名WIN-I80O6J22ENS离开了新VM。 图片是根据以下过程创建的:https://docs.microsoft.com/en-gb/azure/virtual-machines/windows/capture-image-resource?toc=%2Fazure%2Fvirtual-machines%2Fwindows%2Fclassic%2Ftoc.json

更新 很多人认为我没有正确地概括图像,因此我想在这里添加我的操作方式。 在虚拟机内部运行:

Start-Process -FilePath $env:windir\System32\Sysprep\Sysprep.exe -ArgumentList "/generalize /oobe /shutdown /unattend:$env:windir\System32\Sysprep\unattend.xml"

Unattend.xml中只有一个设置,可以步进TimeZone。

一旦完成并且VM OS已关闭,我将运行以下命令来获取VM,将其停止,然后将其设置为Generalized:

# Shutdown Source VM & Generalize
$SourceVM = Get-AzureRmVM -ResourceGroupName $SourceRsg -Name $SourceVMName
$Null = Stop-AzureRMVM -ResourceGroupName $SourceRsg -Name $SourceVMName -Force
Write-Host 'Stopped Source VM'

Set-AzureRmVm -ResourceGroupName $SourceRsg -Name $SourceVMName -Generalized
Write-Host 'Set Source VM to Generalized'

我已经注意到,当运行最后一条命令时,输出为:

  

OperationId:
  状态:
  开始时间:
  结束时间:
  错误:

它实际上并没有说它是否成功?

此后,我从VM磁盘创建映像。

3 个答案:

答案 0 :(得分:0)

这可能是由于图片未“通用” 引起的。

看看Create a managed image of a generalized VM in Azure指南。

希望有帮助!

答案 1 :(得分:0)

如果具有专用映像,则计算机名将丢失,因为旧计算机名和新计算机名共享相同的RID和SID号,并且在理想情况下,每个虚拟机部署都具有不同的RID和SID号。如果图像是通用图像,则可以显示计算机名称。

查看本文以获取更多信息:

https://docs.microsoft.com/en-us/azure/virtual-machines/windows/create-vm-specialized

https://docs.microsoft.com/en-us/azure/virtual-machines/windows/capture-image-resource

答案 2 :(得分:0)

从您对问题的描述中,每个人都试图指出的一点似乎是图像未正确归纳或归纳失败。

该脚本在我端可以正常工作,因此唯一的问题是图像。 Screenshot

从该映像尝试另一个部署,可以看到您获得了相同的计算机名称(WIN-I80O6J22ENS)。

如果您使用相同的名称,则可以肯定地确认问题是普遍存在的。

如果名称更改,则可能意味着您所镜像的计算机具有不接受名称“ dor”的策略,因此系统正在生成默认名称。

Powershell或Azure都不是任何一种问题。希望这会有所帮助。