我有一个Azure,当我使用Azure创建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://learn.microsoft.com/en-gb/azure/virtual-machines/windows/capture-image-resource?toc=%2Fazure%2Fvirtual-machines%2Fwindows%2Fclassic%2Ftoc.json
UPDATE很多人认为我没有正确地概括图像,所以我想在这里添加一下我是如何做的。在VM中运行:
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,停止它,并将其设置为通用:
# 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: 现状: StartTime: EndTime: 错误:
它并没有说它是否成功?
在此之后,我将从VM磁盘创建映像。
发布于 2018-11-13 12:07:21
发布于 2018-11-13 12:20:08
如果您有专门的映像,计算机名称将丢失,因为旧计算机名和新计算机名共享相同的RID和SID号,并且在理想的情况下,每个虚拟机部署都有不同的RID和SID号。如果图像是广义的,则可以显示计算机名称。
有关更多信息,请查看本文:
https://learn.microsoft.com/en-us/azure/virtual-machines/windows/create-vm-specialized
https://learn.microsoft.com/en-us/azure/virtual-machines/windows/capture-image-resource
发布于 2018-11-13 16:04:37
每个人都想指出的一点,从你对这个问题的描述来看,图像似乎没有被正确概括,或者泛化的方面失败了。
脚本在我的终端工作很好,所以唯一的问题是图像。屏幕截图
尝试从该映像中进行另一个部署,请参见,您获得了相同的计算机名称(WIN-I80O6J22ENS)。
如果您得到了相同的名称,这是一个肯定的问题与泛化。
如果名称更改,这可能意味着您映像的机器有一个不接受名称'dor‘的策略,因此系统正在生成默认名称。
无论哪种方式,问题都不是与Powershell或Azure有关。希望这能有所帮助。
https://stackoverflow.com/questions/53279329
复制相似问题