如何附加OSDisk并更改Azure VM的OSProfile

时间:2018-08-09 12:35:51

标签: azure operating-system certificate virtual-machine disk

我正在建立VM还原管道。看起来像这样:

我复制OS磁盘

$diskConfig = New-AzureRmDiskConfig -AccountType $storageType `
    -Location $snapshot.Location -SourceResourceId $snapshot.Id -CreateOption Copy
$disk = New-AzureRmDisk -Disk $diskConfig -ResourceGroupName $resourceGroupName `
    -DiskName $diskName

然后我将其附加到我的VM,就像这样:

$vmConfig = New-AzureRmVMConfig -VMName $virtualMachineName `
    -VMSize $virtualMachineSize
$vmConfig = Set-AzureRmVMOSDisk -VM `
    $vmConfig -ManagedDiskId $disk.Id -CreateOption Attach -Windows

但是,我还想通过在我遵循this guide by Microsoft时将证书绑定到VM来间接修改VM的OSProfile属性。我这样做:

$vmConfig = Add-AzureRmVMSecret -VM $vmConfig -SourceVaultId $vaultId `
    -CertificateStore $certificateStore -CertificateUrl $certificateUrl

现在,当我尝试通过以下方式完成创建工作

New-AzureRmVM -VM $vmConfig -ResourceGroupName $resourceGroupName -Location $location

我得到一个错误:

New-AzureRmVM : Parameter 'osProfile' is not allowed.

我知道它会修改OSProfile.Secrets(即-将新记录添加到列表中),但是有一个限制,即我无法编辑它。我还尝试通过先创建VM,然后添加这些Secrets来完成此操作,但这给了我几乎相同的错误

Update-AzureRmVM : Changing property 'osProfile' is not allowed.

顺便说一句,如果我使用FromImage而不是Attach,则会收到错误消息:

New-AzureRmVM : Cannot specify user image overrides for a disk already defined in the specified image reference.

我该如何解决?

2 个答案:

答案 0 :(得分:1)

我最终创建了一个Powershell脚本,该脚本在VM上执行powershell命令(使用Invoke-AzureRmVMRunCommand),

  1. 获取证书

    Get-AzureKeyVaultSecret -VaultName $keyVaultName -name (Get-AzureKeyVaultSecret -VaultName $keyVaultName).name

  2. 下载这些证书并将其绑定到IIS
  3. 创建ssl绑定并将其分配给https绑定

    Get-ChildItem cert:\localmachine\My | New-Item -Path IIS:\SslBindings\!443

答案 1 :(得分:0)

非常确定此错误表示您正在尝试使用现有磁盘创建虚拟机。在这种情况下,您无法修改操作系统设置。仅当从新磁盘创建时。