是否可以在Powershell中处理Get-AzureManagedCache异常?

时间:2015-04-20 17:35:39

标签: powershell exception azure redis

我正在编写一个脚本来在Azure中设置Redis缓存。在设置新缓存之前,我想通过运行以下来检查它的存在:

    $cache = Get-AzureManagedCache -Name $cacheName 

如果缓存不存在,则输出此“异常”:

Get-AzureManagedCache:找不到缓存服务'PrototypeFOO' 在C:\ builds \ repos-scm \ branches \ 2.6 \ 2.6.0 \ scm \ AzureDeploymentSandbox \ Scripts \ Create-RedisCache.ps1:39 char:15 + $ cache = Get-AzureManagedCache -Name $ cacheName + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     + CategoryInfo:CloseError:(:) [Get-AzureManagedCache],ArgumentException     + FullyQualifiedErrorId:Microsoft.Azure.Commands.ManagedCache.GetAzureManagedCache

所以我把它包装在这样的try / catch块中:

try
{
    $cache = Get-AzureManagedCache -Name $cacheName 
}
catch 
{
    Write-Host "Catching the exception"
}

当我运行它时,它会跳过catch语句并继续处理。我可以将“-EA SilentlyContinue”附加到第一行来抑制消息,但我担心这也会抑制合法错误,所以我想避免这种情况。有关如何处理此异常的任何想法?

1 个答案:

答案 0 :(得分:3)

保留try / catch块,但将-ErrorAction Stop添加到Azure调用。

或者,您可以在脚本的顶部设置$ErrorActionPreference='Stop';,这将自动使所有错误像在.NET中一样。