设置失败。 VM'VM Name'的操作系统配置未在指定时间内完成

时间:2019-02-20 10:24:45

标签: azure powershell azure-virtual-machine azure-powershell

我是Azure的新手。我正在尝试使用Powershell在Azure中创建资源。

我的要求是从VM创建映像。我遵循了做到这一点的方法:

过程1:手动完成
通用化VM:登录到VM->打开命令提示符-> cd%windir%\ system32 \ sysprep->运行sysprep.exe->检查通用按钮->关闭。

创建快照:转到Azure门户->转到通用的VM->单击“捕获”按钮->提供映像名称并提及资源组,然后单击“创建”。

这将创建一个图像。

过程2:使用powershell进行操作

   # create session of the VM

    $UserName = "$IPAddress\$adminUsername"
    $Password = ConvertTo-SecureString $adminPassword -AsPlainText -Force
    $psCred = New-Object System.Management.Automation.PSCredential($UserName, $Password)
    $s = New-PSSession -ComputerName $IPAddress -Credential $psCred

    # Run SysPrep for generalizing the VM

    $sysprep = 'C:\Windows\System32\Sysprep\Sysprep.exe'
    $arg = '/generalize /oobe /shutdown /quiet'
    Invoke-Command -Session $s -ScriptBlock {param($sysprep,$arg)Start-Process -FilePath $sysprep -ArgumentList $arg} -ArgumentList $sysprep,$arg

    #Stop the VM

    Stop-AzureRmVM -ResourceGroupName $ResourceGroupName -Name $virtualMachineName -Force


    # Generalize the VM

    Set-AzureRmVM -ResourceGroupName $ResourceGroupName -Name $virtualMachineName -Generalized

    # Create the Image

    $vm = Get-AzureRmVM -Name $virtualMachineName -ResourceGroupName $ResourceGroupName
    $image = New-AzureRmImageConfig -Location $location -SourceVirtualMachineId $vm.ID
    New-AzureRmImage -Image $image -ImageName $ImageName -ResourceGroupName $ResourceGroupName

两个过程都将创建一个图像。但是我面临的问题是,当我从进程1创建的映像中旋转VM时,成功创建了VM,没有任何问题。
但是,当我从由Process2创建的映像中旋转虚拟机时,正在创建它,但出现以下错误消息:

  

设置失败。 VM“ VM名称”的操作系统配置未完成   在指定的时间内。但是,检测到VM guest虚拟机代理   运行。这表明来宾操作系统尚未做好充分准备   用作VM映像(带有CreateOption = FromImage)。

任何人都可以告诉我我在Powershell脚本中做错什么了吗,我得到了这个错误。

2 个答案:

答案 0 :(得分:0)

有很多关于在Azure中使用图像来创建虚拟机和创建虚拟机的文档。如错误所示,您可能错过了一步。

如果要从本地上传VHD以在Azure中使用,请从这些文档开始

https://docs.microsoft.com/en-us/azure/virtual-machines/windows/prepare-for-upload-vhd-image

https://docs.microsoft.com/en-us/azure/virtual-machines/windows/upload-generalized-managed

如果要捕获其映像的VM已经在Azure中并且可以正常工作,则从这些开始

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

https://docs.microsoft.com/en-us/azure/virtual-machines/windows/create-vm-generalized-managed?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json

最后一个链接显示了如何通过门户或简单的PS命令从该映像创建VM

New-AzVm `
    -ResourceGroupName "myResourceGroup" `
    -Name "myVMfromImage" `
    -ImageName "myImage" `
    -Location "East US" `
    -VirtualNetworkName "myImageVnet" `
    -SubnetName "myImageSubnet" `
    -SecurityGroupName "myImageNSG" `
    -PublicIpAddressName "myImagePIP" `
    -OpenPorts 3389

答案 1 :(得分:0)

时间似乎是问题所在。

Sysprep通常需要10到15分钟,您没有睡眠时间。发送sysprep脚本后,您将关闭VM,而没有时间真正运行sysprep系统。

您可以放置​​睡眠时间或循环查看VM是否处于Stopped状态。