我有一个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磁盘创建映像。
答案 0 :(得分:0)
答案 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都不是任何一种问题。希望这会有所帮助。