【问题标题】:Azure Key Vault: Backup Secrets using PowerShellAzure Key Vault:使用 PowerShell 备份机密
【发布时间】:2018-07-13 21:34:00
【问题描述】:

我正在尝试运行以下 PS 脚本来备份特定 Azure Key Vault 中的所有机密:

$secret = Get-AzureKeyVaultSecret –VaultName 'testkeyvault-1' |
ForEach-Object {
$Name = $_."Name"
Backup-AzureKeyVaultSecret -Secret $Name -OutputFile 'C:\Backup.blob'
}

虽然由于以下 PS 错误而失败,但我们将不胜感激:

Backup-AzureKeyVaultSecret : Cannot bind parameter 'Secret'. Cannot convert  the "SQLSecret" value of type "System.String" to type    "Microsoft.Azure.Commands.KeyVault.Models.Secret".
At line:4 char:36
+ Backup-AzureKeyVaultSecret -Secret $Name -OutputFile 'C:\Backup.blob'
+                                    ~~~~~
+ CategoryInfo          : InvalidArgument: (:) [Backup- AzureKeyVaultSecret], ParameterBindingException
+ FullyQualifiedErrorId :  CannotConvertArgumentNoMessage,Microsoft.Azure.Commands.KeyVault.BackupAzureKeyVaultSecret

【问题讨论】:

  • 尝试使用-Secret $_ 而不是只分配名称值。 (不熟悉这个功能,所以不确定这是否可行;但错误表明这可能是问题所在)。
  • 您好,感谢您的回复,如果我添加 $_ Backup-AzureKeyVaultSecret,它会将参数视为 null:无法验证参数“秘密”的参数。参数为 null 或空。提供一个不为 null 或空的参数,然后尝试该命令
  • 有趣;这意味着$_."Name" 也将返回空值(因为在 PS 中空对象的属性本身为空值)......所以我会认为你应该在之前使用 $Name 时收到同样的错误......除非这不是列表中的第一项。
  • 尝试将ForEach-Object { 更改为Where-Object {$_} | ForEach-Object {。即应该过滤掉列表中的任何空值。奇怪的是,任何东西都会被退回;但也许这会有所帮助。除此之外;恐怕我想不出任何其他好的建议......
  • 您好,关于 -Secret $_."Name" 我把引号去掉了,包括我现在得到以下输出:Backup-AzureKeyVaultSecret : Cannot bind parameter 'Secret'. Cannot convert the "TestUsername" value of type "System.String" to type "Microsoft.Azure.Commands.KeyVault.Models.Secret". At line:4 char:36 + Backup-AzureKeyVaultSecret -Secret $_."Name" -OutputFile 'C:\Backup.b ...

标签: azure powershell azure-keyvault


【解决方案1】:

试试这个:

[string]$VaultName = 'testkeyvault-1'
Get-AzureKeyVaultSecret –VaultName $VaultName |
    ForEach-Object {
        Backup-AzureKeyVaultSecret `
            –VaultName $VaultName `
            -Name $_."Name" `
            -OutputFile ('C:\Backup_{0}.blob' -f $_."Name")
    }

相关文档:

【讨论】:

  • 重要提示:您可以将备份的机密还原到从中备份它的订阅中的任何密钥保管库。
【解决方案2】:

您在 LOOP 中缺少参数“Vault Name”

【讨论】:

    猜你喜欢
    • 2020-04-26
    • 1970-01-01
    • 2020-12-19
    • 2016-12-13
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多