Get-AzKeyVaultSecret 无法读取 Powershell 中的秘密值

Get-AzKeyVaultSecret can't read secret value in Powershell

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

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

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

然后写的时候看内容:

Write-Output $keyVaultValue

但是当我要求一个特定的密钥时,它只是 returns null:

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

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

有什么建议吗?

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

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

可以找到更多信息和示例 here

如果你想显示所有 key-vault 机密名称及其密钥值,那么你可以在 powershell 中使用它

$secrets=Get-AzKeyVaultSecret -VaultName 'key-vault-name'
$secrets | % {Write-Output "$($_.name) $($(Get-AzKeyVaultSecret -VaultName $_.VaultName -Name $_.Name).SecretValue | ConvertFrom-SecureString -AsPlainText)" }

尝试使用这个函数:

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"