因此,要从库中获取一个 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}