Powershell 从同一密钥库向新VM添加多个证书

Powershell 从同一密钥库向新VM添加多个证书,powershell,azure,azure-vm-scale-set,Powershell,Azure,Azure Vm Scale Set,问题 我试图在创建一个新的VMS时向它添加多个证书,但我收到的错误列表中包含重复的证书实例 /订阅/xxxxx/resourceGroups/xxxxx/providers/Microsoft.KeyVault/Vault/xxxxx, 这是不允许的 创建虚拟机的powershell是: $vmssConfig = New-AzureRmVmssConfig -Location $location -SkuCapacity $trgVMSSCapacity -SkuName $trgVMSSSi

问题

我试图在创建一个新的VMS时向它添加多个证书,但我收到的错误列表中包含重复的证书实例

/订阅/xxxxx/resourceGroups/xxxxx/providers/Microsoft.KeyVault/Vault/xxxxx, 这是不允许的

创建虚拟机的powershell是:

$vmssConfig = New-AzureRmVmssConfig -Location $location -SkuCapacity $trgVMSSCapacity -SkuName $trgVMSSSize -UpgradePolicyMode 'Manual'
$vmssConfig = Set-AzureRmVmssStorageProfile -VirtualMachineScaleSet $vmssConfig -OsDiskCaching ReadWrite -OsDiskCreateOption FromImage -OsDiskOsType Windows -ImageReferenceId $Image.Id -ManagedDisk $trgVMSSDisk
$vmssConfig = Set-AzureRmVmssOsProfile -VirtualMachineScaleSet $vmssConfig -AdminUsername $trgOSAdminUser -AdminPassword $trgOSAdminPass -ComputerNamePrefix $trgComputerName -WindowsConfigurationEnableAutomaticUpdate $false -WindowsConfigurationProvisionVMAgent $true
$vmssConfig = Add-AzureRmVmssNetworkInterfaceConfiguration -VirtualMachineScaleSet $vmssConfig -Name 'network-config' -Primary $true -IPConfiguration $ipConfig
$cgCertConfig = New-AzureRmVmssVaultCertificateConfig -CertificateUrl $cgCertURL -CertificateStore 'My'
$ktuCertConfig = New-AzureRmVmssVaultCertificateConfig -CertificateUrl $ktuCertURL -CertificateStore 'My'
$vmssConfig = Add-AzureRmVmssSecret -VirtualMachineScaleSet $vmssConfig -SourceVaultId $vaultId -VaultCertificate $cgCertConfig
$vmssConfig = Add-AzureRmVmssSecret -VirtualMachineScaleSet $vmssConfig -SourceVaultId $vaultId -VaultCertificate $ktuCertConfig
$vmssConfig = Set-AzureRmVmssBootDiagnostic -VirtualMachineScaleSet $vmssConfig -Enabled $true -StorageUri $trgStorage.Context.BlobEndPoint
预期的

在此处的常见问题解答中:
它有一个部分“当我从同一个密钥库添加多个证书后运行Update-AzureRMVMS时,我看到以下消息:'但我无法确定如何修复脚本,有人能帮忙吗?

我无法测试,但根据我对文档的阅读,您不能多次使用
添加azurermvmssecret
。您必须在初始命令中添加来自同一存储区的所有证书,或者在此处编辑列表:
$vms.properties.osProfile.secrets[0]。Vault证书

对于您的代码,我将尝试:

$cgCertConfig = New-AzureRmVmssVaultCertificateConfig -CertificateUrl $cgCertURL -CertificateStore 'My'
$ktuCertConfig = New-AzureRmVmssVaultCertificateConfig -CertificateUrl $ktuCertURL -CertificateStore 'My'
$vmssConfig = Add-AzureRmVmssSecret -VirtualMachineScaleSet $vmssConfig -SourceVaultId $vaultId -VaultCertificate $cgCertConfig,$ktuCertConfig

VaultCertificate
属性接受一个数组,因此请尝试一次传递所有证书。

这可以通过使用
vaultcerticates
属性上的
添加功能来实现,例如:

$vmss = Get-AzVmss -ResourceGroupName $vmssResourceGroupName -VMScaleSetName $vmssName

# Add the certificate to the same collection
$vmss.VirtualMachineProfile.OsProfile.Secrets[0].VaultCertificates.Add($certConfig)

# Update VMSS
Update-AzVmss -ResourceGroupName $vmssResourceGroupName -Verbose -Name $vmssName -VirtualMachineScaleSet $vmss 

这就是我最终要做的,你刚刚击败我发布了它,仍然感谢你的帮助:)