У меня есть образ Azure, который, когда я использую Azure Powershell для создания виртуальной машины, несмотря на то, что в сценарии я установил имя_компьютера, создает виртуальную машину без установки в качестве имени_компьютера указанного значения.
Сценарий:
$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
В последний раз, когда я запускал сценарий для создания виртуальной машины, он оставил новую виртуальную машину с именем компьютера «WIN-I80O6J22ENS»
Изображение было создано в соответствии с процессом здесь: https://docs.microsoft.com/en-gb/azure/virtual-machines/windows/capture-image-resource?toc=%2Fazure%2Fvirtual-machines%2Fwindows%2Fclassic%2Ftoc.json
UPDATE
Многие люди думают, что я не обобщаю образ правильно, поэтому я хотел бы добавить здесь, как я это делаю.
Внутри виртуальной машины я бегу:
Start-Process -FilePath $env:windir\System32\Sysprep\Sysprep.exe -ArgumentList "/generalize /oobe /shutdown /unattend:$env:windir\System32\Sysprep\unattend.xml"
Unattend.xml имеет только одну настройку, которая должна шагать по часовой стрелке.
После того, как это будет завершено, и ОС ВМ будет закрыта, я запускаю следующее, чтобы получить ВМ, остановить ее и установить для нее значение Обобщено:
# 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:
Ошибка:
Это фактически не говорит, было ли это успешно или нет?
После этого я создаю образ с диска виртуальной машины.