因此,要从库中获取一个 secret 并读取它的secretValueText,我可以这样做:

$kvSecret= Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certName
Write-Host($kvSecret.SecretValueText)

并且它将返回 secret 文本,例如:
MIIJuQIBAzCCCX8GCSqGSIb3DQEHAaCCCXAEgglsMIIJaDCCA/4GCSqGSIb3DQ...

但是,如果我想以编程方式使用保险库中的所有 secret 来执行此操作,我将执行以下操作:
$kvSecret = Get-AzureKeyVaultSecret -VaultName $vaultName
$kvSecret | ForEach-Object {Write-Host($_.SecretValueText)}

当我这次尝试遍历它们并获取SecretValueText时,它们返回为null。使用ForEach循环也会产生相同的结果。

最佳答案

您在下面的代码中丢失了-Name $certName。应该是这样的:

$kvSecret = Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certname
$kvSecret | ForEach-Object {Write-Host($_.SecretValueText)}

如果这些不是-Name之后的get-AzureKeyVaultSecret,则您得到的类是Microsoft.Azure.Commands.KeyVault.Models.SecretIdentityItem,而不是Microsoft.Azure.Commands.KeyVault.Models.Secret。在SecretValueText中,这不是属性Microsoft.***.SecretIdentityItem。如果您想在保管库中获取所有 secret ,请尝试以下操作:
$myVault = Get-AzureKeyVaultSecret -VaultName $vaultName
$myVault | ForEach-Object {Write-Host(get-azureKeyVaultSecret -vaultName $_.vaultName -name $_.Name).SecretValueText}

10-06 06:06