0

我无法在 Key Vault 中读取我的某个机密的值。我已使用我的 Azure 帐户登录,并且我拥有所选 Key Vault 的完全权限。

我可以使用以下命令检索可用机密列表:

$keyVaultValue = (Get-AzKeyVaultSecret -VaultName 'name-of-key-vault')

然后在我写的时候看到内容:

Write-Output $keyVaultValue

但是当我要求一个特定的键时,它只返回 null:

$keyVaultValue = (Get-AzKeyVaultSecret -VaultName 'name-of-key-vault' -Name 'my-secret-name').SecretValueText

我检查了名称和订阅 ID,一切都正确。我可以轻松地从门户网站读取值,但不能从我的 Windows PC 上的 powershell 读取。

有什么建议么?

4

3 回答 3

2

如果要显示所有密钥库机密名称及其密钥值,则可以在 powershell 中使用它

$secrets=Get-AzKeyVaultSecret -VaultName 'key-vault-name'
$secrets | % {Write-Output "$($_.name) $($(Get-AzKeyVaultSecret -VaultName $_.VaultName -Name $_.Name).SecretValue | ConvertFrom-SecureString -AsPlainText)" }
于 2021-09-13T10:57:25.240 回答
2

SecretValueText已弃用,您可以使用以下语法将值作为纯文本检索:

$keyVaultValue = Get-AzKeyVaultSecret -VaultName 'name-of-key-vault' -Name 'my-secret-name'
$keyVaultValue.SecretValue | ConvertFrom-SecureString -AsPlainText

更多信息和示例可以在这里找到。

于 2021-01-21T10:40:47.543 回答
0

尝试使用此功能:

function GetSecretValue
{
    param(
        [String]$keyvaultName,
        [String]$secretName
    )

    Write-Host "Retrieving secret $secretName from $keyvaultName... " -NoNewline
    if ((Get-Command Get-AzKeyVaultSecret).ParameterSets.Parameters.Name -contains "AsPlainText")
    {
        # Newer Get-AzKeyVaultSecret version requires -AsPlainText parameter 
        $secretValue = Get-AzKeyVaultSecret -VaultName $keyvaultName -Name $secretName -AsPlainText
    }
    else
    {
        $secretValue = (Get-AzKeyVaultSecret -VaultName $keyvaultName -Name $secretName).SecretValueText
    }
    Write-Host "ok"
    return $secretValue
}

使用示例:

$keyVaultValue = GetSecretValue "name-of-key-vault" "my-secret-name"
于 2021-12-06T18:47:48.877 回答