Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PowerShell中捕获cli.azure.cli.core.azclierror:ResourceNotFoundError:_Azure_Powershell_Azure Cli - Fatal编程技术网

如何在PowerShell中捕获cli.azure.cli.core.azclierror:ResourceNotFoundError:

如何在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的密钥。如果 您最近删除了此密钥,您可以使用 正确的

当我尝试从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模块:即使没有它,第一个解决方案也应该可以工作。