如何在PowerShell中捕获cli.azure.cli.core.azclierror:ResourceNotFoundError:
当我尝试从keyvault获取不存在的密钥时,我得到: msrest.exceptions:(KeyNotFound)具有(name/id)keyname的键 在此密钥库中找不到。如果您最近删除了此密钥,则 可以使用正确的恢复命令恢复它。求救 解决此问题,请参阅 cli.azure.cli.core.azclierror:ResourceNotFoundError:(KeyNotFound)A 在此密钥库中找不到具有(名称/id)keyname的密钥。如果 您最近删除了此密钥,您可以使用 正确的恢复命令。有关解决此问题的帮助,请参阅 我预期会出现此错误,但只会出现此错误,因此我不想创建如何在PowerShell中捕获cli.azure.cli.core.azclierror:ResourceNotFoundError:,azure,powershell,azure-cli,Azure,Powershell,Azure Cli,当我尝试从keyvault获取不存在的密钥时,我得到: msrest.exceptions:(KeyNotFound)具有(name/id)keyname的键 在此密钥库中找不到。如果您最近删除了此密钥,则 可以使用正确的恢复命令恢复它。求救 解决此问题,请参阅 cli.azure.cli.core.azclierror:ResourceNotFoundError:(KeyNotFound)A 在此密钥库中找不到具有(名称/id)keyname的密钥。如果 您最近删除了此密钥,您可以使用 正确的
try catch
捕获所有内容。但是,我在文档中找不到ResourceNotFound
的完整标识符,我指的是名称空间中的一个。我可以在其中发现此异常:
try{}catch[ResourceNotFoundError]{}
Az不是PowerShell命令,所以我不确定try/catch是否有效
您可以做的是捕获变量中的输出,然后在继续之前检查是否存在错误
也许是这样的:
$GetKeyResult = az keyvault key show --name NoSuchKey --vault-name MyVault 2>&1
if ($GetKeyResult -like '*ResourceNotFoundError: (KeyNotFound)*') {
"Key wasn't found"
# Do stuff
}
2>&1
部分用于将错误重定向到标准输出
另一个选项是跳过az命令并使用PowerShell CmdLet,如Get-AzKeyVaultKey
,不幸的是,对于无效的键名,这根本不会出错,因此您仍然需要对其进行检查:
$GetKeyResult = Get-AzKeyVaultKey -VaultName MyVault -Name NoSuchKey
if ($null -eq $GetKeyResult) {
"Key wasn't found"
# Do stuff
}
Az不是PowerShell命令,因此我不确定try/catch是否有效 您可以做的是捕获变量中的输出,然后在继续之前检查是否存在错误 也许是这样的:
$GetKeyResult = az keyvault key show --name NoSuchKey --vault-name MyVault 2>&1
if ($GetKeyResult -like '*ResourceNotFoundError: (KeyNotFound)*') {
"Key wasn't found"
# Do stuff
}
2>&1
部分用于将错误重定向到标准输出
另一个选项是跳过az命令并使用PowerShell CmdLet,如Get-AzKeyVaultKey
,不幸的是,对于无效的键名,这根本不会出错,因此您仍然需要对其进行检查:
$GetKeyResult = Get-AzKeyVaultKey -VaultName MyVault -Name NoSuchKey
if ($null -eq $GetKeyResult) {
"Key wasn't found"
# Do stuff
}
我尝试了这种方法,但我正在使用管道代理:Get-AzKeyVaultKey:术语“Get-AzKeyVaultKey”不被识别为cmdlet、函数、脚本文件或2020-11-30T10:29:01.0844075Z程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试2020-11-30T10:29:01.08449Z。如何使其可用?您需要安装Azure PowerShell模块:即使没有它,第一个解决方案也应该可以工作。我尝试了这种方法,但我正在使用管道代理:Get-AzKeyVaultKey:术语“Get-AzKeyVaultKey”无法识别为cmdlet、函数、脚本文件的名称,或2020-11-30T10:29:01.0844075Z可操作程序。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试2020-11-30T10:29:01.08449Z。我如何才能使其可用?您需要安装Azure PowerShell模块:即使没有它,第一个解决方案也应该可以工作。